From 9af7cb67285bca342c4357e6eaf32f9acfc22adf Mon Sep 17 00:00:00 2001 From: Nicolas Chiaruttini Date: Tue, 29 Mar 2022 23:53:35 +0200 Subject: [PATCH 001/185] Task interface and DefaultTask modifications - backward compatible With this commit task events are published automatically when an asynchronous task (task.run(runnable))) is started and finished. Additionally, task can be run in a synchronous manner and can trigger task events with additional methods added to the Task interface. This commit brings additional methods to the Task interface (empty default implementations provided): * start and finish method: a job can notify when it is starting and ending in a synchronous manner * setCancelCallback(runnable) method: Can be used to add a callback when a task is canceled The DefaultTask implementation is modified: * TaskEvent are published when start() and finish() are called (synchronous task) * TaskEvent are published just before the runnable is started and after it is finished * A try finally statement is used in the async case to ensure a taskevent is sent even in the case of job execution failure * And event is called when cancel is called, and: * Async job : future.cancel(true) is called, + the custom cancel callback is called, if set * Sync job : the custom cancel callback is called, if set * adds a test to check whether many parallel tasks send an event when they are starting and when they are done * documentation --- .../java/org/scijava/task/DefaultTask.java | 69 +++++++++++- src/main/java/org/scijava/task/Task.java | 44 +++++++- .../java/org/scijava/task/TaskEventTest.java | 106 ++++++++++++++++++ 3 files changed, 210 insertions(+), 9 deletions(-) create mode 100644 src/test/java/org/scijava/task/TaskEventTest.java diff --git a/src/main/java/org/scijava/task/DefaultTask.java b/src/main/java/org/scijava/task/DefaultTask.java index 15736ad9d..3e9a910c5 100644 --- a/src/main/java/org/scijava/task/DefaultTask.java +++ b/src/main/java/org/scijava/task/DefaultTask.java @@ -36,11 +36,32 @@ import org.scijava.thread.ThreadService; /** - * Default implementation of {@link Task}. It launches code via the linked - * {@link ThreadService}, and reports status updates via the linked - * {@link EventService}. + * Default implementation of {@link Task}. Throughout the task (or job), + * {@link Task#setProgressValue(long)} can be called to inform + * how the job is progressing. * - * @author Curtis Rueden + * Asynchronous case: + * - A job (runnable) is sent for execution to the linked {@link ThreadService}. + * It reports status updates via the linked {@link EventService}. + * A {@link org.scijava.task.event.TaskEvent} is sent before the job + * is started and when finished. + * In the asynchronous case, upon task cancellation ({@link Task#cancel(String)} call), + * the runnable associated to the ThreadService is attempted to be stopped + * by calling {@link Future#cancel(boolean)}. + * This default behaviour can be supplemented by an additional + * custom callback which can be set in {@link Task#setCancelCallBack(Runnable)}. + * + * Synchronous case: + * - A job that reports its status in between calls of {@link Task#start()}, + * and {@link Task#finish()}. It also reports its status via + * the linked {@link EventService}. + * Start and finish calls allow publishing proper {@link org.scijava.task.event.TaskEvent} + * to subscribers (with the EventService). + * Upon cancellation of a synchronous task, it is the responsibility + * of the synchronous task to handle its own cancellation through + * a custom callback which can be set via {@link Task#setCancelCallBack(Runnable)}. + * + * @author Curtis Rueden, Nicolas Chiaruttini */ public class DefaultTask implements Task { @@ -51,6 +72,7 @@ public class DefaultTask implements Task { private boolean canceled; private String cancelReason; + volatile boolean isDone = false; private String status; private long step; @@ -58,6 +80,8 @@ public class DefaultTask implements Task { private String name; + private Runnable cancelCallBack; + /** * Creates a new task. * @@ -76,20 +100,35 @@ public DefaultTask(final ThreadService threadService, // -- Task methods -- + // - Asynchronous @Override public void run(final Runnable r) { if (r == null) throw new NullPointerException(); future(r); } + // - Asynchronous @Override public void waitFor() throws InterruptedException, ExecutionException { future().get(); } + // - Synchronous + @Override + public void start() { + fireTaskEvent(); + } + + // - Synchronous + @Override + public void finish() { + isDone=true; + fireTaskEvent(); + } + @Override public boolean isDone() { - return future != null && future.isDone(); + return (isDone) || (future != null && future.isDone()); } @Override @@ -136,6 +175,16 @@ public boolean isCanceled() { public void cancel(final String reason) { canceled = true; cancelReason = reason; + if (cancelCallBack!=null) cancelCallBack.run(); + if (future!=null) { + isDone = future.cancel(true); + } + fireTaskEvent(); + } + + @Override + public void setCancelCallBack(Runnable r) { + this.cancelCallBack = r; } @Override @@ -169,7 +218,15 @@ private Future future(final Runnable r) { private synchronized void initFuture(final Runnable r) { if (future != null) return; if (r == null) throw new IllegalArgumentException("Must call run first"); - future = threadService.run(r); + future = threadService.run(() -> { + try { + fireTaskEvent(); // Triggers an event just before the task is executed + r.run(); + } finally { + isDone = true; + fireTaskEvent(); // Triggers an event just after the task has successfully completed or failed + } + }); } private void fireTaskEvent() { diff --git a/src/main/java/org/scijava/task/Task.java b/src/main/java/org/scijava/task/Task.java index eb515000b..6d5ce478d 100644 --- a/src/main/java/org/scijava/task/Task.java +++ b/src/main/java/org/scijava/task/Task.java @@ -37,19 +37,39 @@ /** * A self-aware job which reports its status and progress as it runs. * - * @author Curtis Rueden + * There are two ways to use a Task object: + * - A job can be run asynchronously by using {@link Task#run(Runnable)}, and + * can report its progression from within the Runnable. + * + * - A {@link Task} object can simply be used to report in a synchronous manner + * the progression of a piece of code. In the case of synchronous reporting, + * the job is considered started when {@link Task#start()} is called and + * finished when {@link Task#finish()} is called. A finished job can be finished + * either because it is done or because it has been cancelled. + * + * A cancel callback can be set with {@link Task#setCancelCallBack(Runnable)}. + * The runnable argument will be executed in the case of an external event + * requesting a cancellation of the task - typically, if a user clicks + * a cancel button on the GUI, task.cancel("User cancellation requested") will + * be called. As a result, the task implementors should run the callback. + * This callback can be used to make the task aware that a cancellation + * has been requested, and should proceed to stop its execution. + * + * See also {@link TaskService}, {@link DefaultTask} + * + * @author Curtis Rueden, Nicolas Chiaruttini */ public interface Task extends Cancelable, Named { /** - * Starts running the task. + * Starts running the task - asynchronous job * * @throws IllegalStateException if the task was already started. */ void run(Runnable r); /** - * Waits for the task to complete. + * Waits for the task to complete - asynchronous job * * @throws IllegalStateException if {@link #run} has not been called yet. * @throws InterruptedException if the task is interrupted. @@ -57,6 +77,16 @@ public interface Task extends Cancelable, Named { */ void waitFor() throws InterruptedException, ExecutionException; + /** + * reports that the task is started - synchronous job + */ + default void start() {} + + /** + * reports that the task is finished - synchronous job + */ + default void finish() {} + /** Checks whether the task has completed. */ boolean isDone(); @@ -102,4 +132,12 @@ public interface Task extends Cancelable, Named { * @see #getProgressMaximum() */ void setProgressMaximum(long max); + + /** + * If the task is cancelled (external call to {@link Task#cancel(String)}), + * the input runnable argument should be executed by task implementors. + * + * @param runnable : should be executed if this task is cancelled through {@link Task#cancel(String)} + */ + default void setCancelCallBack(Runnable runnable) {} } diff --git a/src/test/java/org/scijava/task/TaskEventTest.java b/src/test/java/org/scijava/task/TaskEventTest.java new file mode 100644 index 000000000..9a0b2f71f --- /dev/null +++ b/src/test/java/org/scijava/task/TaskEventTest.java @@ -0,0 +1,106 @@ +package org.scijava.task; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.scijava.Context; +import org.scijava.event.EventHandler; +import org.scijava.task.event.TaskEvent; + +import java.util.HashSet; +import java.util.Set; + +import static org.junit.Assert.assertEquals; + +/** + * Tests whether many tasks run in parallel consistently trigger an Event + * when each task is started and when each task is ended. + * + * The test fails inconsistently, sometimes with a few tasks remaining, sometimes with almost all tasks remaining. + */ + +public class TaskEventTest { + + private TaskService taskService; + private TaskEventListener eventListener; + + static int nTasks = 500; // Putting higher value can lead to issues because too many threads cannot be launched in parallel + + @Before + public void setUp() { + final Context ctx = new Context(TaskService.class); + taskService = ctx.service(TaskService.class); + eventListener = new TaskEventListener(); + ctx.inject(eventListener); + } + + @After + public void tearDown() { + taskService.context().dispose(); + } + + @Test + public void testManyTasks() throws InterruptedException { + for (int i=0;i { + try { + System.out.println("Waiting to start task "+taskName); + Thread.sleep(msBeforeStart); + + // Task started + task.setProgressMaximum(100); + + task.run(() -> { + int totalMs = 0; + while(totalMs tasks = new HashSet<>(); + + @EventHandler + private synchronized void onEvent(final TaskEvent evt) { + Task task = evt.getTask(); + if (task.isDone()) { + tasks.remove(task); + } else { + tasks.add(task); + } + } + + public synchronized Set getLeftOvers() { + return new HashSet<>(tasks); + } + } +} \ No newline at end of file From 0bac95333327205d5868c714a652670f85b420a8 Mon Sep 17 00:00:00 2001 From: Nicolas Chiaruttini Date: Mon, 4 Apr 2022 22:36:57 +0200 Subject: [PATCH 002/185] The task interface now contains a method to retrieve its cancel callback. Use case: adding a confirmation dialog before cancelling. --- .../java/org/scijava/task/DefaultTask.java | 19 ++++++++++++++----- src/main/java/org/scijava/task/Task.java | 12 ++++++++++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/scijava/task/DefaultTask.java b/src/main/java/org/scijava/task/DefaultTask.java index 3e9a910c5..6de1d4507 100644 --- a/src/main/java/org/scijava/task/DefaultTask.java +++ b/src/main/java/org/scijava/task/DefaultTask.java @@ -6,13 +6,13 @@ * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -84,7 +84,7 @@ public class DefaultTask implements Task { /** * Creates a new task. - * + * * @param threadService Service to use for launching the task in its own * thread. Required. * @param eventService Service to use for reporting status updates as @@ -92,10 +92,11 @@ public class DefaultTask implements Task { * reported. */ public DefaultTask(final ThreadService threadService, - final EventService eventService) + final EventService eventService) { this.threadService = threadService; this.eventService = eventService; + cancelCallBack = this::defaultCancelCallback; } // -- Task methods -- @@ -176,10 +177,13 @@ public void cancel(final String reason) { canceled = true; cancelReason = reason; if (cancelCallBack!=null) cancelCallBack.run(); + fireTaskEvent(); + } + + void defaultCancelCallback() { if (future!=null) { isDone = future.cancel(true); } - fireTaskEvent(); } @Override @@ -187,6 +191,11 @@ public void setCancelCallBack(Runnable r) { this.cancelCallBack = r; } + @Override + public Runnable getCancelCallBack() { + return this.cancelCallBack; + } + @Override public String getCancelReason() { return cancelReason; diff --git a/src/main/java/org/scijava/task/Task.java b/src/main/java/org/scijava/task/Task.java index 6d5ce478d..6267dfd7b 100644 --- a/src/main/java/org/scijava/task/Task.java +++ b/src/main/java/org/scijava/task/Task.java @@ -6,13 +6,13 @@ * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -140,4 +140,12 @@ default void finish() {} * @param runnable : should be executed if this task is cancelled through {@link Task#cancel(String)} */ default void setCancelCallBack(Runnable runnable) {} + + /** + * Returns the current cancel callback runnable, + * This can be used to concatenate callbacks in order, + * for instance, to ask for a user confirmation before cancelling the task + */ + default Runnable getCancelCallBack() { return () -> {}; } + } From 6e431dd6d01a3330a3200e47d7443622d435e350 Mon Sep 17 00:00:00 2001 From: hinerm Date: Thu, 7 Apr 2022 10:37:20 -0500 Subject: [PATCH 003/185] Apply scijava-formatter NB: the class-level javadoc was skipped. See: https://github.com/scijava/scijava-coding-style/issues/4 --- src/main/java/org/scijava/task/DefaultTask.java | 14 ++++++++------ src/main/java/org/scijava/task/Task.java | 13 ++++++++----- .../java/org/scijava/task/TaskServiceTest.java | 1 + 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/scijava/task/DefaultTask.java b/src/main/java/org/scijava/task/DefaultTask.java index 6de1d4507..54b69f8d0 100644 --- a/src/main/java/org/scijava/task/DefaultTask.java +++ b/src/main/java/org/scijava/task/DefaultTask.java @@ -92,7 +92,7 @@ public class DefaultTask implements Task { * reported. */ public DefaultTask(final ThreadService threadService, - final EventService eventService) + final EventService eventService) { this.threadService = threadService; this.eventService = eventService; @@ -123,7 +123,7 @@ public void start() { // - Synchronous @Override public void finish() { - isDone=true; + isDone = true; fireTaskEvent(); } @@ -176,12 +176,12 @@ public boolean isCanceled() { public void cancel(final String reason) { canceled = true; cancelReason = reason; - if (cancelCallBack!=null) cancelCallBack.run(); + if (cancelCallBack != null) cancelCallBack.run(); fireTaskEvent(); } void defaultCancelCallback() { - if (future!=null) { + if (future != null) { isDone = future.cancel(true); } } @@ -231,9 +231,11 @@ private synchronized void initFuture(final Runnable r) { try { fireTaskEvent(); // Triggers an event just before the task is executed r.run(); - } finally { + } + finally { isDone = true; - fireTaskEvent(); // Triggers an event just after the task has successfully completed or failed + fireTaskEvent(); // Triggers an event just after the task has + // successfully completed or failed } }); } diff --git a/src/main/java/org/scijava/task/Task.java b/src/main/java/org/scijava/task/Task.java index 6267dfd7b..4867954da 100644 --- a/src/main/java/org/scijava/task/Task.java +++ b/src/main/java/org/scijava/task/Task.java @@ -137,15 +137,18 @@ default void finish() {} * If the task is cancelled (external call to {@link Task#cancel(String)}), * the input runnable argument should be executed by task implementors. * - * @param runnable : should be executed if this task is cancelled through {@link Task#cancel(String)} + * @param runnable : should be executed if this task is cancelled through + * {@link Task#cancel(String)} */ default void setCancelCallBack(Runnable runnable) {} /** - * Returns the current cancel callback runnable, - * This can be used to concatenate callbacks in order, - * for instance, to ask for a user confirmation before cancelling the task + * Returns the current cancel callback runnable, This can be used to + * concatenate callbacks in order, for instance, to ask for a user + * confirmation before cancelling the task */ - default Runnable getCancelCallBack() { return () -> {}; } + default Runnable getCancelCallBack() { + return () -> {}; + } } diff --git a/src/test/java/org/scijava/task/TaskServiceTest.java b/src/test/java/org/scijava/task/TaskServiceTest.java index 3f80516b9..2471cdaa1 100644 --- a/src/test/java/org/scijava/task/TaskServiceTest.java +++ b/src/test/java/org/scijava/task/TaskServiceTest.java @@ -26,6 +26,7 @@ * POSSIBILITY OF SUCH DAMAGE. * #L% */ + package org.scijava.task; import static org.junit.Assert.assertEquals; From c753406111dfd4c5712ace4f6723caf990b559b5 Mon Sep 17 00:00:00 2001 From: hinerm Date: Thu, 7 Apr 2022 10:42:01 -0500 Subject: [PATCH 004/185] Bump minor version for API additions --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 432bbb837..20f135e6d 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.87.3-SNAPSHOT + 2.88.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 4864a2a15eba64307f686a87390a30274788c8ae Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sat, 9 Apr 2022 10:47:32 -0500 Subject: [PATCH 005/185] POM: use HTTPS for schema location URL Maven no longer supports plain HTTP for the schema location. And using HTTP now generates errors in Eclipse (and probably other IDEs). --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 20f135e6d..5ef9ba2bd 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,5 @@ - + 4.0.0 From 566983b52aa809134124964787943f5fcf6822ff Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sat, 9 Apr 2022 10:47:39 -0500 Subject: [PATCH 006/185] Happy New Year 2022 --- LICENSE.txt | 2 +- src/it/apt-test/pom.xml | 2 +- src/it/apt-test/setup.bsh | 2 +- .../org/scijava/annotation/its/Annotated.java | 2 +- .../annotation/its/CustomAnnotation.java | 2 +- src/it/apt-test/verify.bsh | 2 +- src/it/settings.xml | 2 +- .../org/scijava/AbstractBasicDetails.java | 2 +- .../java/org/scijava/AbstractContextual.java | 2 +- .../java/org/scijava/AbstractGateway.java | 2 +- .../java/org/scijava/AbstractUIDetails.java | 2 +- src/main/java/org/scijava/BasicDetails.java | 2 +- src/main/java/org/scijava/Cancelable.java | 2 +- src/main/java/org/scijava/Context.java | 2 +- src/main/java/org/scijava/Contextual.java | 2 +- src/main/java/org/scijava/Disposable.java | 2 +- src/main/java/org/scijava/Gateway.java | 2 +- src/main/java/org/scijava/Identifiable.java | 2 +- src/main/java/org/scijava/Initializable.java | 2 +- src/main/java/org/scijava/Instantiable.java | 2 +- .../org/scijava/InstantiableException.java | 2 +- src/main/java/org/scijava/ItemIO.java | 2 +- src/main/java/org/scijava/ItemVisibility.java | 2 +- src/main/java/org/scijava/Locatable.java | 2 +- src/main/java/org/scijava/MenuEntry.java | 2 +- src/main/java/org/scijava/MenuPath.java | 2 +- src/main/java/org/scijava/Named.java | 2 +- .../org/scijava/NoSuchServiceException.java | 2 +- .../org/scijava/NullContextException.java | 2 +- src/main/java/org/scijava/Optional.java | 2 +- src/main/java/org/scijava/Prioritized.java | 2 +- src/main/java/org/scijava/Priority.java | 2 +- src/main/java/org/scijava/SciJava.java | 2 +- src/main/java/org/scijava/Typed.java | 2 +- src/main/java/org/scijava/UIDetails.java | 2 +- src/main/java/org/scijava/Validated.java | 2 +- .../java/org/scijava/ValidityProblem.java | 2 +- src/main/java/org/scijava/Versioned.java | 2 +- .../annotations/AbstractIndexWriter.java | 2 +- .../annotations/AnnotationCombiner.java | 2 +- .../annotations/AnnotationProcessor.java | 2 +- .../scijava/annotations/ByteCodeAnalyzer.java | 2 +- .../scijava/annotations/DirectoryIndexer.java | 2 +- .../scijava/annotations/EclipseHelper.java | 2 +- .../java/org/scijava/annotations/Index.java | 2 +- .../org/scijava/annotations/IndexItem.java | 2 +- .../org/scijava/annotations/IndexReader.java | 2 +- .../org/scijava/annotations/Indexable.java | 2 +- .../annotations/legacy/LegacyReader.java | 2 +- .../java/org/scijava/app/AbstractApp.java | 2 +- src/main/java/org/scijava/app/App.java | 2 +- src/main/java/org/scijava/app/AppService.java | 2 +- .../org/scijava/app/DefaultAppService.java | 2 +- .../org/scijava/app/DefaultStatusService.java | 2 +- src/main/java/org/scijava/app/SciJavaApp.java | 2 +- .../java/org/scijava/app/StatusService.java | 2 +- .../org/scijava/app/event/StatusEvent.java | 2 +- .../java/org/scijava/cache/CacheService.java | 2 +- .../scijava/cache/DefaultCacheService.java | 2 +- .../java/org/scijava/command/Command.java | 2 +- .../java/org/scijava/command/CommandInfo.java | 2 +- .../org/scijava/command/CommandModule.java | 2 +- .../scijava/command/CommandModuleItem.java | 2 +- .../org/scijava/command/CommandService.java | 2 +- .../org/scijava/command/ContextCommand.java | 2 +- .../command/DefaultCommandService.java | 2 +- .../org/scijava/command/DynamicCommand.java | 2 +- .../scijava/command/DynamicCommandInfo.java | 2 +- src/main/java/org/scijava/command/Inputs.java | 2 +- .../java/org/scijava/command/Interactive.java | 2 +- .../scijava/command/InteractiveCommand.java | 2 +- .../org/scijava/command/ModuleCommand.java | 2 +- .../java/org/scijava/command/Previewable.java | 2 +- .../scijava/command/UnimplementedCommand.java | 2 +- .../scijava/command/console/RunArgument.java | 2 +- .../command/run/CommandCodeRunner.java | 2 +- .../console/AbstractConsoleArgument.java | 2 +- .../org/scijava/console/ConsoleArgument.java | 2 +- .../org/scijava/console/ConsoleService.java | 2 +- .../org/scijava/console/ConsoleUtils.java | 2 +- .../console/DefaultConsoleService.java | 2 +- .../scijava/console/MultiOutputStream.java | 2 +- .../org/scijava/console/MultiPrintStream.java | 2 +- .../java/org/scijava/console/OutputEvent.java | 2 +- .../org/scijava/console/OutputListener.java | 2 +- .../console/SystemPropertyArgument.java | 2 +- .../convert/AbstractConvertService.java | 2 +- .../scijava/convert/AbstractConverter.java | 2 +- .../convert/AbstractDelegateConverter.java | 2 +- .../org/scijava/convert/ArrayConverters.java | 2 +- .../org/scijava/convert/CastingConverter.java | 2 +- .../scijava/convert/ConversionRequest.java | 2 +- .../org/scijava/convert/ConvertService.java | 2 +- .../java/org/scijava/convert/Converter.java | 2 +- .../convert/DefaultConvertService.java | 2 +- .../org/scijava/convert/DefaultConverter.java | 2 +- .../scijava/convert/FileListConverters.java | 2 +- .../org/scijava/convert/NullConverter.java | 2 +- .../org/scijava/convert/NumberConverters.java | 2 +- .../convert/NumberToBigDecimalConverter.java | 2 +- .../convert/NumberToBigIntegerConverter.java | 2 +- .../convert/NumberToDoubleConverter.java | 2 +- .../convert/NumberToFloatConverter.java | 2 +- .../convert/NumberToIntegerConverter.java | 2 +- .../convert/NumberToLongConverter.java | 2 +- .../convert/NumberToNumberConverter.java | 2 +- .../convert/NumberToShortConverter.java | 2 +- .../convert/PrimitiveArrayUnwrapper.java | 2 +- .../convert/PrimitiveArrayWrapper.java | 2 +- .../org/scijava/display/AbstractDisplay.java | 2 +- .../display/ActiveDisplayPreprocessor.java | 2 +- .../org/scijava/display/DefaultDisplay.java | 2 +- .../display/DefaultDisplayService.java | 2 +- .../scijava/display/DefaultTextDisplay.java | 2 +- .../java/org/scijava/display/Display.java | 2 +- .../scijava/display/DisplayPostprocessor.java | 2 +- .../org/scijava/display/DisplayService.java | 2 +- .../java/org/scijava/display/Displayable.java | 2 +- .../java/org/scijava/display/TextDisplay.java | 2 +- .../display/event/DisplayActivatedEvent.java | 2 +- .../display/event/DisplayCreatedEvent.java | 2 +- .../display/event/DisplayDeletedEvent.java | 2 +- .../scijava/display/event/DisplayEvent.java | 2 +- .../display/event/DisplayUpdatedEvent.java | 2 +- .../display/event/input/InputEvent.java | 2 +- .../scijava/display/event/input/KyEvent.java | 2 +- .../display/event/input/KyPressedEvent.java | 2 +- .../display/event/input/KyReleasedEvent.java | 2 +- .../display/event/input/KyTypedEvent.java | 2 +- .../display/event/input/MsButtonEvent.java | 2 +- .../display/event/input/MsClickedEvent.java | 2 +- .../display/event/input/MsDraggedEvent.java | 2 +- .../display/event/input/MsEnteredEvent.java | 2 +- .../scijava/display/event/input/MsEvent.java | 2 +- .../display/event/input/MsExitedEvent.java | 2 +- .../display/event/input/MsMovedEvent.java | 2 +- .../display/event/input/MsPressedEvent.java | 2 +- .../display/event/input/MsReleasedEvent.java | 2 +- .../display/event/input/MsWheelEvent.java | 2 +- .../event/window/WinActivatedEvent.java | 2 +- .../display/event/window/WinClosedEvent.java | 2 +- .../display/event/window/WinClosingEvent.java | 2 +- .../event/window/WinDeactivatedEvent.java | 2 +- .../event/window/WinDeiconifiedEvent.java | 2 +- .../display/event/window/WinEvent.java | 2 +- .../event/window/WinIconifiedEvent.java | 2 +- .../display/event/window/WinOpenedEvent.java | 2 +- .../download/DefaultDownloadService.java | 2 +- .../scijava/download/DiskLocationCache.java | 2 +- .../java/org/scijava/download/Download.java | 2 +- .../org/scijava/download/DownloadService.java | 2 +- .../org/scijava/download/LocationCache.java | 2 +- .../scijava/download/MultiWriteHandle.java | 2 +- .../scijava/event/ContextDisposingEvent.java | 2 +- .../org/scijava/event/DefaultEventBus.java | 2 +- .../scijava/event/DefaultEventHistory.java | 2 +- .../scijava/event/DefaultEventService.java | 2 +- .../java/org/scijava/event/EventDetails.java | 2 +- .../java/org/scijava/event/EventHandler.java | 2 +- .../java/org/scijava/event/EventHistory.java | 2 +- .../scijava/event/EventHistoryListener.java | 2 +- .../java/org/scijava/event/EventService.java | 2 +- .../org/scijava/event/EventSubscriber.java | 2 +- .../java/org/scijava/event/SciJavaEvent.java | 2 +- .../java/org/scijava/input/Accelerator.java | 2 +- .../scijava/input/DefaultInputService.java | 2 +- .../org/scijava/input/InputModifiers.java | 2 +- .../java/org/scijava/input/InputService.java | 2 +- src/main/java/org/scijava/input/KeyCode.java | 2 +- .../java/org/scijava/input/MouseCursor.java | 2 +- .../java/org/scijava/io/AbstractIOPlugin.java | 2 +- .../scijava/io/AbstractTypedIOService.java | 2 +- .../org/scijava/io/ByteArrayByteBank.java | 2 +- src/main/java/org/scijava/io/ByteBank.java | 2 +- .../java/org/scijava/io/DefaultIOService.java | 2 +- .../scijava/io/DefaultRecentFileService.java | 2 +- src/main/java/org/scijava/io/IOPlugin.java | 2 +- src/main/java/org/scijava/io/IOService.java | 2 +- .../org/scijava/io/RecentFileService.java | 2 +- .../java/org/scijava/io/TypedIOService.java | 2 +- .../org/scijava/io/console/OpenArgument.java | 2 +- .../org/scijava/io/event/DataOpenedEvent.java | 2 +- .../org/scijava/io/event/DataSavedEvent.java | 2 +- .../java/org/scijava/io/event/IOEvent.java | 2 +- .../scijava/io/handle/AbstractDataHandle.java | 2 +- .../io/handle/AbstractHigherOrderHandle.java | 2 +- .../handle/AbstractSeekableStreamHandle.java | 2 +- .../io/handle/AbstractStreamHandle.java | 2 +- .../org/scijava/io/handle/BytesHandle.java | 2 +- .../org/scijava/io/handle/DataHandle.java | 2 +- .../io/handle/DataHandleInputStream.java | 2 +- .../io/handle/DataHandleOutputStream.java | 2 +- .../scijava/io/handle/DataHandleService.java | 2 +- .../org/scijava/io/handle/DataHandles.java | 2 +- .../io/handle/DefaultDataHandleService.java | 2 +- .../org/scijava/io/handle/DummyHandle.java | 2 +- .../org/scijava/io/handle/FileHandle.java | 2 +- .../io/handle/ReadBufferDataHandle.java | 2 +- .../io/handle/ResettableStreamHandle.java | 2 +- .../io/handle/SeekableStreamHandle.java | 2 +- .../org/scijava/io/handle/StreamHandle.java | 2 +- .../io/handle/WriteBufferDataHandle.java | 2 +- .../scijava/io/location/AbstractLocation.java | 2 +- .../io/location/AbstractLocationResolver.java | 2 +- .../io/location/AbstractRemoteLocation.java | 2 +- .../io/location/BrowsableLocation.java | 2 +- .../scijava/io/location/BytesLocation.java | 2 +- .../io/location/DefaultLocationService.java | 2 +- .../scijava/io/location/DummyLocation.java | 2 +- .../org/scijava/io/location/FileLocation.java | 2 +- .../io/location/FileLocationResolver.java | 2 +- .../org/scijava/io/location/Location.java | 2 +- .../scijava/io/location/LocationResolver.java | 2 +- .../scijava/io/location/LocationService.java | 2 +- .../scijava/io/location/RemoteLocation.java | 2 +- .../org/scijava/io/location/URILocation.java | 2 +- .../org/scijava/io/location/URLLocation.java | 2 +- .../scijava/io/nio/ByteBufferByteBank.java | 2 +- .../org/scijava/io/nio/DefaultNIOService.java | 2 +- .../java/org/scijava/io/nio/NIOService.java | 2 +- .../org/scijava/log/AbstractLogService.java | 2 +- .../org/scijava/log/CallingClassUtils.java | 2 +- .../java/org/scijava/log/DefaultLogger.java | 2 +- .../log/DefaultUncaughtExceptionHandler.java | 2 +- .../org/scijava/log/IgnoreAsCallingClass.java | 2 +- src/main/java/org/scijava/log/LogLevel.java | 2 +- .../java/org/scijava/log/LogListener.java | 2 +- src/main/java/org/scijava/log/LogMessage.java | 2 +- src/main/java/org/scijava/log/LogService.java | 2 +- src/main/java/org/scijava/log/LogSource.java | 2 +- src/main/java/org/scijava/log/Logged.java | 2 +- src/main/java/org/scijava/log/Logger.java | 2 +- .../org/scijava/log/StderrLogService.java | 2 +- .../org/scijava/main/DefaultMainService.java | 2 +- .../java/org/scijava/main/MainService.java | 2 +- .../scijava/main/console/MainArgument.java | 2 +- .../org/scijava/main/run/MainCodeRunner.java | 2 +- .../org/scijava/menu/AbstractMenuCreator.java | 2 +- .../org/scijava/menu/DefaultMenuService.java | 2 +- .../java/org/scijava/menu/MenuConstants.java | 2 +- .../java/org/scijava/menu/MenuCreator.java | 2 +- .../java/org/scijava/menu/MenuService.java | 2 +- .../java/org/scijava/menu/ShadowMenu.java | 2 +- .../org/scijava/menu/ShadowMenuIterator.java | 2 +- .../org/scijava/menu/event/MenuEvent.java | 2 +- .../scijava/menu/event/MenusAddedEvent.java | 2 +- .../scijava/menu/event/MenusRemovedEvent.java | 2 +- .../scijava/menu/event/MenusUpdatedEvent.java | 2 +- .../org/scijava/module/AbstractModule.java | 2 +- .../scijava/module/AbstractModuleInfo.java | 2 +- .../scijava/module/AbstractModuleItem.java | 2 +- .../scijava/module/DefaultModuleService.java | 2 +- .../scijava/module/DefaultMutableModule.java | 2 +- .../module/DefaultMutableModuleInfo.java | 2 +- .../module/DefaultMutableModuleItem.java | 2 +- .../scijava/module/MethodCallException.java | 2 +- .../java/org/scijava/module/MethodRef.java | 2 +- src/main/java/org/scijava/module/Module.java | 2 +- .../module/ModuleCanceledException.java | 2 +- .../org/scijava/module/ModuleException.java | 2 +- .../java/org/scijava/module/ModuleIndex.java | 2 +- .../java/org/scijava/module/ModuleInfo.java | 2 +- .../java/org/scijava/module/ModuleItem.java | 2 +- .../java/org/scijava/module/ModuleRunner.java | 2 +- .../org/scijava/module/ModuleService.java | 2 +- .../org/scijava/module/MutableModule.java | 2 +- .../org/scijava/module/MutableModuleInfo.java | 2 +- .../org/scijava/module/MutableModuleItem.java | 2 +- .../module/event/ModuleCanceledEvent.java | 2 +- .../org/scijava/module/event/ModuleEvent.java | 2 +- .../module/event/ModuleExecutedEvent.java | 2 +- .../module/event/ModuleExecutingEvent.java | 2 +- .../module/event/ModuleExecutionEvent.java | 2 +- .../module/event/ModuleFinishedEvent.java | 2 +- .../module/event/ModulePostprocessEvent.java | 2 +- .../module/event/ModulePreprocessEvent.java | 2 +- .../module/event/ModuleProcessEvent.java | 2 +- .../module/event/ModuleStartedEvent.java | 2 +- .../module/event/ModulesAddedEvent.java | 2 +- .../module/event/ModulesListEvent.java | 2 +- .../module/event/ModulesRemovedEvent.java | 2 +- .../module/event/ModulesUpdatedEvent.java | 2 +- .../process/AbstractPostprocessorPlugin.java | 2 +- .../process/AbstractPreprocessorPlugin.java | 2 +- .../AbstractSingleInputPreprocessor.java | 2 +- .../process/CheckInputsPreprocessor.java | 2 +- .../module/process/DebugPostprocessor.java | 2 +- .../module/process/DebugPreprocessor.java | 2 +- .../process/DefaultValuePreprocessor.java | 2 +- .../module/process/GatewayPreprocessor.java | 2 +- .../module/process/InitPreprocessor.java | 2 +- .../process/LoadInputsPreprocessor.java | 2 +- .../module/process/LoggerPreprocessor.java | 2 +- .../module/process/ModulePostprocessor.java | 2 +- .../module/process/ModulePreprocessor.java | 2 +- .../module/process/ModuleProcessor.java | 2 +- .../module/process/PostprocessorPlugin.java | 2 +- .../module/process/PreprocessorPlugin.java | 2 +- .../process/SaveInputsPreprocessor.java | 2 +- .../module/process/ServicePreprocessor.java | 2 +- .../module/process/ValidityPreprocessor.java | 2 +- .../scijava/module/run/ModuleCodeRunner.java | 2 +- .../scijava/object/DefaultObjectService.java | 2 +- .../java/org/scijava/object/LazyObjects.java | 2 +- .../org/scijava/object/NamedObjectIndex.java | 2 +- .../java/org/scijava/object/ObjectIndex.java | 2 +- .../org/scijava/object/ObjectService.java | 2 +- .../org/scijava/object/SortedObjectIndex.java | 2 +- .../org/scijava/object/event/ListEvent.java | 2 +- .../object/event/ObjectCreatedEvent.java | 2 +- .../object/event/ObjectDeletedEvent.java | 2 +- .../org/scijava/object/event/ObjectEvent.java | 2 +- .../object/event/ObjectModifiedEvent.java | 2 +- .../object/event/ObjectsAddedEvent.java | 2 +- .../object/event/ObjectsListEvent.java | 2 +- .../object/event/ObjectsRemovedEvent.java | 2 +- .../options/DefaultOptionsService.java | 2 +- .../org/scijava/options/OptionsPlugin.java | 2 +- .../org/scijava/options/OptionsService.java | 2 +- .../scijava/options/event/OptionsEvent.java | 2 +- .../scijava/parse/DefaultParseService.java | 2 +- src/main/java/org/scijava/parse/Item.java | 2 +- src/main/java/org/scijava/parse/Items.java | 2 +- .../java/org/scijava/parse/ParseService.java | 2 +- .../scijava/platform/AbstractPlatform.java | 2 +- .../org/scijava/platform/AppEventService.java | 2 +- .../platform/DefaultAppEventService.java | 2 +- .../org/scijava/platform/DefaultPlatform.java | 2 +- .../platform/DefaultPlatformService.java | 2 +- .../java/org/scijava/platform/Platform.java | 2 +- .../org/scijava/platform/PlatformService.java | 2 +- .../scijava/platform/event/AppAboutEvent.java | 2 +- .../scijava/platform/event/AppFocusEvent.java | 2 +- .../platform/event/AppMenusCreatedEvent.java | 2 +- .../platform/event/AppOpenFilesEvent.java | 2 +- .../platform/event/AppPreferencesEvent.java | 2 +- .../scijava/platform/event/AppPrintEvent.java | 2 +- .../scijava/platform/event/AppQuitEvent.java | 2 +- .../platform/event/AppReOpenEvent.java | 2 +- .../platform/event/AppScreenSleepEvent.java | 2 +- .../scijava/platform/event/AppSleepEvent.java | 2 +- .../platform/event/AppSystemSleepEvent.java | 2 +- .../platform/event/AppUserSessionEvent.java | 2 +- .../platform/event/AppVisibleEvent.java | 2 +- .../platform/event/ApplicationEvent.java | 2 +- .../scijava/plugin/AbstractHandlerPlugin.java | 2 +- .../plugin/AbstractHandlerService.java | 2 +- .../org/scijava/plugin/AbstractPTService.java | 2 +- .../scijava/plugin/AbstractRichPlugin.java | 2 +- .../plugin/AbstractSingletonService.java | 2 +- .../scijava/plugin/AbstractTypedPlugin.java | 2 +- .../scijava/plugin/AbstractTypedService.java | 2 +- .../scijava/plugin/AbstractWrapperPlugin.java | 2 +- .../plugin/AbstractWrapperService.java | 2 +- src/main/java/org/scijava/plugin/Attr.java | 2 +- .../scijava/plugin/DefaultPluginFinder.java | 2 +- .../scijava/plugin/DefaultPluginService.java | 2 +- .../org/scijava/plugin/HandlerPlugin.java | 2 +- .../org/scijava/plugin/HandlerService.java | 2 +- .../org/scijava/plugin/HasPluginInfo.java | 2 +- src/main/java/org/scijava/plugin/Menu.java | 2 +- .../java/org/scijava/plugin/PTService.java | 2 +- .../java/org/scijava/plugin/Parameter.java | 2 +- src/main/java/org/scijava/plugin/Plugin.java | 2 +- .../java/org/scijava/plugin/PluginFinder.java | 2 +- .../java/org/scijava/plugin/PluginIndex.java | 2 +- .../java/org/scijava/plugin/PluginInfo.java | 2 +- .../org/scijava/plugin/PluginService.java | 2 +- .../java/org/scijava/plugin/RichPlugin.java | 2 +- .../org/scijava/plugin/SciJavaPlugin.java | 2 +- .../org/scijava/plugin/SingletonPlugin.java | 2 +- .../org/scijava/plugin/SingletonService.java | 2 +- .../org/scijava/plugin/SortablePlugin.java | 2 +- .../java/org/scijava/plugin/TypedPlugin.java | 2 +- .../java/org/scijava/plugin/TypedService.java | 2 +- .../org/scijava/plugin/WrapperPlugin.java | 2 +- .../org/scijava/plugin/WrapperService.java | 2 +- .../plugin/event/PluginsAddedEvent.java | 2 +- .../plugin/event/PluginsListEvent.java | 2 +- .../plugin/event/PluginsRemovedEvent.java | 2 +- .../scijava/prefs/AbstractPrefService.java | 2 +- .../org/scijava/prefs/DefaultPrefService.java | 2 +- .../java/org/scijava/prefs/PrefService.java | 2 +- .../org/scijava/run/AbstractCodeRunner.java | 2 +- src/main/java/org/scijava/run/CodeRunner.java | 2 +- .../org/scijava/run/DefaultRunService.java | 2 +- src/main/java/org/scijava/run/RunService.java | 2 +- .../org/scijava/run/console/RunArgument.java | 2 +- .../scijava/script/AbstractAutoCompleter.java | 2 +- .../scijava/script/AbstractScriptContext.java | 2 +- .../scijava/script/AbstractScriptEngine.java | 2 +- .../scijava/script/AbstractScriptHeader.java | 2 +- .../script/AbstractScriptLanguage.java | 2 +- .../scijava/script/AdaptedScriptEngine.java | 2 +- .../scijava/script/AdaptedScriptLanguage.java | 2 +- .../org/scijava/script/AutoCompleter.java | 2 +- .../scijava/script/AutoCompletionResult.java | 2 +- .../org/scijava/script/CodeGenerator.java | 2 +- .../org/scijava/script/CodeGeneratorJava.java | 2 +- .../scijava/script/DefaultAutoCompleter.java | 2 +- .../script/DefaultScriptHeaderService.java | 2 +- .../script/DefaultScriptInterpreter.java | 2 +- .../scijava/script/DefaultScriptService.java | 2 +- .../org/scijava/script/InvocationObject.java | 2 +- .../org/scijava/script/ParameterObject.java | 2 +- .../java/org/scijava/script/ScriptFinder.java | 2 +- .../java/org/scijava/script/ScriptHeader.java | 2 +- .../scijava/script/ScriptHeaderService.java | 2 +- .../java/org/scijava/script/ScriptInfo.java | 2 +- .../org/scijava/script/ScriptInterpreter.java | 2 +- .../org/scijava/script/ScriptLanguage.java | 2 +- .../scijava/script/ScriptLanguageIndex.java | 2 +- .../java/org/scijava/script/ScriptModule.java | 2 +- .../java/org/scijava/script/ScriptREPL.java | 2 +- .../org/scijava/script/ScriptService.java | 2 +- .../script/console/RunScriptArgument.java | 2 +- .../org/scijava/script/io/ScriptIOPlugin.java | 2 +- .../DefaultScriptProcessorService.java | 2 +- .../process/DirectiveScriptProcessor.java | 2 +- .../process/ParameterScriptProcessor.java | 2 +- .../script/process/ScriptCallback.java | 2 +- .../ScriptDirectiveScriptProcessor.java | 2 +- .../script/process/ScriptProcessor.java | 2 +- .../process/ScriptProcessorService.java | 2 +- .../process/ShebangScriptProcessor.java | 2 +- .../scijava/script/run/ScriptCodeRunner.java | 2 +- .../org/scijava/service/AbstractService.java | 2 +- .../org/scijava/service/SciJavaService.java | 2 +- .../java/org/scijava/service/Service.java | 2 +- .../org/scijava/service/ServiceHelper.java | 2 +- .../org/scijava/service/ServiceIndex.java | 2 +- .../service/event/ServicesLoadedEvent.java | 2 +- .../startup/DefaultStartupService.java | 2 +- .../org/scijava/startup/StartupService.java | 2 +- .../java/org/scijava/task/DefaultTask.java | 6 ++-- .../org/scijava/task/DefaultTaskService.java | 2 +- src/main/java/org/scijava/task/Task.java | 6 ++-- .../java/org/scijava/task/TaskService.java | 2 +- .../org/scijava/task/event/TaskEvent.java | 2 +- src/main/java/org/scijava/test/TestUtils.java | 2 +- .../org/scijava/text/AbstractTextFormat.java | 2 +- .../org/scijava/text/DefaultTextService.java | 2 +- .../java/org/scijava/text/TextFormat.java | 2 +- .../java/org/scijava/text/TextService.java | 2 +- .../scijava/text/io/DefaultTextIOService.java | 2 +- .../org/scijava/text/io/TextIOPlugin.java | 2 +- .../org/scijava/text/io/TextIOService.java | 2 +- .../scijava/thread/DefaultThreadService.java | 2 +- .../org/scijava/thread/ThreadService.java | 2 +- .../java/org/scijava/tool/AbstractTool.java | 2 +- .../org/scijava/tool/CustomDrawnTool.java | 2 +- .../org/scijava/tool/DefaultToolService.java | 2 +- src/main/java/org/scijava/tool/DummyTool.java | 2 +- .../java/org/scijava/tool/IconDrawer.java | 2 +- .../java/org/scijava/tool/IconService.java | 2 +- src/main/java/org/scijava/tool/Tool.java | 2 +- .../java/org/scijava/tool/ToolService.java | 2 +- .../tool/event/ToolActivatedEvent.java | 2 +- .../tool/event/ToolDeactivatedEvent.java | 2 +- .../org/scijava/tool/event/ToolEvent.java | 2 +- src/main/java/org/scijava/ui/ARGBPlane.java | 2 +- .../ui/AbstractInputHarvesterPlugin.java | 2 +- .../org/scijava/ui/AbstractUIInputWidget.java | 2 +- .../org/scijava/ui/AbstractUserInterface.java | 2 +- .../java/org/scijava/ui/ApplicationFrame.java | 2 +- src/main/java/org/scijava/ui/Arrangeable.java | 2 +- .../java/org/scijava/ui/CloseConfirmable.java | 2 +- .../java/org/scijava/ui/DefaultUIService.java | 2 +- src/main/java/org/scijava/ui/Desktop.java | 2 +- .../java/org/scijava/ui/DialogPrompt.java | 2 +- .../org/scijava/ui/FileListPreprocessor.java | 2 +- .../java/org/scijava/ui/FilePreprocessor.java | 2 +- src/main/java/org/scijava/ui/StatusBar.java | 2 +- .../java/org/scijava/ui/SystemClipboard.java | 2 +- src/main/java/org/scijava/ui/ToolBar.java | 2 +- .../java/org/scijava/ui/UIPreprocessor.java | 2 +- src/main/java/org/scijava/ui/UIService.java | 2 +- .../java/org/scijava/ui/UserInterface.java | 2 +- .../ui/console/AbstractConsolePane.java | 2 +- .../org/scijava/ui/console/ConsolePane.java | 2 +- .../scijava/ui/console/HeadlessArgument.java | 2 +- .../scijava/ui/console/ShowUIArgument.java | 2 +- .../org/scijava/ui/console/UIArgument.java | 2 +- .../ui/dnd/AbstractDragAndDropData.java | 2 +- .../ui/dnd/AbstractDragAndDropHandler.java | 2 +- .../ui/dnd/DefaultDragAndDropData.java | 2 +- .../ui/dnd/DefaultDragAndDropService.java | 2 +- .../org/scijava/ui/dnd/DragAndDropData.java | 2 +- .../scijava/ui/dnd/DragAndDropHandler.java | 2 +- .../scijava/ui/dnd/DragAndDropService.java | 2 +- .../ui/dnd/FileDragAndDropHandler.java | 2 +- .../ui/dnd/ListDragAndDropHandler.java | 2 +- .../java/org/scijava/ui/dnd/MIMEType.java | 2 +- .../ui/dnd/ScriptFileDragAndDropHandler.java | 2 +- .../ui/dnd/event/DragAndDropEvent.java | 2 +- .../scijava/ui/dnd/event/DragEnterEvent.java | 2 +- .../scijava/ui/dnd/event/DragExitEvent.java | 2 +- .../scijava/ui/dnd/event/DragOverEvent.java | 2 +- .../org/scijava/ui/dnd/event/DropEvent.java | 2 +- .../java/org/scijava/ui/event/UIEvent.java | 2 +- .../org/scijava/ui/event/UIShownEvent.java | 2 +- .../ui/headless/HeadlessDisplayViewer.java | 2 +- .../org/scijava/ui/headless/HeadlessUI.java | 2 +- .../org/scijava/ui/headlessUI/HeadlessUI.java | 2 +- .../ui/viewer/AbstractDisplayViewer.java | 2 +- .../org/scijava/ui/viewer/DisplayPanel.java | 2 +- .../org/scijava/ui/viewer/DisplayViewer.java | 2 +- .../org/scijava/ui/viewer/DisplayWindow.java | 2 +- .../text/AbstractTextDisplayViewer.java | 2 +- .../ui/viewer/text/TextDisplayPanel.java | 2 +- .../ui/viewer/text/TextDisplayViewer.java | 2 +- .../scijava/util/AbstractPrimitiveArray.java | 2 +- src/main/java/org/scijava/util/AppUtils.java | 2 +- .../java/org/scijava/util/ArrayUtils.java | 2 +- src/main/java/org/scijava/util/BoolArray.java | 2 +- src/main/java/org/scijava/util/ByteArray.java | 2 +- src/main/java/org/scijava/util/Bytes.java | 2 +- src/main/java/org/scijava/util/CharArray.java | 2 +- .../java/org/scijava/util/CheckSezpoz.java | 2 +- .../java/org/scijava/util/ClassUtils.java | 2 +- src/main/java/org/scijava/util/ColorRGB.java | 2 +- src/main/java/org/scijava/util/ColorRGBA.java | 2 +- src/main/java/org/scijava/util/Colors.java | 2 +- .../org/scijava/util/CombineAnnotations.java | 2 +- src/main/java/org/scijava/util/Combiner.java | 2 +- .../org/scijava/util/ConversionUtils.java | 2 +- .../java/org/scijava/util/DebugUtils.java | 2 +- .../org/scijava/util/DefaultTreeNode.java | 2 +- .../java/org/scijava/util/DigestUtils.java | 2 +- .../java/org/scijava/util/DoubleArray.java | 2 +- src/main/java/org/scijava/util/FileUtils.java | 2 +- .../java/org/scijava/util/FloatArray.java | 2 +- .../java/org/scijava/util/GenericUtils.java | 2 +- src/main/java/org/scijava/util/IntArray.java | 2 +- src/main/java/org/scijava/util/IntCoords.java | 2 +- src/main/java/org/scijava/util/IntRect.java | 2 +- .../java/org/scijava/util/IteratorPlus.java | 2 +- .../org/scijava/util/LastRecentlyUsed.java | 2 +- .../org/scijava/util/LineOutputStream.java | 2 +- src/main/java/org/scijava/util/ListUtils.java | 2 +- src/main/java/org/scijava/util/LongArray.java | 2 +- src/main/java/org/scijava/util/Manifest.java | 2 +- .../org/scijava/util/MersenneTwisterFast.java | 2 +- .../org/scijava/util/MetaInfCombiner.java | 2 +- .../java/org/scijava/util/MirrorWebsite.java | 2 +- src/main/java/org/scijava/util/MiscUtils.java | 2 +- .../java/org/scijava/util/NumberUtils.java | 2 +- .../java/org/scijava/util/ObjectArray.java | 2 +- src/main/java/org/scijava/util/POM.java | 2 +- .../java/org/scijava/util/PlatformUtils.java | 2 +- src/main/java/org/scijava/util/Prefs.java | 2 +- .../java/org/scijava/util/PrimitiveArray.java | 2 +- .../java/org/scijava/util/ProcessUtils.java | 2 +- src/main/java/org/scijava/util/Query.java | 2 +- src/main/java/org/scijava/util/ReadInto.java | 2 +- .../java/org/scijava/util/RealCoords.java | 2 +- src/main/java/org/scijava/util/RealRect.java | 2 +- .../org/scijava/util/ReflectException.java | 2 +- .../org/scijava/util/ReflectedUniverse.java | 2 +- .../org/scijava/util/ServiceCombiner.java | 2 +- .../java/org/scijava/util/ShortArray.java | 2 +- src/main/java/org/scijava/util/Sizable.java | 2 +- .../org/scijava/util/SizableArrayList.java | 2 +- .../java/org/scijava/util/StringMaker.java | 2 +- .../java/org/scijava/util/StringUtils.java | 2 +- src/main/java/org/scijava/util/Timing.java | 2 +- src/main/java/org/scijava/util/TreeNode.java | 2 +- .../java/org/scijava/util/TunePlayer.java | 2 +- src/main/java/org/scijava/util/Types.java | 2 +- src/main/java/org/scijava/util/UnitUtils.java | 2 +- .../java/org/scijava/util/VersionUtils.java | 2 +- src/main/java/org/scijava/util/XML.java | 2 +- .../welcome/DefaultWelcomeService.java | 2 +- .../org/scijava/welcome/WelcomeService.java | 2 +- .../scijava/welcome/event/WelcomeEvent.java | 2 +- .../widget/AbstractInputHarvester.java | 2 +- .../scijava/widget/AbstractInputPanel.java | 2 +- .../scijava/widget/AbstractInputWidget.java | 2 +- src/main/java/org/scijava/widget/Button.java | 2 +- .../java/org/scijava/widget/ButtonWidget.java | 2 +- .../java/org/scijava/widget/ChoiceWidget.java | 2 +- .../java/org/scijava/widget/ColorWidget.java | 2 +- .../java/org/scijava/widget/DateWidget.java | 2 +- .../scijava/widget/DefaultWidgetModel.java | 2 +- .../scijava/widget/DefaultWidgetService.java | 2 +- .../org/scijava/widget/FileListWidget.java | 2 +- .../java/org/scijava/widget/FileWidget.java | 2 +- .../org/scijava/widget/InputHarvester.java | 2 +- .../java/org/scijava/widget/InputPanel.java | 2 +- .../java/org/scijava/widget/InputWidget.java | 2 +- .../org/scijava/widget/MessageWidget.java | 2 +- .../java/org/scijava/widget/NumberWidget.java | 2 +- .../java/org/scijava/widget/ObjectWidget.java | 2 +- .../java/org/scijava/widget/TextWidget.java | 2 +- .../java/org/scijava/widget/ToggleWidget.java | 2 +- .../java/org/scijava/widget/UIComponent.java | 2 +- .../java/org/scijava/widget/WidgetModel.java | 2 +- .../org/scijava/widget/WidgetService.java | 2 +- .../java/org/scijava/widget/WidgetStyle.java | 2 +- .../java/org/scijava/ContextCreationTest.java | 2 +- .../org/scijava/ContextInjectionTest.java | 2 +- src/test/java/org/scijava/SciJavaTest.java | 2 +- .../org/scijava/annotations/AnnotatedA.java | 2 +- .../org/scijava/annotations/AnnotatedB.java | 2 +- .../org/scijava/annotations/AnnotatedC.java | 2 +- .../org/scijava/annotations/AnnotatedD.java | 2 +- .../annotations/AnnotatedInnerClass.java | 2 +- .../java/org/scijava/annotations/Complex.java | 2 +- .../annotations/DirectoryIndexerTest.java | 2 +- .../annotations/EclipseHelperTest.java | 2 +- .../java/org/scijava/annotations/Fruit.java | 2 +- .../org/scijava/annotations/LegacyTest.java | 2 +- .../java/org/scijava/annotations/Simple.java | 2 +- .../org/scijava/app/StatusServiceTest.java | 2 +- .../command/CommandArrayConverterTest.java | 2 +- .../org/scijava/command/CommandInfoTest.java | 2 +- .../scijava/command/CommandModuleTest.java | 2 +- .../scijava/command/CommandServiceTest.java | 2 +- .../java/org/scijava/command/InputsTest.java | 2 +- .../scijava/command/InvalidCommandTest.java | 2 +- .../command/run/CommandCodeRunnerTest.java | 2 +- .../scijava/console/ConsoleServiceTest.java | 2 +- .../console/SystemPropertyArgumentTest.java | 2 +- .../convert/AbstractNumberConverterTests.java | 2 +- .../BigIntegerToBigDecimalConverterTest.java | 2 +- .../ByteToBigDecimalConverterTest.java | 2 +- .../ByteToBigIntegerConverterTest.java | 2 +- .../convert/ByteToDoubleConverterTest.java | 2 +- .../convert/ByteToFloatConverterTest.java | 2 +- .../convert/ByteToIntegerConverterTest.java | 2 +- .../convert/ByteToLongConverterTest.java | 2 +- .../convert/ByteToShortConverterTest.java | 2 +- .../scijava/convert/ConvertServiceTest.java | 2 +- .../org/scijava/convert/ConverterTest.java | 2 +- .../convert/DelegateConverterTest.java | 2 +- .../DoubleToBigDecimalConverterTest.java | 2 +- .../convert/FileListConverterTest.java | 2 +- .../FloatToBigDecimalConverterTest.java | 2 +- .../convert/FloatToDoubleConverterTest.java | 2 +- .../IntegerToBigDecimalConverterTest.java | 2 +- .../IntegerToBigIntegerConverterTest.java | 2 +- .../convert/IntegerToDoubleConverterTest.java | 2 +- .../convert/IntegerToLongConverterTest.java | 2 +- .../LongToBigDecimalConverterTest.java | 2 +- .../LongToBigIntegerConverterTest.java | 2 +- .../ShortToBigDecimalConverterTest.java | 2 +- .../ShortToBigIntegerConverterTest.java | 2 +- .../convert/ShortToDoubleConverterTest.java | 2 +- .../convert/ShortToFloatConverterTest.java | 2 +- .../convert/ShortToIntegerConverterTest.java | 2 +- .../convert/ShortToLongConverterTest.java | 2 +- .../java/org/scijava/display/DisplayTest.java | 2 +- .../scijava/download/DownloadServiceTest.java | 2 +- .../org/scijava/event/EventServiceTest.java | 2 +- .../org/scijava/io/ByteArrayByteBankTest.java | 2 +- .../java/org/scijava/io/ByteBankTest.java | 2 +- .../java/org/scijava/io/IOServiceTest.java | 2 +- .../org/scijava/io/TypedIOServiceTest.java | 2 +- .../org/scijava/io/event/DataEventTest.java | 2 +- .../scijava/io/handle/BytesHandleTest.java | 2 +- .../io/handle/DataHandleEdgeCaseTests.java | 2 +- .../org/scijava/io/handle/DataHandleTest.java | 2 +- .../scijava/io/handle/DataHandlesTest.java | 2 +- .../org/scijava/io/handle/FileHandleTest.java | 2 +- .../handle/ReadBufferDataHandleMockTest.java | 2 +- .../io/handle/ReadBufferDataHandleTest.java | 2 +- .../io/handle/WriteBufferDataHandleTest.java | 2 +- .../io/location/BytesLocationTest.java | 2 +- .../io/location/FileLocationResolverTest.java | 2 +- .../scijava/io/location/FileLocationTest.java | 2 +- .../io/location/LocationServiceTest.java | 2 +- .../scijava/io/location/URILocationTest.java | 2 +- .../scijava/io/location/URLLocationTest.java | 2 +- .../io/nio/ByteBufferByteBankTest.java | 2 +- .../scijava/log/CallingClassUtilsTest.java | 2 +- .../org/scijava/log/DefaultLoggerTest.java | 2 +- .../java/org/scijava/log/LogMessageTest.java | 2 +- .../java/org/scijava/log/LogServiceTest.java | 2 +- .../java/org/scijava/log/LogSourceTest.java | 2 +- .../org/scijava/log/StderrLogServiceTest.java | 2 +- .../java/org/scijava/log/TestLogListener.java | 2 +- .../org/scijava/main/MainServiceTest.java | 2 +- .../scijava/main/run/MainCodeRunnerTest.java | 2 +- .../org/scijava/menu/MenuServiceTest.java | 2 +- .../java/org/scijava/menu/ShadowMenuTest.java | 2 +- .../org/scijava/module/ModuleServiceTest.java | 2 +- .../process/LoggerPreprocessorTest.java | 2 +- .../module/run/ModuleCodeRunnerTest.java | 2 +- .../scijava/object/NamedObjectIndexTest.java | 2 +- .../org/scijava/object/ObjectIndexTest.java | 2 +- .../org/scijava/object/ObjectServiceTest.java | 2 +- .../scijava/object/SortedObjectIndexTest.java | 2 +- .../java/org/scijava/options/OptionsTest.java | 2 +- .../org/scijava/parse/ParseServiceTest.java | 2 +- .../org/scijava/plugin/PluginFinderTest.java | 2 +- .../org/scijava/plugin/PluginIndexTest.java | 2 +- .../org/scijava/plugin/PluginInfoTest.java | 2 +- .../scijava/plugin/SingletonServiceTest.java | 2 +- .../org/scijava/prefs/PrefServiceTest.java | 2 +- .../java/org/scijava/run/RunServiceTest.java | 2 +- .../script/AbstractScriptLanguageTest.java | 2 +- .../org/scijava/script/ScriptEngineTest.java | 2 +- .../org/scijava/script/ScriptFinderTest.java | 2 +- .../org/scijava/script/ScriptInfoTest.java | 2 +- .../org/scijava/script/ScriptServiceTest.java | 2 +- .../process/ParameterScriptProcessorTest.java | 2 +- .../org/scijava/service/ServiceIndexTest.java | 2 +- .../java/org/scijava/task/TaskEventTest.java | 30 ++++++++++++++++++- .../org/scijava/task/TaskServiceTest.java | 2 +- .../org/scijava/test/AbstractSciJavaTest.java | 2 +- .../java/org/scijava/test/TestUtilsTest.java | 2 +- .../org/scijava/thread/ThreadServiceTest.java | 2 +- .../java/org/scijava/ui/UIServiceTest.java | 2 +- .../java/org/scijava/util/AppUtilsTest.java | 2 +- .../java/org/scijava/util/ArrayUtilsTest.java | 2 +- .../java/org/scijava/util/BoolArrayTest.java | 2 +- .../java/org/scijava/util/ByteArrayTest.java | 2 +- .../java/org/scijava/util/CharArrayTest.java | 2 +- .../java/org/scijava/util/ClassUtilsTest.java | 2 +- .../java/org/scijava/util/ColorRGBTest.java | 2 +- .../org/scijava/util/ConversionUtilsTest.java | 2 +- .../org/scijava/util/DigestUtilsTest.java | 2 +- .../org/scijava/util/DoubleArrayTest.java | 2 +- .../java/org/scijava/util/FileUtilsTest.java | 2 +- .../java/org/scijava/util/FloatArrayTest.java | 2 +- .../scijava/util/GenericArrayTypesTest.java | 2 +- .../java/org/scijava/util/IntArrayTest.java | 2 +- .../scijava/util/LastRecentlyUsedTest.java | 2 +- .../java/org/scijava/util/LongArrayTest.java | 2 +- .../org/scijava/util/ObjectArrayTest.java | 2 +- src/test/java/org/scijava/util/POMTest.java | 2 +- .../org/scijava/util/PrimitiveArrayTest.java | 2 +- .../org/scijava/util/ProcessUtilsTest.java | 2 +- .../java/org/scijava/util/ShortArrayTest.java | 2 +- .../org/scijava/util/StringUtilsTest.java | 2 +- src/test/java/org/scijava/util/TypesTest.java | 2 +- .../java/org/scijava/util/UnitUtilsTest.java | 2 +- .../org/scijava/util/VersionUtilsTest.java | 2 +- .../org/scijava/widget/WidgetStyleTest.java | 2 +- 739 files changed, 771 insertions(+), 743 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 43b1df69e..5f08911f4 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 - 2021, SciJava developers. +Copyright (c) 2009 - 2022, SciJava developers. All rights reserved. Redistribution and use in source and binary forms, with or without modification, diff --git a/src/it/apt-test/pom.xml b/src/it/apt-test/pom.xml index c28b04b3b..8bfa04980 100644 --- a/src/it/apt-test/pom.xml +++ b/src/it/apt-test/pom.xml @@ -3,7 +3,7 @@ #%L SciJava Common shared library for SciJava software. %% - Copyright (C) 2009 - 2021 SciJava developers. + Copyright (C) 2009 - 2022 SciJava developers. %% Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/setup.bsh b/src/it/apt-test/setup.bsh index 8d0aff88c..1aa0b6938 100644 --- a/src/it/apt-test/setup.bsh +++ b/src/it/apt-test/setup.bsh @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java b/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java index 2cdd86b5d..1bda32ca5 100644 --- a/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java +++ b/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java b/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java index a2b88d6d8..77e414da2 100644 --- a/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java +++ b/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/verify.bsh b/src/it/apt-test/verify.bsh index d0130489e..bf20d6cc0 100644 --- a/src/it/apt-test/verify.bsh +++ b/src/it/apt-test/verify.bsh @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/settings.xml b/src/it/settings.xml index a658c93af..be7d7b999 100644 --- a/src/it/settings.xml +++ b/src/it/settings.xml @@ -3,7 +3,7 @@ #%L SciJava Common shared library for SciJava software. %% - Copyright (C) 2009 - 2021 SciJava developers. + Copyright (C) 2009 - 2022 SciJava developers. %% Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractBasicDetails.java b/src/main/java/org/scijava/AbstractBasicDetails.java index c1957ba7b..96ba66746 100644 --- a/src/main/java/org/scijava/AbstractBasicDetails.java +++ b/src/main/java/org/scijava/AbstractBasicDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractContextual.java b/src/main/java/org/scijava/AbstractContextual.java index f1746123e..b8a074336 100644 --- a/src/main/java/org/scijava/AbstractContextual.java +++ b/src/main/java/org/scijava/AbstractContextual.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractGateway.java b/src/main/java/org/scijava/AbstractGateway.java index 5975db5b7..c6be31959 100644 --- a/src/main/java/org/scijava/AbstractGateway.java +++ b/src/main/java/org/scijava/AbstractGateway.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractUIDetails.java b/src/main/java/org/scijava/AbstractUIDetails.java index 0113ae104..0b887cafa 100644 --- a/src/main/java/org/scijava/AbstractUIDetails.java +++ b/src/main/java/org/scijava/AbstractUIDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/BasicDetails.java b/src/main/java/org/scijava/BasicDetails.java index 3d2fd592b..b3ab1e40f 100644 --- a/src/main/java/org/scijava/BasicDetails.java +++ b/src/main/java/org/scijava/BasicDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Cancelable.java b/src/main/java/org/scijava/Cancelable.java index 645e4d0f9..0b1098ca0 100644 --- a/src/main/java/org/scijava/Cancelable.java +++ b/src/main/java/org/scijava/Cancelable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Context.java b/src/main/java/org/scijava/Context.java index c1559cb4c..f93f22991 100644 --- a/src/main/java/org/scijava/Context.java +++ b/src/main/java/org/scijava/Context.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Contextual.java b/src/main/java/org/scijava/Contextual.java index 9a3f5ec98..cd247a466 100644 --- a/src/main/java/org/scijava/Contextual.java +++ b/src/main/java/org/scijava/Contextual.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Disposable.java b/src/main/java/org/scijava/Disposable.java index 1713edd7b..cde51c0fc 100644 --- a/src/main/java/org/scijava/Disposable.java +++ b/src/main/java/org/scijava/Disposable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Gateway.java b/src/main/java/org/scijava/Gateway.java index a8d00fa71..47b346156 100644 --- a/src/main/java/org/scijava/Gateway.java +++ b/src/main/java/org/scijava/Gateway.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Identifiable.java b/src/main/java/org/scijava/Identifiable.java index f7f4a607e..0774e0fb2 100644 --- a/src/main/java/org/scijava/Identifiable.java +++ b/src/main/java/org/scijava/Identifiable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Initializable.java b/src/main/java/org/scijava/Initializable.java index 025b1023a..149e8d503 100644 --- a/src/main/java/org/scijava/Initializable.java +++ b/src/main/java/org/scijava/Initializable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Instantiable.java b/src/main/java/org/scijava/Instantiable.java index df9a4c02f..5be5d288d 100644 --- a/src/main/java/org/scijava/Instantiable.java +++ b/src/main/java/org/scijava/Instantiable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/InstantiableException.java b/src/main/java/org/scijava/InstantiableException.java index 38dffb74a..bf31a522f 100644 --- a/src/main/java/org/scijava/InstantiableException.java +++ b/src/main/java/org/scijava/InstantiableException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ItemIO.java b/src/main/java/org/scijava/ItemIO.java index 8d85f3d92..e9955fcaf 100644 --- a/src/main/java/org/scijava/ItemIO.java +++ b/src/main/java/org/scijava/ItemIO.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ItemVisibility.java b/src/main/java/org/scijava/ItemVisibility.java index f9750c56b..d69da15d2 100644 --- a/src/main/java/org/scijava/ItemVisibility.java +++ b/src/main/java/org/scijava/ItemVisibility.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Locatable.java b/src/main/java/org/scijava/Locatable.java index 51cdaed24..e200df42e 100644 --- a/src/main/java/org/scijava/Locatable.java +++ b/src/main/java/org/scijava/Locatable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/MenuEntry.java b/src/main/java/org/scijava/MenuEntry.java index b0967e474..ee0ac4b75 100644 --- a/src/main/java/org/scijava/MenuEntry.java +++ b/src/main/java/org/scijava/MenuEntry.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/MenuPath.java b/src/main/java/org/scijava/MenuPath.java index 762a2f230..508eec37b 100644 --- a/src/main/java/org/scijava/MenuPath.java +++ b/src/main/java/org/scijava/MenuPath.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Named.java b/src/main/java/org/scijava/Named.java index 7fdb52160..2307e06f3 100644 --- a/src/main/java/org/scijava/Named.java +++ b/src/main/java/org/scijava/Named.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/NoSuchServiceException.java b/src/main/java/org/scijava/NoSuchServiceException.java index 1ac3e1370..498c0989f 100644 --- a/src/main/java/org/scijava/NoSuchServiceException.java +++ b/src/main/java/org/scijava/NoSuchServiceException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/NullContextException.java b/src/main/java/org/scijava/NullContextException.java index ce2ec0ebd..7c13e82ba 100644 --- a/src/main/java/org/scijava/NullContextException.java +++ b/src/main/java/org/scijava/NullContextException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Optional.java b/src/main/java/org/scijava/Optional.java index 9661b38ac..8ce2fc46f 100644 --- a/src/main/java/org/scijava/Optional.java +++ b/src/main/java/org/scijava/Optional.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Prioritized.java b/src/main/java/org/scijava/Prioritized.java index 990bc4f9e..bb49dc76f 100644 --- a/src/main/java/org/scijava/Prioritized.java +++ b/src/main/java/org/scijava/Prioritized.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Priority.java b/src/main/java/org/scijava/Priority.java index 064a860c7..a495ec026 100644 --- a/src/main/java/org/scijava/Priority.java +++ b/src/main/java/org/scijava/Priority.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/SciJava.java b/src/main/java/org/scijava/SciJava.java index aed3bb358..3c1180e43 100644 --- a/src/main/java/org/scijava/SciJava.java +++ b/src/main/java/org/scijava/SciJava.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Typed.java b/src/main/java/org/scijava/Typed.java index c38fa1d37..a600d4718 100644 --- a/src/main/java/org/scijava/Typed.java +++ b/src/main/java/org/scijava/Typed.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/UIDetails.java b/src/main/java/org/scijava/UIDetails.java index 2c293a899..949cf24cb 100644 --- a/src/main/java/org/scijava/UIDetails.java +++ b/src/main/java/org/scijava/UIDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Validated.java b/src/main/java/org/scijava/Validated.java index 5bc4b934a..f3383a252 100644 --- a/src/main/java/org/scijava/Validated.java +++ b/src/main/java/org/scijava/Validated.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ValidityProblem.java b/src/main/java/org/scijava/ValidityProblem.java index dede56c21..65cfa240c 100644 --- a/src/main/java/org/scijava/ValidityProblem.java +++ b/src/main/java/org/scijava/ValidityProblem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Versioned.java b/src/main/java/org/scijava/Versioned.java index aa4d19c7f..c12d5be9b 100644 --- a/src/main/java/org/scijava/Versioned.java +++ b/src/main/java/org/scijava/Versioned.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AbstractIndexWriter.java b/src/main/java/org/scijava/annotations/AbstractIndexWriter.java index 21a2a90cf..9132512e6 100644 --- a/src/main/java/org/scijava/annotations/AbstractIndexWriter.java +++ b/src/main/java/org/scijava/annotations/AbstractIndexWriter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AnnotationCombiner.java b/src/main/java/org/scijava/annotations/AnnotationCombiner.java index 9e3fbd0f7..88f92ca9e 100644 --- a/src/main/java/org/scijava/annotations/AnnotationCombiner.java +++ b/src/main/java/org/scijava/annotations/AnnotationCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AnnotationProcessor.java b/src/main/java/org/scijava/annotations/AnnotationProcessor.java index 72fa9e051..03cc759b0 100644 --- a/src/main/java/org/scijava/annotations/AnnotationProcessor.java +++ b/src/main/java/org/scijava/annotations/AnnotationProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java b/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java index 94a4f62f9..316ce2601 100644 --- a/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java +++ b/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/DirectoryIndexer.java b/src/main/java/org/scijava/annotations/DirectoryIndexer.java index 098afabe0..84a176e00 100644 --- a/src/main/java/org/scijava/annotations/DirectoryIndexer.java +++ b/src/main/java/org/scijava/annotations/DirectoryIndexer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/EclipseHelper.java b/src/main/java/org/scijava/annotations/EclipseHelper.java index 194cdbf50..d8b457f29 100644 --- a/src/main/java/org/scijava/annotations/EclipseHelper.java +++ b/src/main/java/org/scijava/annotations/EclipseHelper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/Index.java b/src/main/java/org/scijava/annotations/Index.java index 0688fd264..e9fe9a5c4 100644 --- a/src/main/java/org/scijava/annotations/Index.java +++ b/src/main/java/org/scijava/annotations/Index.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/IndexItem.java b/src/main/java/org/scijava/annotations/IndexItem.java index 52083be38..3a3fc8b54 100644 --- a/src/main/java/org/scijava/annotations/IndexItem.java +++ b/src/main/java/org/scijava/annotations/IndexItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/IndexReader.java b/src/main/java/org/scijava/annotations/IndexReader.java index fce9a2535..061226272 100644 --- a/src/main/java/org/scijava/annotations/IndexReader.java +++ b/src/main/java/org/scijava/annotations/IndexReader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/Indexable.java b/src/main/java/org/scijava/annotations/Indexable.java index 8dc6fbe3e..31315dcf0 100644 --- a/src/main/java/org/scijava/annotations/Indexable.java +++ b/src/main/java/org/scijava/annotations/Indexable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/legacy/LegacyReader.java b/src/main/java/org/scijava/annotations/legacy/LegacyReader.java index 31eccfb14..300a03da0 100644 --- a/src/main/java/org/scijava/annotations/legacy/LegacyReader.java +++ b/src/main/java/org/scijava/annotations/legacy/LegacyReader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/AbstractApp.java b/src/main/java/org/scijava/app/AbstractApp.java index 91d6ee387..3efbfc005 100644 --- a/src/main/java/org/scijava/app/AbstractApp.java +++ b/src/main/java/org/scijava/app/AbstractApp.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/App.java b/src/main/java/org/scijava/app/App.java index 319424009..ad603f17f 100644 --- a/src/main/java/org/scijava/app/App.java +++ b/src/main/java/org/scijava/app/App.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/AppService.java b/src/main/java/org/scijava/app/AppService.java index 3327d8ac5..876475de3 100644 --- a/src/main/java/org/scijava/app/AppService.java +++ b/src/main/java/org/scijava/app/AppService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/DefaultAppService.java b/src/main/java/org/scijava/app/DefaultAppService.java index aa94bb420..26642e99b 100644 --- a/src/main/java/org/scijava/app/DefaultAppService.java +++ b/src/main/java/org/scijava/app/DefaultAppService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/DefaultStatusService.java b/src/main/java/org/scijava/app/DefaultStatusService.java index 5ff4059d5..c622c12ea 100644 --- a/src/main/java/org/scijava/app/DefaultStatusService.java +++ b/src/main/java/org/scijava/app/DefaultStatusService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/SciJavaApp.java b/src/main/java/org/scijava/app/SciJavaApp.java index 2b40968af..1c9679b06 100644 --- a/src/main/java/org/scijava/app/SciJavaApp.java +++ b/src/main/java/org/scijava/app/SciJavaApp.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/StatusService.java b/src/main/java/org/scijava/app/StatusService.java index 7fee4c9af..e2c64ebf0 100644 --- a/src/main/java/org/scijava/app/StatusService.java +++ b/src/main/java/org/scijava/app/StatusService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/event/StatusEvent.java b/src/main/java/org/scijava/app/event/StatusEvent.java index 9a341198b..cb34e3f4e 100644 --- a/src/main/java/org/scijava/app/event/StatusEvent.java +++ b/src/main/java/org/scijava/app/event/StatusEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/cache/CacheService.java b/src/main/java/org/scijava/cache/CacheService.java index 669ccb3d9..f91b37214 100644 --- a/src/main/java/org/scijava/cache/CacheService.java +++ b/src/main/java/org/scijava/cache/CacheService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/cache/DefaultCacheService.java b/src/main/java/org/scijava/cache/DefaultCacheService.java index 142528f5e..210ed2558 100644 --- a/src/main/java/org/scijava/cache/DefaultCacheService.java +++ b/src/main/java/org/scijava/cache/DefaultCacheService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Command.java b/src/main/java/org/scijava/command/Command.java index efe93bef4..420c5c2e9 100644 --- a/src/main/java/org/scijava/command/Command.java +++ b/src/main/java/org/scijava/command/Command.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandInfo.java b/src/main/java/org/scijava/command/CommandInfo.java index 8f1a5da5f..cdde41992 100644 --- a/src/main/java/org/scijava/command/CommandInfo.java +++ b/src/main/java/org/scijava/command/CommandInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandModule.java b/src/main/java/org/scijava/command/CommandModule.java index 745bd8a6f..fc1e59469 100644 --- a/src/main/java/org/scijava/command/CommandModule.java +++ b/src/main/java/org/scijava/command/CommandModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandModuleItem.java b/src/main/java/org/scijava/command/CommandModuleItem.java index 219e8d3e9..38b52ac11 100644 --- a/src/main/java/org/scijava/command/CommandModuleItem.java +++ b/src/main/java/org/scijava/command/CommandModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandService.java b/src/main/java/org/scijava/command/CommandService.java index e526aa92c..6e777ea5b 100644 --- a/src/main/java/org/scijava/command/CommandService.java +++ b/src/main/java/org/scijava/command/CommandService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/ContextCommand.java b/src/main/java/org/scijava/command/ContextCommand.java index 0d7b52c1d..86094df90 100644 --- a/src/main/java/org/scijava/command/ContextCommand.java +++ b/src/main/java/org/scijava/command/ContextCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DefaultCommandService.java b/src/main/java/org/scijava/command/DefaultCommandService.java index dd17f807a..64ee66b62 100644 --- a/src/main/java/org/scijava/command/DefaultCommandService.java +++ b/src/main/java/org/scijava/command/DefaultCommandService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DynamicCommand.java b/src/main/java/org/scijava/command/DynamicCommand.java index 6276cdec6..4d6f8e980 100644 --- a/src/main/java/org/scijava/command/DynamicCommand.java +++ b/src/main/java/org/scijava/command/DynamicCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DynamicCommandInfo.java b/src/main/java/org/scijava/command/DynamicCommandInfo.java index 65054b9cc..f45561e6b 100644 --- a/src/main/java/org/scijava/command/DynamicCommandInfo.java +++ b/src/main/java/org/scijava/command/DynamicCommandInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Inputs.java b/src/main/java/org/scijava/command/Inputs.java index cb314b844..291f748cb 100644 --- a/src/main/java/org/scijava/command/Inputs.java +++ b/src/main/java/org/scijava/command/Inputs.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Interactive.java b/src/main/java/org/scijava/command/Interactive.java index b79030cd4..cb35b9314 100644 --- a/src/main/java/org/scijava/command/Interactive.java +++ b/src/main/java/org/scijava/command/Interactive.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/InteractiveCommand.java b/src/main/java/org/scijava/command/InteractiveCommand.java index 45cdbcc89..51e7b9ffa 100644 --- a/src/main/java/org/scijava/command/InteractiveCommand.java +++ b/src/main/java/org/scijava/command/InteractiveCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/ModuleCommand.java b/src/main/java/org/scijava/command/ModuleCommand.java index b0685a3de..5cb014814 100644 --- a/src/main/java/org/scijava/command/ModuleCommand.java +++ b/src/main/java/org/scijava/command/ModuleCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Previewable.java b/src/main/java/org/scijava/command/Previewable.java index 69a246b0b..5115b88a1 100644 --- a/src/main/java/org/scijava/command/Previewable.java +++ b/src/main/java/org/scijava/command/Previewable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/UnimplementedCommand.java b/src/main/java/org/scijava/command/UnimplementedCommand.java index 8d714abe8..f803e283c 100644 --- a/src/main/java/org/scijava/command/UnimplementedCommand.java +++ b/src/main/java/org/scijava/command/UnimplementedCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/console/RunArgument.java b/src/main/java/org/scijava/command/console/RunArgument.java index 77a8ebcba..d066e9d74 100644 --- a/src/main/java/org/scijava/command/console/RunArgument.java +++ b/src/main/java/org/scijava/command/console/RunArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/run/CommandCodeRunner.java b/src/main/java/org/scijava/command/run/CommandCodeRunner.java index 204129581..ea493609c 100644 --- a/src/main/java/org/scijava/command/run/CommandCodeRunner.java +++ b/src/main/java/org/scijava/command/run/CommandCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/AbstractConsoleArgument.java b/src/main/java/org/scijava/console/AbstractConsoleArgument.java index 0f9ca35c2..88d64af7a 100644 --- a/src/main/java/org/scijava/console/AbstractConsoleArgument.java +++ b/src/main/java/org/scijava/console/AbstractConsoleArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleArgument.java b/src/main/java/org/scijava/console/ConsoleArgument.java index 06ceb965a..2067aae10 100644 --- a/src/main/java/org/scijava/console/ConsoleArgument.java +++ b/src/main/java/org/scijava/console/ConsoleArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleService.java b/src/main/java/org/scijava/console/ConsoleService.java index 377bbb37b..97299556c 100644 --- a/src/main/java/org/scijava/console/ConsoleService.java +++ b/src/main/java/org/scijava/console/ConsoleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleUtils.java b/src/main/java/org/scijava/console/ConsoleUtils.java index 8e36b0d0c..80713b5bd 100644 --- a/src/main/java/org/scijava/console/ConsoleUtils.java +++ b/src/main/java/org/scijava/console/ConsoleUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/DefaultConsoleService.java b/src/main/java/org/scijava/console/DefaultConsoleService.java index 7ae73c9d7..9f474b2f7 100644 --- a/src/main/java/org/scijava/console/DefaultConsoleService.java +++ b/src/main/java/org/scijava/console/DefaultConsoleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/MultiOutputStream.java b/src/main/java/org/scijava/console/MultiOutputStream.java index 999db00e2..dc2a3ec62 100644 --- a/src/main/java/org/scijava/console/MultiOutputStream.java +++ b/src/main/java/org/scijava/console/MultiOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/MultiPrintStream.java b/src/main/java/org/scijava/console/MultiPrintStream.java index 093ccc004..991f24710 100644 --- a/src/main/java/org/scijava/console/MultiPrintStream.java +++ b/src/main/java/org/scijava/console/MultiPrintStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/OutputEvent.java b/src/main/java/org/scijava/console/OutputEvent.java index 3b7b91213..ffacdfa07 100644 --- a/src/main/java/org/scijava/console/OutputEvent.java +++ b/src/main/java/org/scijava/console/OutputEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/OutputListener.java b/src/main/java/org/scijava/console/OutputListener.java index afdce7781..1486f70f0 100644 --- a/src/main/java/org/scijava/console/OutputListener.java +++ b/src/main/java/org/scijava/console/OutputListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/SystemPropertyArgument.java b/src/main/java/org/scijava/console/SystemPropertyArgument.java index 638941d24..c6a053fbc 100644 --- a/src/main/java/org/scijava/console/SystemPropertyArgument.java +++ b/src/main/java/org/scijava/console/SystemPropertyArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractConvertService.java b/src/main/java/org/scijava/convert/AbstractConvertService.java index 9b98b2925..89b883f63 100644 --- a/src/main/java/org/scijava/convert/AbstractConvertService.java +++ b/src/main/java/org/scijava/convert/AbstractConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractConverter.java b/src/main/java/org/scijava/convert/AbstractConverter.java index 098d25fb1..9b2ae2cda 100644 --- a/src/main/java/org/scijava/convert/AbstractConverter.java +++ b/src/main/java/org/scijava/convert/AbstractConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractDelegateConverter.java b/src/main/java/org/scijava/convert/AbstractDelegateConverter.java index d4a503876..4e447eb79 100644 --- a/src/main/java/org/scijava/convert/AbstractDelegateConverter.java +++ b/src/main/java/org/scijava/convert/AbstractDelegateConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ArrayConverters.java b/src/main/java/org/scijava/convert/ArrayConverters.java index 4a3be7d96..507ff693e 100644 --- a/src/main/java/org/scijava/convert/ArrayConverters.java +++ b/src/main/java/org/scijava/convert/ArrayConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/CastingConverter.java b/src/main/java/org/scijava/convert/CastingConverter.java index edb6f7aed..d55b9663a 100644 --- a/src/main/java/org/scijava/convert/CastingConverter.java +++ b/src/main/java/org/scijava/convert/CastingConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ConversionRequest.java b/src/main/java/org/scijava/convert/ConversionRequest.java index c9f9b77cb..36fc745a9 100644 --- a/src/main/java/org/scijava/convert/ConversionRequest.java +++ b/src/main/java/org/scijava/convert/ConversionRequest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ConvertService.java b/src/main/java/org/scijava/convert/ConvertService.java index d94a67711..f82552970 100644 --- a/src/main/java/org/scijava/convert/ConvertService.java +++ b/src/main/java/org/scijava/convert/ConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/Converter.java b/src/main/java/org/scijava/convert/Converter.java index 118a188e2..bf63a19d8 100644 --- a/src/main/java/org/scijava/convert/Converter.java +++ b/src/main/java/org/scijava/convert/Converter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/DefaultConvertService.java b/src/main/java/org/scijava/convert/DefaultConvertService.java index dc8610947..bb5ec9d50 100644 --- a/src/main/java/org/scijava/convert/DefaultConvertService.java +++ b/src/main/java/org/scijava/convert/DefaultConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index 68ebb8e89..d2daea418 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/FileListConverters.java b/src/main/java/org/scijava/convert/FileListConverters.java index 5c1e1ff9a..5aad27fb1 100644 --- a/src/main/java/org/scijava/convert/FileListConverters.java +++ b/src/main/java/org/scijava/convert/FileListConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NullConverter.java b/src/main/java/org/scijava/convert/NullConverter.java index 862c91507..594468617 100644 --- a/src/main/java/org/scijava/convert/NullConverter.java +++ b/src/main/java/org/scijava/convert/NullConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberConverters.java b/src/main/java/org/scijava/convert/NumberConverters.java index 596ac4f0b..d2d23e617 100644 --- a/src/main/java/org/scijava/convert/NumberConverters.java +++ b/src/main/java/org/scijava/convert/NumberConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java b/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java index f48ba06ea..1b646057d 100644 --- a/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java +++ b/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java b/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java index 76a96d49f..b2f29f89d 100644 --- a/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java +++ b/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToDoubleConverter.java b/src/main/java/org/scijava/convert/NumberToDoubleConverter.java index 768c514ad..79ca2723b 100644 --- a/src/main/java/org/scijava/convert/NumberToDoubleConverter.java +++ b/src/main/java/org/scijava/convert/NumberToDoubleConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToFloatConverter.java b/src/main/java/org/scijava/convert/NumberToFloatConverter.java index 716ab1db2..8c036173a 100644 --- a/src/main/java/org/scijava/convert/NumberToFloatConverter.java +++ b/src/main/java/org/scijava/convert/NumberToFloatConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToIntegerConverter.java b/src/main/java/org/scijava/convert/NumberToIntegerConverter.java index 106836372..cc1aad5d7 100644 --- a/src/main/java/org/scijava/convert/NumberToIntegerConverter.java +++ b/src/main/java/org/scijava/convert/NumberToIntegerConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToLongConverter.java b/src/main/java/org/scijava/convert/NumberToLongConverter.java index 26688e057..834388f9c 100644 --- a/src/main/java/org/scijava/convert/NumberToLongConverter.java +++ b/src/main/java/org/scijava/convert/NumberToLongConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToNumberConverter.java b/src/main/java/org/scijava/convert/NumberToNumberConverter.java index ea5a58340..edbe1aeda 100644 --- a/src/main/java/org/scijava/convert/NumberToNumberConverter.java +++ b/src/main/java/org/scijava/convert/NumberToNumberConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToShortConverter.java b/src/main/java/org/scijava/convert/NumberToShortConverter.java index 0cc896d99..3c0666f2a 100644 --- a/src/main/java/org/scijava/convert/NumberToShortConverter.java +++ b/src/main/java/org/scijava/convert/NumberToShortConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java index e56efd060..c9e1a0412 100644 --- a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java +++ b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java b/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java index 86de8361b..96fdd4211 100644 --- a/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java +++ b/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/AbstractDisplay.java b/src/main/java/org/scijava/display/AbstractDisplay.java index a3f9215b7..b3aa8cc47 100644 --- a/src/main/java/org/scijava/display/AbstractDisplay.java +++ b/src/main/java/org/scijava/display/AbstractDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java b/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java index 4d1796f26..b480f84d1 100644 --- a/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java +++ b/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultDisplay.java b/src/main/java/org/scijava/display/DefaultDisplay.java index 3096e8db7..8813ccd1b 100644 --- a/src/main/java/org/scijava/display/DefaultDisplay.java +++ b/src/main/java/org/scijava/display/DefaultDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultDisplayService.java b/src/main/java/org/scijava/display/DefaultDisplayService.java index 457d20f63..836f105f5 100644 --- a/src/main/java/org/scijava/display/DefaultDisplayService.java +++ b/src/main/java/org/scijava/display/DefaultDisplayService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultTextDisplay.java b/src/main/java/org/scijava/display/DefaultTextDisplay.java index fc8b812ad..f9b0d3171 100644 --- a/src/main/java/org/scijava/display/DefaultTextDisplay.java +++ b/src/main/java/org/scijava/display/DefaultTextDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/Display.java b/src/main/java/org/scijava/display/Display.java index d22fcd67a..0662c15f6 100644 --- a/src/main/java/org/scijava/display/Display.java +++ b/src/main/java/org/scijava/display/Display.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DisplayPostprocessor.java b/src/main/java/org/scijava/display/DisplayPostprocessor.java index 5fed339ab..1f1db6ac0 100644 --- a/src/main/java/org/scijava/display/DisplayPostprocessor.java +++ b/src/main/java/org/scijava/display/DisplayPostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DisplayService.java b/src/main/java/org/scijava/display/DisplayService.java index 55436b60e..cc4a96b89 100644 --- a/src/main/java/org/scijava/display/DisplayService.java +++ b/src/main/java/org/scijava/display/DisplayService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/Displayable.java b/src/main/java/org/scijava/display/Displayable.java index f705b1e42..d079a4c96 100644 --- a/src/main/java/org/scijava/display/Displayable.java +++ b/src/main/java/org/scijava/display/Displayable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/TextDisplay.java b/src/main/java/org/scijava/display/TextDisplay.java index f2ca2e2be..63f58eb36 100644 --- a/src/main/java/org/scijava/display/TextDisplay.java +++ b/src/main/java/org/scijava/display/TextDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java b/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java index e0da2212e..715a4a291 100644 --- a/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java b/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java index 315a98f0a..9cca17b84 100644 --- a/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java b/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java index bac010462..a558604a7 100644 --- a/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayEvent.java b/src/main/java/org/scijava/display/event/DisplayEvent.java index cd54e08be..8bdd74598 100644 --- a/src/main/java/org/scijava/display/event/DisplayEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java b/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java index b962e4119..ee62e8ad9 100644 --- a/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/InputEvent.java b/src/main/java/org/scijava/display/event/input/InputEvent.java index 76a7ff92b..bae65d081 100644 --- a/src/main/java/org/scijava/display/event/input/InputEvent.java +++ b/src/main/java/org/scijava/display/event/input/InputEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyEvent.java b/src/main/java/org/scijava/display/event/input/KyEvent.java index e17a02507..c045d99d2 100644 --- a/src/main/java/org/scijava/display/event/input/KyEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyPressedEvent.java b/src/main/java/org/scijava/display/event/input/KyPressedEvent.java index 4b56d81ab..c8d73d8fb 100644 --- a/src/main/java/org/scijava/display/event/input/KyPressedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyPressedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java b/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java index 17469b570..ca7fdd18c 100644 --- a/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyTypedEvent.java b/src/main/java/org/scijava/display/event/input/KyTypedEvent.java index c13badf41..f18264ef5 100644 --- a/src/main/java/org/scijava/display/event/input/KyTypedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyTypedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsButtonEvent.java b/src/main/java/org/scijava/display/event/input/MsButtonEvent.java index f1124f023..51cf3adbb 100644 --- a/src/main/java/org/scijava/display/event/input/MsButtonEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsButtonEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsClickedEvent.java b/src/main/java/org/scijava/display/event/input/MsClickedEvent.java index 706ec58df..b4af7b6b8 100644 --- a/src/main/java/org/scijava/display/event/input/MsClickedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsClickedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java b/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java index 54b0f24b6..d02a8f9e9 100644 --- a/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java b/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java index 2237f2c74..1fefc1f1c 100644 --- a/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsEvent.java b/src/main/java/org/scijava/display/event/input/MsEvent.java index 72f08ad0b..e2288e32e 100644 --- a/src/main/java/org/scijava/display/event/input/MsEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsExitedEvent.java b/src/main/java/org/scijava/display/event/input/MsExitedEvent.java index 1b74f0bb8..f47cda06f 100644 --- a/src/main/java/org/scijava/display/event/input/MsExitedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsExitedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsMovedEvent.java b/src/main/java/org/scijava/display/event/input/MsMovedEvent.java index 01d23456a..c1c1030ce 100644 --- a/src/main/java/org/scijava/display/event/input/MsMovedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsMovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsPressedEvent.java b/src/main/java/org/scijava/display/event/input/MsPressedEvent.java index afe13bf50..cebaebae1 100644 --- a/src/main/java/org/scijava/display/event/input/MsPressedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsPressedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java b/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java index 033e91326..d9b39fe7d 100644 --- a/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsWheelEvent.java b/src/main/java/org/scijava/display/event/input/MsWheelEvent.java index 8f65e28f4..008b66c11 100644 --- a/src/main/java/org/scijava/display/event/input/MsWheelEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsWheelEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java b/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java index becbbd348..7220064e8 100644 --- a/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinClosedEvent.java b/src/main/java/org/scijava/display/event/window/WinClosedEvent.java index aee1651ff..e8e470175 100644 --- a/src/main/java/org/scijava/display/event/window/WinClosedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinClosedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinClosingEvent.java b/src/main/java/org/scijava/display/event/window/WinClosingEvent.java index 915cf34af..fa7b1bd79 100644 --- a/src/main/java/org/scijava/display/event/window/WinClosingEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinClosingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java b/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java index 25422b3bf..7d5e0b3e4 100644 --- a/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java b/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java index f3ac7e1d5..2af77304f 100644 --- a/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinEvent.java b/src/main/java/org/scijava/display/event/window/WinEvent.java index 8ad776940..bfe00ebde 100644 --- a/src/main/java/org/scijava/display/event/window/WinEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java b/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java index 82add267c..7d50a608b 100644 --- a/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java b/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java index 80a9d3a59..3affb4051 100644 --- a/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DefaultDownloadService.java b/src/main/java/org/scijava/download/DefaultDownloadService.java index 99806a4fa..f87355f54 100644 --- a/src/main/java/org/scijava/download/DefaultDownloadService.java +++ b/src/main/java/org/scijava/download/DefaultDownloadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DiskLocationCache.java b/src/main/java/org/scijava/download/DiskLocationCache.java index 414d879df..6442d9c27 100644 --- a/src/main/java/org/scijava/download/DiskLocationCache.java +++ b/src/main/java/org/scijava/download/DiskLocationCache.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/Download.java b/src/main/java/org/scijava/download/Download.java index abecc1a10..146c7eb96 100644 --- a/src/main/java/org/scijava/download/Download.java +++ b/src/main/java/org/scijava/download/Download.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DownloadService.java b/src/main/java/org/scijava/download/DownloadService.java index f09f706ab..94ed5ce53 100644 --- a/src/main/java/org/scijava/download/DownloadService.java +++ b/src/main/java/org/scijava/download/DownloadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/LocationCache.java b/src/main/java/org/scijava/download/LocationCache.java index a281d81f3..3f902f44e 100644 --- a/src/main/java/org/scijava/download/LocationCache.java +++ b/src/main/java/org/scijava/download/LocationCache.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/MultiWriteHandle.java b/src/main/java/org/scijava/download/MultiWriteHandle.java index 6e4dc23e1..eb9443133 100644 --- a/src/main/java/org/scijava/download/MultiWriteHandle.java +++ b/src/main/java/org/scijava/download/MultiWriteHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/ContextDisposingEvent.java b/src/main/java/org/scijava/event/ContextDisposingEvent.java index 48496d441..77ef59e3d 100644 --- a/src/main/java/org/scijava/event/ContextDisposingEvent.java +++ b/src/main/java/org/scijava/event/ContextDisposingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventBus.java b/src/main/java/org/scijava/event/DefaultEventBus.java index 7236ac5d6..7a7fd98bc 100644 --- a/src/main/java/org/scijava/event/DefaultEventBus.java +++ b/src/main/java/org/scijava/event/DefaultEventBus.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventHistory.java b/src/main/java/org/scijava/event/DefaultEventHistory.java index 2fa1e0cce..57cab6bdc 100644 --- a/src/main/java/org/scijava/event/DefaultEventHistory.java +++ b/src/main/java/org/scijava/event/DefaultEventHistory.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index 5d56a77c7..d18b5c62e 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventDetails.java b/src/main/java/org/scijava/event/EventDetails.java index 8d6f91436..b10ee4ff4 100644 --- a/src/main/java/org/scijava/event/EventDetails.java +++ b/src/main/java/org/scijava/event/EventDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHandler.java b/src/main/java/org/scijava/event/EventHandler.java index 76160a25c..ad94bda55 100644 --- a/src/main/java/org/scijava/event/EventHandler.java +++ b/src/main/java/org/scijava/event/EventHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHistory.java b/src/main/java/org/scijava/event/EventHistory.java index ac11eb5a3..3d0adfbad 100644 --- a/src/main/java/org/scijava/event/EventHistory.java +++ b/src/main/java/org/scijava/event/EventHistory.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHistoryListener.java b/src/main/java/org/scijava/event/EventHistoryListener.java index 3f4737d90..b06812dc0 100644 --- a/src/main/java/org/scijava/event/EventHistoryListener.java +++ b/src/main/java/org/scijava/event/EventHistoryListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventService.java b/src/main/java/org/scijava/event/EventService.java index 2d4d36234..96d35aba1 100644 --- a/src/main/java/org/scijava/event/EventService.java +++ b/src/main/java/org/scijava/event/EventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventSubscriber.java b/src/main/java/org/scijava/event/EventSubscriber.java index 9fe27543f..69725c846 100644 --- a/src/main/java/org/scijava/event/EventSubscriber.java +++ b/src/main/java/org/scijava/event/EventSubscriber.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/SciJavaEvent.java b/src/main/java/org/scijava/event/SciJavaEvent.java index c2d23a37f..4adf94671 100644 --- a/src/main/java/org/scijava/event/SciJavaEvent.java +++ b/src/main/java/org/scijava/event/SciJavaEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/Accelerator.java b/src/main/java/org/scijava/input/Accelerator.java index cf19d15a5..4615ffd21 100644 --- a/src/main/java/org/scijava/input/Accelerator.java +++ b/src/main/java/org/scijava/input/Accelerator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/DefaultInputService.java b/src/main/java/org/scijava/input/DefaultInputService.java index 54a4c56b0..b31364f48 100644 --- a/src/main/java/org/scijava/input/DefaultInputService.java +++ b/src/main/java/org/scijava/input/DefaultInputService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/InputModifiers.java b/src/main/java/org/scijava/input/InputModifiers.java index e09651abc..51dca592c 100644 --- a/src/main/java/org/scijava/input/InputModifiers.java +++ b/src/main/java/org/scijava/input/InputModifiers.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/InputService.java b/src/main/java/org/scijava/input/InputService.java index 109c70636..5966c06d7 100644 --- a/src/main/java/org/scijava/input/InputService.java +++ b/src/main/java/org/scijava/input/InputService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/KeyCode.java b/src/main/java/org/scijava/input/KeyCode.java index 60250f4de..e09a75dd5 100644 --- a/src/main/java/org/scijava/input/KeyCode.java +++ b/src/main/java/org/scijava/input/KeyCode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/MouseCursor.java b/src/main/java/org/scijava/input/MouseCursor.java index 24910d279..e04d7d9da 100644 --- a/src/main/java/org/scijava/input/MouseCursor.java +++ b/src/main/java/org/scijava/input/MouseCursor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/AbstractIOPlugin.java b/src/main/java/org/scijava/io/AbstractIOPlugin.java index a8493340f..787879832 100644 --- a/src/main/java/org/scijava/io/AbstractIOPlugin.java +++ b/src/main/java/org/scijava/io/AbstractIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/AbstractTypedIOService.java b/src/main/java/org/scijava/io/AbstractTypedIOService.java index 2c93f3c88..4ca97bd1b 100644 --- a/src/main/java/org/scijava/io/AbstractTypedIOService.java +++ b/src/main/java/org/scijava/io/AbstractTypedIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/ByteArrayByteBank.java b/src/main/java/org/scijava/io/ByteArrayByteBank.java index 4617a2b3b..e3b833405 100644 --- a/src/main/java/org/scijava/io/ByteArrayByteBank.java +++ b/src/main/java/org/scijava/io/ByteArrayByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/ByteBank.java b/src/main/java/org/scijava/io/ByteBank.java index 9933b7298..c79cbd5d4 100644 --- a/src/main/java/org/scijava/io/ByteBank.java +++ b/src/main/java/org/scijava/io/ByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/DefaultIOService.java b/src/main/java/org/scijava/io/DefaultIOService.java index 0d08321c4..b59d2113d 100644 --- a/src/main/java/org/scijava/io/DefaultIOService.java +++ b/src/main/java/org/scijava/io/DefaultIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/DefaultRecentFileService.java b/src/main/java/org/scijava/io/DefaultRecentFileService.java index dc2f00418..050b22e78 100644 --- a/src/main/java/org/scijava/io/DefaultRecentFileService.java +++ b/src/main/java/org/scijava/io/DefaultRecentFileService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/IOPlugin.java b/src/main/java/org/scijava/io/IOPlugin.java index e7f3e68bc..118b693e2 100644 --- a/src/main/java/org/scijava/io/IOPlugin.java +++ b/src/main/java/org/scijava/io/IOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/IOService.java b/src/main/java/org/scijava/io/IOService.java index 038bc320f..499e18ea5 100644 --- a/src/main/java/org/scijava/io/IOService.java +++ b/src/main/java/org/scijava/io/IOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/RecentFileService.java b/src/main/java/org/scijava/io/RecentFileService.java index be9946e62..019d0a6a1 100644 --- a/src/main/java/org/scijava/io/RecentFileService.java +++ b/src/main/java/org/scijava/io/RecentFileService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/TypedIOService.java b/src/main/java/org/scijava/io/TypedIOService.java index c75fd4225..0439544e8 100644 --- a/src/main/java/org/scijava/io/TypedIOService.java +++ b/src/main/java/org/scijava/io/TypedIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/console/OpenArgument.java b/src/main/java/org/scijava/io/console/OpenArgument.java index 498dd39a8..a198a946e 100644 --- a/src/main/java/org/scijava/io/console/OpenArgument.java +++ b/src/main/java/org/scijava/io/console/OpenArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/DataOpenedEvent.java b/src/main/java/org/scijava/io/event/DataOpenedEvent.java index adad59e67..a13d20c18 100644 --- a/src/main/java/org/scijava/io/event/DataOpenedEvent.java +++ b/src/main/java/org/scijava/io/event/DataOpenedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/DataSavedEvent.java b/src/main/java/org/scijava/io/event/DataSavedEvent.java index a4b2ceb43..427da0e6a 100644 --- a/src/main/java/org/scijava/io/event/DataSavedEvent.java +++ b/src/main/java/org/scijava/io/event/DataSavedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/IOEvent.java b/src/main/java/org/scijava/io/event/IOEvent.java index 37e0e570b..f3ff1652a 100644 --- a/src/main/java/org/scijava/io/event/IOEvent.java +++ b/src/main/java/org/scijava/io/event/IOEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractDataHandle.java b/src/main/java/org/scijava/io/handle/AbstractDataHandle.java index 41ae3ce81..c9007e250 100644 --- a/src/main/java/org/scijava/io/handle/AbstractDataHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java b/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java index 99b9b5b07..fb191561c 100644 --- a/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java b/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java index 361c1ef42..838cc9229 100644 --- a/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java b/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java index 6debf7f7a..3c86730a8 100644 --- a/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/BytesHandle.java b/src/main/java/org/scijava/io/handle/BytesHandle.java index e45dde502..c967b1380 100644 --- a/src/main/java/org/scijava/io/handle/BytesHandle.java +++ b/src/main/java/org/scijava/io/handle/BytesHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandle.java b/src/main/java/org/scijava/io/handle/DataHandle.java index 641403570..7be53f5bb 100644 --- a/src/main/java/org/scijava/io/handle/DataHandle.java +++ b/src/main/java/org/scijava/io/handle/DataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleInputStream.java b/src/main/java/org/scijava/io/handle/DataHandleInputStream.java index bd0780c13..92e72dcab 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleInputStream.java +++ b/src/main/java/org/scijava/io/handle/DataHandleInputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java b/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java index 49349caa6..6b30e1c59 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java +++ b/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleService.java b/src/main/java/org/scijava/io/handle/DataHandleService.java index dbe4ccdbb..dfb5007f4 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleService.java +++ b/src/main/java/org/scijava/io/handle/DataHandleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandles.java b/src/main/java/org/scijava/io/handle/DataHandles.java index 3a26c109e..0ed55abc0 100644 --- a/src/main/java/org/scijava/io/handle/DataHandles.java +++ b/src/main/java/org/scijava/io/handle/DataHandles.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java b/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java index 70bb96137..1349653a6 100644 --- a/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java +++ b/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DummyHandle.java b/src/main/java/org/scijava/io/handle/DummyHandle.java index 37d143afe..a5b2754b9 100644 --- a/src/main/java/org/scijava/io/handle/DummyHandle.java +++ b/src/main/java/org/scijava/io/handle/DummyHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/FileHandle.java b/src/main/java/org/scijava/io/handle/FileHandle.java index 64e3fed06..ad9822101 100644 --- a/src/main/java/org/scijava/io/handle/FileHandle.java +++ b/src/main/java/org/scijava/io/handle/FileHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java index 991fde6cf..1d26e20c0 100644 --- a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java b/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java index 74bb85170..17859653a 100644 --- a/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java b/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java index 3031d5e30..1740b7b70 100644 --- a/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/StreamHandle.java b/src/main/java/org/scijava/io/handle/StreamHandle.java index cc34c567e..5a4169535 100644 --- a/src/main/java/org/scijava/io/handle/StreamHandle.java +++ b/src/main/java/org/scijava/io/handle/StreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java b/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java index ff1fe6ad5..db400b26a 100644 --- a/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractLocation.java b/src/main/java/org/scijava/io/location/AbstractLocation.java index a11750d63..a629c9b48 100644 --- a/src/main/java/org/scijava/io/location/AbstractLocation.java +++ b/src/main/java/org/scijava/io/location/AbstractLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractLocationResolver.java b/src/main/java/org/scijava/io/location/AbstractLocationResolver.java index 10e909deb..93616403e 100644 --- a/src/main/java/org/scijava/io/location/AbstractLocationResolver.java +++ b/src/main/java/org/scijava/io/location/AbstractLocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java b/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java index 0a7ca02dc..c36f21bbf 100644 --- a/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java +++ b/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/BrowsableLocation.java b/src/main/java/org/scijava/io/location/BrowsableLocation.java index 5e831059b..312df412c 100644 --- a/src/main/java/org/scijava/io/location/BrowsableLocation.java +++ b/src/main/java/org/scijava/io/location/BrowsableLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/BytesLocation.java b/src/main/java/org/scijava/io/location/BytesLocation.java index f79933193..0d6210d69 100644 --- a/src/main/java/org/scijava/io/location/BytesLocation.java +++ b/src/main/java/org/scijava/io/location/BytesLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/DefaultLocationService.java b/src/main/java/org/scijava/io/location/DefaultLocationService.java index a86971eba..92ba74047 100644 --- a/src/main/java/org/scijava/io/location/DefaultLocationService.java +++ b/src/main/java/org/scijava/io/location/DefaultLocationService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/DummyLocation.java b/src/main/java/org/scijava/io/location/DummyLocation.java index 2b6a8979f..676bd87df 100644 --- a/src/main/java/org/scijava/io/location/DummyLocation.java +++ b/src/main/java/org/scijava/io/location/DummyLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/FileLocation.java b/src/main/java/org/scijava/io/location/FileLocation.java index 073717716..03480c0ae 100644 --- a/src/main/java/org/scijava/io/location/FileLocation.java +++ b/src/main/java/org/scijava/io/location/FileLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/FileLocationResolver.java b/src/main/java/org/scijava/io/location/FileLocationResolver.java index b690802d8..b8d642d3e 100644 --- a/src/main/java/org/scijava/io/location/FileLocationResolver.java +++ b/src/main/java/org/scijava/io/location/FileLocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/Location.java b/src/main/java/org/scijava/io/location/Location.java index 11e935934..470c9cb22 100644 --- a/src/main/java/org/scijava/io/location/Location.java +++ b/src/main/java/org/scijava/io/location/Location.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/LocationResolver.java b/src/main/java/org/scijava/io/location/LocationResolver.java index 9c6ce6bc1..9dd2c650c 100644 --- a/src/main/java/org/scijava/io/location/LocationResolver.java +++ b/src/main/java/org/scijava/io/location/LocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/LocationService.java b/src/main/java/org/scijava/io/location/LocationService.java index 117611779..0d6104815 100644 --- a/src/main/java/org/scijava/io/location/LocationService.java +++ b/src/main/java/org/scijava/io/location/LocationService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/RemoteLocation.java b/src/main/java/org/scijava/io/location/RemoteLocation.java index b1b8007ed..f9bc1b608 100644 --- a/src/main/java/org/scijava/io/location/RemoteLocation.java +++ b/src/main/java/org/scijava/io/location/RemoteLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/URILocation.java b/src/main/java/org/scijava/io/location/URILocation.java index 5fb1318a5..3311412e0 100644 --- a/src/main/java/org/scijava/io/location/URILocation.java +++ b/src/main/java/org/scijava/io/location/URILocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/URLLocation.java b/src/main/java/org/scijava/io/location/URLLocation.java index a7938f43c..d7e4ed49e 100644 --- a/src/main/java/org/scijava/io/location/URLLocation.java +++ b/src/main/java/org/scijava/io/location/URLLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java b/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java index 3934d4f4e..8fb6b0c52 100644 --- a/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java +++ b/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/DefaultNIOService.java b/src/main/java/org/scijava/io/nio/DefaultNIOService.java index 6a6f9c702..8bff57a73 100644 --- a/src/main/java/org/scijava/io/nio/DefaultNIOService.java +++ b/src/main/java/org/scijava/io/nio/DefaultNIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/NIOService.java b/src/main/java/org/scijava/io/nio/NIOService.java index c750e2680..cbc8d681d 100644 --- a/src/main/java/org/scijava/io/nio/NIOService.java +++ b/src/main/java/org/scijava/io/nio/NIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/AbstractLogService.java b/src/main/java/org/scijava/log/AbstractLogService.java index 331879bb5..5ae980645 100644 --- a/src/main/java/org/scijava/log/AbstractLogService.java +++ b/src/main/java/org/scijava/log/AbstractLogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/CallingClassUtils.java b/src/main/java/org/scijava/log/CallingClassUtils.java index 55c8943e9..fc1250e78 100644 --- a/src/main/java/org/scijava/log/CallingClassUtils.java +++ b/src/main/java/org/scijava/log/CallingClassUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/DefaultLogger.java b/src/main/java/org/scijava/log/DefaultLogger.java index 3a261f2e2..f11ec5ae0 100644 --- a/src/main/java/org/scijava/log/DefaultLogger.java +++ b/src/main/java/org/scijava/log/DefaultLogger.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java b/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java index 83247b49a..d8d45c4d5 100644 --- a/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java +++ b/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/IgnoreAsCallingClass.java b/src/main/java/org/scijava/log/IgnoreAsCallingClass.java index 7dee3b2e9..775c7b4ff 100644 --- a/src/main/java/org/scijava/log/IgnoreAsCallingClass.java +++ b/src/main/java/org/scijava/log/IgnoreAsCallingClass.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogLevel.java b/src/main/java/org/scijava/log/LogLevel.java index 3b2524b5b..276970ae2 100644 --- a/src/main/java/org/scijava/log/LogLevel.java +++ b/src/main/java/org/scijava/log/LogLevel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogListener.java b/src/main/java/org/scijava/log/LogListener.java index c93a0680d..8c4047849 100644 --- a/src/main/java/org/scijava/log/LogListener.java +++ b/src/main/java/org/scijava/log/LogListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogMessage.java b/src/main/java/org/scijava/log/LogMessage.java index 7284bbe65..235de87f1 100644 --- a/src/main/java/org/scijava/log/LogMessage.java +++ b/src/main/java/org/scijava/log/LogMessage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogService.java b/src/main/java/org/scijava/log/LogService.java index 7e8ec0bec..4675e0eab 100644 --- a/src/main/java/org/scijava/log/LogService.java +++ b/src/main/java/org/scijava/log/LogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogSource.java b/src/main/java/org/scijava/log/LogSource.java index 4ecab5831..af8e6802e 100644 --- a/src/main/java/org/scijava/log/LogSource.java +++ b/src/main/java/org/scijava/log/LogSource.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/Logged.java b/src/main/java/org/scijava/log/Logged.java index 867ccb551..8e15caf9e 100644 --- a/src/main/java/org/scijava/log/Logged.java +++ b/src/main/java/org/scijava/log/Logged.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/Logger.java b/src/main/java/org/scijava/log/Logger.java index 657ae6fe0..eccb06796 100644 --- a/src/main/java/org/scijava/log/Logger.java +++ b/src/main/java/org/scijava/log/Logger.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/StderrLogService.java b/src/main/java/org/scijava/log/StderrLogService.java index 13919c18a..f387991d2 100644 --- a/src/main/java/org/scijava/log/StderrLogService.java +++ b/src/main/java/org/scijava/log/StderrLogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/DefaultMainService.java b/src/main/java/org/scijava/main/DefaultMainService.java index e141b6320..81677d5c2 100644 --- a/src/main/java/org/scijava/main/DefaultMainService.java +++ b/src/main/java/org/scijava/main/DefaultMainService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/MainService.java b/src/main/java/org/scijava/main/MainService.java index 2a04d13e6..f1e76b85f 100644 --- a/src/main/java/org/scijava/main/MainService.java +++ b/src/main/java/org/scijava/main/MainService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/console/MainArgument.java b/src/main/java/org/scijava/main/console/MainArgument.java index 1f0598ce7..71a116fb6 100644 --- a/src/main/java/org/scijava/main/console/MainArgument.java +++ b/src/main/java/org/scijava/main/console/MainArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/run/MainCodeRunner.java b/src/main/java/org/scijava/main/run/MainCodeRunner.java index 8b673eea1..f1da7f002 100644 --- a/src/main/java/org/scijava/main/run/MainCodeRunner.java +++ b/src/main/java/org/scijava/main/run/MainCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/AbstractMenuCreator.java b/src/main/java/org/scijava/menu/AbstractMenuCreator.java index 451db4217..8d076304c 100644 --- a/src/main/java/org/scijava/menu/AbstractMenuCreator.java +++ b/src/main/java/org/scijava/menu/AbstractMenuCreator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/DefaultMenuService.java b/src/main/java/org/scijava/menu/DefaultMenuService.java index 4b4fcca1e..287e28e5b 100644 --- a/src/main/java/org/scijava/menu/DefaultMenuService.java +++ b/src/main/java/org/scijava/menu/DefaultMenuService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuConstants.java b/src/main/java/org/scijava/menu/MenuConstants.java index 9b5c45d19..24e27506b 100644 --- a/src/main/java/org/scijava/menu/MenuConstants.java +++ b/src/main/java/org/scijava/menu/MenuConstants.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuCreator.java b/src/main/java/org/scijava/menu/MenuCreator.java index 83b1802db..d5ddc13d9 100644 --- a/src/main/java/org/scijava/menu/MenuCreator.java +++ b/src/main/java/org/scijava/menu/MenuCreator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuService.java b/src/main/java/org/scijava/menu/MenuService.java index a993825d9..1a9a98a13 100644 --- a/src/main/java/org/scijava/menu/MenuService.java +++ b/src/main/java/org/scijava/menu/MenuService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/ShadowMenu.java b/src/main/java/org/scijava/menu/ShadowMenu.java index a38bd3d96..a364d827e 100644 --- a/src/main/java/org/scijava/menu/ShadowMenu.java +++ b/src/main/java/org/scijava/menu/ShadowMenu.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/ShadowMenuIterator.java b/src/main/java/org/scijava/menu/ShadowMenuIterator.java index fb26e5f3f..5c1471f7d 100644 --- a/src/main/java/org/scijava/menu/ShadowMenuIterator.java +++ b/src/main/java/org/scijava/menu/ShadowMenuIterator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenuEvent.java b/src/main/java/org/scijava/menu/event/MenuEvent.java index f58a6a7ef..56a29995a 100644 --- a/src/main/java/org/scijava/menu/event/MenuEvent.java +++ b/src/main/java/org/scijava/menu/event/MenuEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusAddedEvent.java b/src/main/java/org/scijava/menu/event/MenusAddedEvent.java index 34684640e..77b4626d4 100644 --- a/src/main/java/org/scijava/menu/event/MenusAddedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java b/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java index f7d2779b3..717f4be7c 100644 --- a/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java b/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java index c403b8518..781a6c998 100644 --- a/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModule.java b/src/main/java/org/scijava/module/AbstractModule.java index 94a259fad..e30a52a1c 100644 --- a/src/main/java/org/scijava/module/AbstractModule.java +++ b/src/main/java/org/scijava/module/AbstractModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModuleInfo.java b/src/main/java/org/scijava/module/AbstractModuleInfo.java index 5c1b797f2..196b11ab5 100644 --- a/src/main/java/org/scijava/module/AbstractModuleInfo.java +++ b/src/main/java/org/scijava/module/AbstractModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModuleItem.java b/src/main/java/org/scijava/module/AbstractModuleItem.java index 665c1cb14..b96941e8d 100644 --- a/src/main/java/org/scijava/module/AbstractModuleItem.java +++ b/src/main/java/org/scijava/module/AbstractModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultModuleService.java b/src/main/java/org/scijava/module/DefaultModuleService.java index 171eb8ce2..228cee0b1 100644 --- a/src/main/java/org/scijava/module/DefaultModuleService.java +++ b/src/main/java/org/scijava/module/DefaultModuleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModule.java b/src/main/java/org/scijava/module/DefaultMutableModule.java index 801c3f468..29c28bdfb 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModule.java +++ b/src/main/java/org/scijava/module/DefaultMutableModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java b/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java index 18d5f1da2..a7b2c8de2 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java +++ b/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModuleItem.java b/src/main/java/org/scijava/module/DefaultMutableModuleItem.java index 27b2a241b..fc74b85d0 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModuleItem.java +++ b/src/main/java/org/scijava/module/DefaultMutableModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MethodCallException.java b/src/main/java/org/scijava/module/MethodCallException.java index eca9c26ff..823220f4c 100644 --- a/src/main/java/org/scijava/module/MethodCallException.java +++ b/src/main/java/org/scijava/module/MethodCallException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MethodRef.java b/src/main/java/org/scijava/module/MethodRef.java index 38bae5059..2761aaa25 100644 --- a/src/main/java/org/scijava/module/MethodRef.java +++ b/src/main/java/org/scijava/module/MethodRef.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/Module.java b/src/main/java/org/scijava/module/Module.java index eabfb9809..35ae5decd 100644 --- a/src/main/java/org/scijava/module/Module.java +++ b/src/main/java/org/scijava/module/Module.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleCanceledException.java b/src/main/java/org/scijava/module/ModuleCanceledException.java index 8978ddf0e..df33ba8c9 100644 --- a/src/main/java/org/scijava/module/ModuleCanceledException.java +++ b/src/main/java/org/scijava/module/ModuleCanceledException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleException.java b/src/main/java/org/scijava/module/ModuleException.java index 9c1af227d..59d490f17 100644 --- a/src/main/java/org/scijava/module/ModuleException.java +++ b/src/main/java/org/scijava/module/ModuleException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleIndex.java b/src/main/java/org/scijava/module/ModuleIndex.java index 86da5b169..f40875599 100644 --- a/src/main/java/org/scijava/module/ModuleIndex.java +++ b/src/main/java/org/scijava/module/ModuleIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleInfo.java b/src/main/java/org/scijava/module/ModuleInfo.java index 20186524e..bcf7107f5 100644 --- a/src/main/java/org/scijava/module/ModuleInfo.java +++ b/src/main/java/org/scijava/module/ModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleItem.java b/src/main/java/org/scijava/module/ModuleItem.java index 06a837c42..b226bcde0 100644 --- a/src/main/java/org/scijava/module/ModuleItem.java +++ b/src/main/java/org/scijava/module/ModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleRunner.java b/src/main/java/org/scijava/module/ModuleRunner.java index 705b33b61..0a4cff44e 100644 --- a/src/main/java/org/scijava/module/ModuleRunner.java +++ b/src/main/java/org/scijava/module/ModuleRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleService.java b/src/main/java/org/scijava/module/ModuleService.java index b2dbfd664..ffcbb4d0d 100644 --- a/src/main/java/org/scijava/module/ModuleService.java +++ b/src/main/java/org/scijava/module/ModuleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModule.java b/src/main/java/org/scijava/module/MutableModule.java index da6be43ef..294a7c66a 100644 --- a/src/main/java/org/scijava/module/MutableModule.java +++ b/src/main/java/org/scijava/module/MutableModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModuleInfo.java b/src/main/java/org/scijava/module/MutableModuleInfo.java index 378d04add..976603838 100644 --- a/src/main/java/org/scijava/module/MutableModuleInfo.java +++ b/src/main/java/org/scijava/module/MutableModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModuleItem.java b/src/main/java/org/scijava/module/MutableModuleItem.java index 9f7cf991f..fc3dfa6a0 100644 --- a/src/main/java/org/scijava/module/MutableModuleItem.java +++ b/src/main/java/org/scijava/module/MutableModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java b/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java index f79fc99fe..eef9c42d1 100644 --- a/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleEvent.java b/src/main/java/org/scijava/module/event/ModuleEvent.java index 59aad02fd..f059dd3a9 100644 --- a/src/main/java/org/scijava/module/event/ModuleEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java index 71644fcbd..f8b17ed12 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java index 0091f7019..e3ba97c10 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java index 257680232..3f6aa0c97 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java b/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java index ddf1205e9..d72d0cd07 100644 --- a/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java b/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java index e0b8f25af..6402c8e1a 100644 --- a/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java +++ b/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java b/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java index 6a702a26e..0eedb7c05 100644 --- a/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java +++ b/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleProcessEvent.java b/src/main/java/org/scijava/module/event/ModuleProcessEvent.java index 5c049fe41..8dba30973 100644 --- a/src/main/java/org/scijava/module/event/ModuleProcessEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleProcessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleStartedEvent.java b/src/main/java/org/scijava/module/event/ModuleStartedEvent.java index c26a07bc0..cbe7f0518 100644 --- a/src/main/java/org/scijava/module/event/ModuleStartedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleStartedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesAddedEvent.java b/src/main/java/org/scijava/module/event/ModulesAddedEvent.java index c49bdde61..8ef3dcf44 100644 --- a/src/main/java/org/scijava/module/event/ModulesAddedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesListEvent.java b/src/main/java/org/scijava/module/event/ModulesListEvent.java index 632bc88b5..7fba52f93 100644 --- a/src/main/java/org/scijava/module/event/ModulesListEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java b/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java index 049ceae3f..87b43a956 100644 --- a/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java b/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java index bd2cac2fc..610ad5a94 100644 --- a/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java b/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java index f39ca300e..8242389bb 100644 --- a/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java b/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java index 3fc4567c4..93d3726a2 100644 --- a/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java b/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java index b6b2bc72a..1fcdc7403 100644 --- a/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java +++ b/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java b/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java index 2b7a48798..d5323ad2f 100644 --- a/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DebugPostprocessor.java b/src/main/java/org/scijava/module/process/DebugPostprocessor.java index 9066ae88c..1927c68aa 100644 --- a/src/main/java/org/scijava/module/process/DebugPostprocessor.java +++ b/src/main/java/org/scijava/module/process/DebugPostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DebugPreprocessor.java b/src/main/java/org/scijava/module/process/DebugPreprocessor.java index a7d898206..69e9a0099 100644 --- a/src/main/java/org/scijava/module/process/DebugPreprocessor.java +++ b/src/main/java/org/scijava/module/process/DebugPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java b/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java index 9e1dd7178..7239743f9 100644 --- a/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java +++ b/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/GatewayPreprocessor.java b/src/main/java/org/scijava/module/process/GatewayPreprocessor.java index 095a0764d..86ad0eb5e 100644 --- a/src/main/java/org/scijava/module/process/GatewayPreprocessor.java +++ b/src/main/java/org/scijava/module/process/GatewayPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/InitPreprocessor.java b/src/main/java/org/scijava/module/process/InitPreprocessor.java index 31566a112..2ca0e647b 100644 --- a/src/main/java/org/scijava/module/process/InitPreprocessor.java +++ b/src/main/java/org/scijava/module/process/InitPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java b/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java index fc0db2aea..62b6ad5bd 100644 --- a/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java index f918dee36..6145337ac 100644 --- a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java +++ b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModulePostprocessor.java b/src/main/java/org/scijava/module/process/ModulePostprocessor.java index 16c781ee0..a64b52723 100644 --- a/src/main/java/org/scijava/module/process/ModulePostprocessor.java +++ b/src/main/java/org/scijava/module/process/ModulePostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModulePreprocessor.java b/src/main/java/org/scijava/module/process/ModulePreprocessor.java index 1735bf142..293610033 100644 --- a/src/main/java/org/scijava/module/process/ModulePreprocessor.java +++ b/src/main/java/org/scijava/module/process/ModulePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModuleProcessor.java b/src/main/java/org/scijava/module/process/ModuleProcessor.java index 47561dc45..c14c275b3 100644 --- a/src/main/java/org/scijava/module/process/ModuleProcessor.java +++ b/src/main/java/org/scijava/module/process/ModuleProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/PostprocessorPlugin.java b/src/main/java/org/scijava/module/process/PostprocessorPlugin.java index bff0bbe0e..07081b6c9 100644 --- a/src/main/java/org/scijava/module/process/PostprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/PostprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/PreprocessorPlugin.java b/src/main/java/org/scijava/module/process/PreprocessorPlugin.java index 85a1df8f9..66b10b86a 100644 --- a/src/main/java/org/scijava/module/process/PreprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/PreprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java b/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java index 92c0e772e..1998a76d1 100644 --- a/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ServicePreprocessor.java b/src/main/java/org/scijava/module/process/ServicePreprocessor.java index bce52f377..048f0da82 100644 --- a/src/main/java/org/scijava/module/process/ServicePreprocessor.java +++ b/src/main/java/org/scijava/module/process/ServicePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ValidityPreprocessor.java b/src/main/java/org/scijava/module/process/ValidityPreprocessor.java index a533e2da7..ac86b2020 100644 --- a/src/main/java/org/scijava/module/process/ValidityPreprocessor.java +++ b/src/main/java/org/scijava/module/process/ValidityPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/run/ModuleCodeRunner.java b/src/main/java/org/scijava/module/run/ModuleCodeRunner.java index 51fece17e..2ee78144c 100644 --- a/src/main/java/org/scijava/module/run/ModuleCodeRunner.java +++ b/src/main/java/org/scijava/module/run/ModuleCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/DefaultObjectService.java b/src/main/java/org/scijava/object/DefaultObjectService.java index 4c0e5af62..0b112b662 100644 --- a/src/main/java/org/scijava/object/DefaultObjectService.java +++ b/src/main/java/org/scijava/object/DefaultObjectService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/LazyObjects.java b/src/main/java/org/scijava/object/LazyObjects.java index fed095cc9..3fc476f79 100644 --- a/src/main/java/org/scijava/object/LazyObjects.java +++ b/src/main/java/org/scijava/object/LazyObjects.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/NamedObjectIndex.java b/src/main/java/org/scijava/object/NamedObjectIndex.java index f80e66077..9cd2aeae6 100644 --- a/src/main/java/org/scijava/object/NamedObjectIndex.java +++ b/src/main/java/org/scijava/object/NamedObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/ObjectIndex.java b/src/main/java/org/scijava/object/ObjectIndex.java index 1cf7d432c..e97521043 100644 --- a/src/main/java/org/scijava/object/ObjectIndex.java +++ b/src/main/java/org/scijava/object/ObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/ObjectService.java b/src/main/java/org/scijava/object/ObjectService.java index 3406eb167..392e476d5 100644 --- a/src/main/java/org/scijava/object/ObjectService.java +++ b/src/main/java/org/scijava/object/ObjectService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/SortedObjectIndex.java b/src/main/java/org/scijava/object/SortedObjectIndex.java index 2b5470e58..77b231a0c 100644 --- a/src/main/java/org/scijava/object/SortedObjectIndex.java +++ b/src/main/java/org/scijava/object/SortedObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ListEvent.java b/src/main/java/org/scijava/object/event/ListEvent.java index 176acf991..ecf3103e9 100644 --- a/src/main/java/org/scijava/object/event/ListEvent.java +++ b/src/main/java/org/scijava/object/event/ListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java b/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java index b17c86287..7f0615f4c 100644 --- a/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java b/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java index 58516916d..47fc3c88c 100644 --- a/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectEvent.java b/src/main/java/org/scijava/object/event/ObjectEvent.java index 7e7fd581a..80816a27b 100644 --- a/src/main/java/org/scijava/object/event/ObjectEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java b/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java index d2cb07ebf..966294653 100644 --- a/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java b/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java index 0ff9b213b..9da819a74 100644 --- a/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsListEvent.java b/src/main/java/org/scijava/object/event/ObjectsListEvent.java index 05f20d0f6..f9880b3e6 100644 --- a/src/main/java/org/scijava/object/event/ObjectsListEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java b/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java index 3d371eb9d..4a0872e99 100644 --- a/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/DefaultOptionsService.java b/src/main/java/org/scijava/options/DefaultOptionsService.java index 5266d4e45..7e44fb84a 100644 --- a/src/main/java/org/scijava/options/DefaultOptionsService.java +++ b/src/main/java/org/scijava/options/DefaultOptionsService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/OptionsPlugin.java b/src/main/java/org/scijava/options/OptionsPlugin.java index 900109983..bda0f4df2 100644 --- a/src/main/java/org/scijava/options/OptionsPlugin.java +++ b/src/main/java/org/scijava/options/OptionsPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/OptionsService.java b/src/main/java/org/scijava/options/OptionsService.java index 235853e40..72ead76f2 100644 --- a/src/main/java/org/scijava/options/OptionsService.java +++ b/src/main/java/org/scijava/options/OptionsService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/event/OptionsEvent.java b/src/main/java/org/scijava/options/event/OptionsEvent.java index de0a12a0c..48c53fffc 100644 --- a/src/main/java/org/scijava/options/event/OptionsEvent.java +++ b/src/main/java/org/scijava/options/event/OptionsEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/DefaultParseService.java b/src/main/java/org/scijava/parse/DefaultParseService.java index 21bc7d8d5..febbba898 100644 --- a/src/main/java/org/scijava/parse/DefaultParseService.java +++ b/src/main/java/org/scijava/parse/DefaultParseService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/Item.java b/src/main/java/org/scijava/parse/Item.java index 34547dc18..efb86a527 100644 --- a/src/main/java/org/scijava/parse/Item.java +++ b/src/main/java/org/scijava/parse/Item.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/Items.java b/src/main/java/org/scijava/parse/Items.java index 9d5a42df0..a54117481 100644 --- a/src/main/java/org/scijava/parse/Items.java +++ b/src/main/java/org/scijava/parse/Items.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/ParseService.java b/src/main/java/org/scijava/parse/ParseService.java index 4395c17f0..de88860dd 100644 --- a/src/main/java/org/scijava/parse/ParseService.java +++ b/src/main/java/org/scijava/parse/ParseService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/AbstractPlatform.java b/src/main/java/org/scijava/platform/AbstractPlatform.java index c3cee3fcc..6c8cfa5bc 100644 --- a/src/main/java/org/scijava/platform/AbstractPlatform.java +++ b/src/main/java/org/scijava/platform/AbstractPlatform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/AppEventService.java b/src/main/java/org/scijava/platform/AppEventService.java index 9811d86bb..26d2b4555 100644 --- a/src/main/java/org/scijava/platform/AppEventService.java +++ b/src/main/java/org/scijava/platform/AppEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultAppEventService.java b/src/main/java/org/scijava/platform/DefaultAppEventService.java index 291d3fce7..2101d8c04 100644 --- a/src/main/java/org/scijava/platform/DefaultAppEventService.java +++ b/src/main/java/org/scijava/platform/DefaultAppEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultPlatform.java b/src/main/java/org/scijava/platform/DefaultPlatform.java index 7815f8955..6d61317fe 100644 --- a/src/main/java/org/scijava/platform/DefaultPlatform.java +++ b/src/main/java/org/scijava/platform/DefaultPlatform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultPlatformService.java b/src/main/java/org/scijava/platform/DefaultPlatformService.java index 932048b0a..2a1c671ae 100644 --- a/src/main/java/org/scijava/platform/DefaultPlatformService.java +++ b/src/main/java/org/scijava/platform/DefaultPlatformService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/Platform.java b/src/main/java/org/scijava/platform/Platform.java index ea244411f..3a663bb85 100644 --- a/src/main/java/org/scijava/platform/Platform.java +++ b/src/main/java/org/scijava/platform/Platform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/PlatformService.java b/src/main/java/org/scijava/platform/PlatformService.java index 7c4ec53db..2f771bd35 100644 --- a/src/main/java/org/scijava/platform/PlatformService.java +++ b/src/main/java/org/scijava/platform/PlatformService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppAboutEvent.java b/src/main/java/org/scijava/platform/event/AppAboutEvent.java index 0e8f5c7f6..46eed9b31 100644 --- a/src/main/java/org/scijava/platform/event/AppAboutEvent.java +++ b/src/main/java/org/scijava/platform/event/AppAboutEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppFocusEvent.java b/src/main/java/org/scijava/platform/event/AppFocusEvent.java index 92163037a..36d5605a0 100644 --- a/src/main/java/org/scijava/platform/event/AppFocusEvent.java +++ b/src/main/java/org/scijava/platform/event/AppFocusEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java b/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java index 1e8fa0289..1e9dd3f9e 100644 --- a/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java +++ b/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java b/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java index 10afdd083..5b3bdcde1 100644 --- a/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java +++ b/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java b/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java index 08c44def8..2b4883129 100644 --- a/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java +++ b/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppPrintEvent.java b/src/main/java/org/scijava/platform/event/AppPrintEvent.java index 926421cd6..013a70e79 100644 --- a/src/main/java/org/scijava/platform/event/AppPrintEvent.java +++ b/src/main/java/org/scijava/platform/event/AppPrintEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppQuitEvent.java b/src/main/java/org/scijava/platform/event/AppQuitEvent.java index 0317cdcd6..de8d9be40 100644 --- a/src/main/java/org/scijava/platform/event/AppQuitEvent.java +++ b/src/main/java/org/scijava/platform/event/AppQuitEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppReOpenEvent.java b/src/main/java/org/scijava/platform/event/AppReOpenEvent.java index d05449948..907e83148 100644 --- a/src/main/java/org/scijava/platform/event/AppReOpenEvent.java +++ b/src/main/java/org/scijava/platform/event/AppReOpenEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java b/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java index 43776691f..fcedfd3a3 100644 --- a/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppSleepEvent.java b/src/main/java/org/scijava/platform/event/AppSleepEvent.java index 8b8278736..776b80fba 100644 --- a/src/main/java/org/scijava/platform/event/AppSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java b/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java index ccfd0d442..f7c426e3a 100644 --- a/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java b/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java index fc22d4198..e3ee34255 100644 --- a/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java +++ b/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppVisibleEvent.java b/src/main/java/org/scijava/platform/event/AppVisibleEvent.java index 27f833171..307895791 100644 --- a/src/main/java/org/scijava/platform/event/AppVisibleEvent.java +++ b/src/main/java/org/scijava/platform/event/AppVisibleEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/ApplicationEvent.java b/src/main/java/org/scijava/platform/event/ApplicationEvent.java index 79933bf37..0b359cd46 100644 --- a/src/main/java/org/scijava/platform/event/ApplicationEvent.java +++ b/src/main/java/org/scijava/platform/event/ApplicationEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java b/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java index 1ab4989e3..3187fcd23 100644 --- a/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractHandlerService.java b/src/main/java/org/scijava/plugin/AbstractHandlerService.java index 40088d311..4ede3e5aa 100644 --- a/src/main/java/org/scijava/plugin/AbstractHandlerService.java +++ b/src/main/java/org/scijava/plugin/AbstractHandlerService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractPTService.java b/src/main/java/org/scijava/plugin/AbstractPTService.java index 73a95c611..7d96d2770 100644 --- a/src/main/java/org/scijava/plugin/AbstractPTService.java +++ b/src/main/java/org/scijava/plugin/AbstractPTService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractRichPlugin.java b/src/main/java/org/scijava/plugin/AbstractRichPlugin.java index 7b6197cb9..2d53decac 100644 --- a/src/main/java/org/scijava/plugin/AbstractRichPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractRichPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractSingletonService.java b/src/main/java/org/scijava/plugin/AbstractSingletonService.java index 60b31c6c6..c54f26ee5 100644 --- a/src/main/java/org/scijava/plugin/AbstractSingletonService.java +++ b/src/main/java/org/scijava/plugin/AbstractSingletonService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java b/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java index 962918659..8d9e4a1f3 100644 --- a/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractTypedService.java b/src/main/java/org/scijava/plugin/AbstractTypedService.java index 6c46ef9c0..17ea8f400 100644 --- a/src/main/java/org/scijava/plugin/AbstractTypedService.java +++ b/src/main/java/org/scijava/plugin/AbstractTypedService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java b/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java index 41daaff61..26fcc5e47 100644 --- a/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractWrapperService.java b/src/main/java/org/scijava/plugin/AbstractWrapperService.java index df87969ea..516ad9d69 100644 --- a/src/main/java/org/scijava/plugin/AbstractWrapperService.java +++ b/src/main/java/org/scijava/plugin/AbstractWrapperService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Attr.java b/src/main/java/org/scijava/plugin/Attr.java index 1c8f6101e..d45a4f0b0 100644 --- a/src/main/java/org/scijava/plugin/Attr.java +++ b/src/main/java/org/scijava/plugin/Attr.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/DefaultPluginFinder.java b/src/main/java/org/scijava/plugin/DefaultPluginFinder.java index f8e0c9d49..99fc8fd18 100644 --- a/src/main/java/org/scijava/plugin/DefaultPluginFinder.java +++ b/src/main/java/org/scijava/plugin/DefaultPluginFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/DefaultPluginService.java b/src/main/java/org/scijava/plugin/DefaultPluginService.java index 0563024ae..02b905f56 100644 --- a/src/main/java/org/scijava/plugin/DefaultPluginService.java +++ b/src/main/java/org/scijava/plugin/DefaultPluginService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HandlerPlugin.java b/src/main/java/org/scijava/plugin/HandlerPlugin.java index f023888c2..b511aab11 100644 --- a/src/main/java/org/scijava/plugin/HandlerPlugin.java +++ b/src/main/java/org/scijava/plugin/HandlerPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HandlerService.java b/src/main/java/org/scijava/plugin/HandlerService.java index 4275ec970..1a2bfa119 100644 --- a/src/main/java/org/scijava/plugin/HandlerService.java +++ b/src/main/java/org/scijava/plugin/HandlerService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HasPluginInfo.java b/src/main/java/org/scijava/plugin/HasPluginInfo.java index 12c06b806..19c3da732 100644 --- a/src/main/java/org/scijava/plugin/HasPluginInfo.java +++ b/src/main/java/org/scijava/plugin/HasPluginInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Menu.java b/src/main/java/org/scijava/plugin/Menu.java index be5d37bdd..0c00e546b 100644 --- a/src/main/java/org/scijava/plugin/Menu.java +++ b/src/main/java/org/scijava/plugin/Menu.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PTService.java b/src/main/java/org/scijava/plugin/PTService.java index 72a0fc638..4feb02532 100644 --- a/src/main/java/org/scijava/plugin/PTService.java +++ b/src/main/java/org/scijava/plugin/PTService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Parameter.java b/src/main/java/org/scijava/plugin/Parameter.java index b419bc31e..0a41c094d 100644 --- a/src/main/java/org/scijava/plugin/Parameter.java +++ b/src/main/java/org/scijava/plugin/Parameter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Plugin.java b/src/main/java/org/scijava/plugin/Plugin.java index e44215498..a1f7af866 100644 --- a/src/main/java/org/scijava/plugin/Plugin.java +++ b/src/main/java/org/scijava/plugin/Plugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginFinder.java b/src/main/java/org/scijava/plugin/PluginFinder.java index 15f0fe877..0b9ff441e 100644 --- a/src/main/java/org/scijava/plugin/PluginFinder.java +++ b/src/main/java/org/scijava/plugin/PluginFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginIndex.java b/src/main/java/org/scijava/plugin/PluginIndex.java index 0fd466d23..73763ef03 100644 --- a/src/main/java/org/scijava/plugin/PluginIndex.java +++ b/src/main/java/org/scijava/plugin/PluginIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginInfo.java b/src/main/java/org/scijava/plugin/PluginInfo.java index ae48603ab..a9e4b5e09 100644 --- a/src/main/java/org/scijava/plugin/PluginInfo.java +++ b/src/main/java/org/scijava/plugin/PluginInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginService.java b/src/main/java/org/scijava/plugin/PluginService.java index c2d525c6a..07f44a6ca 100644 --- a/src/main/java/org/scijava/plugin/PluginService.java +++ b/src/main/java/org/scijava/plugin/PluginService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/RichPlugin.java b/src/main/java/org/scijava/plugin/RichPlugin.java index 1218852a6..d649eb5aa 100644 --- a/src/main/java/org/scijava/plugin/RichPlugin.java +++ b/src/main/java/org/scijava/plugin/RichPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SciJavaPlugin.java b/src/main/java/org/scijava/plugin/SciJavaPlugin.java index 3ed3fa771..ff4bd3c7a 100644 --- a/src/main/java/org/scijava/plugin/SciJavaPlugin.java +++ b/src/main/java/org/scijava/plugin/SciJavaPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SingletonPlugin.java b/src/main/java/org/scijava/plugin/SingletonPlugin.java index cd71d2be7..b26ee37cc 100644 --- a/src/main/java/org/scijava/plugin/SingletonPlugin.java +++ b/src/main/java/org/scijava/plugin/SingletonPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SingletonService.java b/src/main/java/org/scijava/plugin/SingletonService.java index 64f90005d..07c2ff091 100644 --- a/src/main/java/org/scijava/plugin/SingletonService.java +++ b/src/main/java/org/scijava/plugin/SingletonService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SortablePlugin.java b/src/main/java/org/scijava/plugin/SortablePlugin.java index 42c729638..e3ab8e244 100644 --- a/src/main/java/org/scijava/plugin/SortablePlugin.java +++ b/src/main/java/org/scijava/plugin/SortablePlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/TypedPlugin.java b/src/main/java/org/scijava/plugin/TypedPlugin.java index 4eb666f1d..26ae5468e 100644 --- a/src/main/java/org/scijava/plugin/TypedPlugin.java +++ b/src/main/java/org/scijava/plugin/TypedPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/TypedService.java b/src/main/java/org/scijava/plugin/TypedService.java index 42929b3b2..26f1c60bf 100644 --- a/src/main/java/org/scijava/plugin/TypedService.java +++ b/src/main/java/org/scijava/plugin/TypedService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/WrapperPlugin.java b/src/main/java/org/scijava/plugin/WrapperPlugin.java index a05355487..d867aeef8 100644 --- a/src/main/java/org/scijava/plugin/WrapperPlugin.java +++ b/src/main/java/org/scijava/plugin/WrapperPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/WrapperService.java b/src/main/java/org/scijava/plugin/WrapperService.java index fd6da8767..2377a9fef 100644 --- a/src/main/java/org/scijava/plugin/WrapperService.java +++ b/src/main/java/org/scijava/plugin/WrapperService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java b/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java index 38ff5c9c9..cae5e3792 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsListEvent.java b/src/main/java/org/scijava/plugin/event/PluginsListEvent.java index cd3fd6997..927d76bee 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsListEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java b/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java index 7f871aaeb..f46d54bf9 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/AbstractPrefService.java b/src/main/java/org/scijava/prefs/AbstractPrefService.java index f1dbfdf38..8fc849c20 100644 --- a/src/main/java/org/scijava/prefs/AbstractPrefService.java +++ b/src/main/java/org/scijava/prefs/AbstractPrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/DefaultPrefService.java b/src/main/java/org/scijava/prefs/DefaultPrefService.java index 47676d4b2..76a688924 100644 --- a/src/main/java/org/scijava/prefs/DefaultPrefService.java +++ b/src/main/java/org/scijava/prefs/DefaultPrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/PrefService.java b/src/main/java/org/scijava/prefs/PrefService.java index 5862a1895..9e787f436 100644 --- a/src/main/java/org/scijava/prefs/PrefService.java +++ b/src/main/java/org/scijava/prefs/PrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/AbstractCodeRunner.java b/src/main/java/org/scijava/run/AbstractCodeRunner.java index 7e5104dd9..37ebab4cb 100644 --- a/src/main/java/org/scijava/run/AbstractCodeRunner.java +++ b/src/main/java/org/scijava/run/AbstractCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/CodeRunner.java b/src/main/java/org/scijava/run/CodeRunner.java index e42a9aa6b..13062df91 100644 --- a/src/main/java/org/scijava/run/CodeRunner.java +++ b/src/main/java/org/scijava/run/CodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/DefaultRunService.java b/src/main/java/org/scijava/run/DefaultRunService.java index 5adef39f3..cb9a7249e 100644 --- a/src/main/java/org/scijava/run/DefaultRunService.java +++ b/src/main/java/org/scijava/run/DefaultRunService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/RunService.java b/src/main/java/org/scijava/run/RunService.java index d4a124b22..e0f8de3bb 100644 --- a/src/main/java/org/scijava/run/RunService.java +++ b/src/main/java/org/scijava/run/RunService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/console/RunArgument.java b/src/main/java/org/scijava/run/console/RunArgument.java index 0b3ba6bce..ba056a6e8 100644 --- a/src/main/java/org/scijava/run/console/RunArgument.java +++ b/src/main/java/org/scijava/run/console/RunArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractAutoCompleter.java b/src/main/java/org/scijava/script/AbstractAutoCompleter.java index 7846a8b68..b8368dbff 100644 --- a/src/main/java/org/scijava/script/AbstractAutoCompleter.java +++ b/src/main/java/org/scijava/script/AbstractAutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptContext.java b/src/main/java/org/scijava/script/AbstractScriptContext.java index 84942758b..abd258195 100644 --- a/src/main/java/org/scijava/script/AbstractScriptContext.java +++ b/src/main/java/org/scijava/script/AbstractScriptContext.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptEngine.java b/src/main/java/org/scijava/script/AbstractScriptEngine.java index 326eb216f..f306ee488 100644 --- a/src/main/java/org/scijava/script/AbstractScriptEngine.java +++ b/src/main/java/org/scijava/script/AbstractScriptEngine.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptHeader.java b/src/main/java/org/scijava/script/AbstractScriptHeader.java index 66385208f..41b3185bc 100644 --- a/src/main/java/org/scijava/script/AbstractScriptHeader.java +++ b/src/main/java/org/scijava/script/AbstractScriptHeader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptLanguage.java b/src/main/java/org/scijava/script/AbstractScriptLanguage.java index c537f8587..0f65a99c2 100644 --- a/src/main/java/org/scijava/script/AbstractScriptLanguage.java +++ b/src/main/java/org/scijava/script/AbstractScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AdaptedScriptEngine.java b/src/main/java/org/scijava/script/AdaptedScriptEngine.java index 5b0f15d9d..39c8012a3 100644 --- a/src/main/java/org/scijava/script/AdaptedScriptEngine.java +++ b/src/main/java/org/scijava/script/AdaptedScriptEngine.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java index f1f353939..ff96c74a3 100644 --- a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java +++ b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AutoCompleter.java b/src/main/java/org/scijava/script/AutoCompleter.java index 791676279..f56ec50fb 100644 --- a/src/main/java/org/scijava/script/AutoCompleter.java +++ b/src/main/java/org/scijava/script/AutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AutoCompletionResult.java b/src/main/java/org/scijava/script/AutoCompletionResult.java index e405df4c9..89ae99097 100644 --- a/src/main/java/org/scijava/script/AutoCompletionResult.java +++ b/src/main/java/org/scijava/script/AutoCompletionResult.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/CodeGenerator.java b/src/main/java/org/scijava/script/CodeGenerator.java index 9628ffb1f..7e95f1e78 100644 --- a/src/main/java/org/scijava/script/CodeGenerator.java +++ b/src/main/java/org/scijava/script/CodeGenerator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/CodeGeneratorJava.java b/src/main/java/org/scijava/script/CodeGeneratorJava.java index 97aa72ee4..7f75c39fd 100644 --- a/src/main/java/org/scijava/script/CodeGeneratorJava.java +++ b/src/main/java/org/scijava/script/CodeGeneratorJava.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultAutoCompleter.java b/src/main/java/org/scijava/script/DefaultAutoCompleter.java index 5196a5bd5..95bcc94c0 100644 --- a/src/main/java/org/scijava/script/DefaultAutoCompleter.java +++ b/src/main/java/org/scijava/script/DefaultAutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptHeaderService.java b/src/main/java/org/scijava/script/DefaultScriptHeaderService.java index ac88d9514..39941978e 100644 --- a/src/main/java/org/scijava/script/DefaultScriptHeaderService.java +++ b/src/main/java/org/scijava/script/DefaultScriptHeaderService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java index 8d0e9e994..147c141af 100644 --- a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java +++ b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptService.java b/src/main/java/org/scijava/script/DefaultScriptService.java index 4c5f3925d..188123998 100644 --- a/src/main/java/org/scijava/script/DefaultScriptService.java +++ b/src/main/java/org/scijava/script/DefaultScriptService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/InvocationObject.java b/src/main/java/org/scijava/script/InvocationObject.java index d78ef45bb..a7f373a7c 100644 --- a/src/main/java/org/scijava/script/InvocationObject.java +++ b/src/main/java/org/scijava/script/InvocationObject.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ParameterObject.java b/src/main/java/org/scijava/script/ParameterObject.java index a7bebe51b..184fb8209 100644 --- a/src/main/java/org/scijava/script/ParameterObject.java +++ b/src/main/java/org/scijava/script/ParameterObject.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptFinder.java b/src/main/java/org/scijava/script/ScriptFinder.java index 2608120d9..13f3fb37a 100644 --- a/src/main/java/org/scijava/script/ScriptFinder.java +++ b/src/main/java/org/scijava/script/ScriptFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptHeader.java b/src/main/java/org/scijava/script/ScriptHeader.java index 3a960398c..57ca01749 100644 --- a/src/main/java/org/scijava/script/ScriptHeader.java +++ b/src/main/java/org/scijava/script/ScriptHeader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptHeaderService.java b/src/main/java/org/scijava/script/ScriptHeaderService.java index 333555a40..692869a8f 100644 --- a/src/main/java/org/scijava/script/ScriptHeaderService.java +++ b/src/main/java/org/scijava/script/ScriptHeaderService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptInfo.java b/src/main/java/org/scijava/script/ScriptInfo.java index de1c7caae..02b6c46cf 100644 --- a/src/main/java/org/scijava/script/ScriptInfo.java +++ b/src/main/java/org/scijava/script/ScriptInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptInterpreter.java b/src/main/java/org/scijava/script/ScriptInterpreter.java index c889fe818..df59b6a36 100644 --- a/src/main/java/org/scijava/script/ScriptInterpreter.java +++ b/src/main/java/org/scijava/script/ScriptInterpreter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptLanguage.java b/src/main/java/org/scijava/script/ScriptLanguage.java index 73a86f94e..e8c1be0cc 100644 --- a/src/main/java/org/scijava/script/ScriptLanguage.java +++ b/src/main/java/org/scijava/script/ScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptLanguageIndex.java b/src/main/java/org/scijava/script/ScriptLanguageIndex.java index 84b202634..728c20831 100644 --- a/src/main/java/org/scijava/script/ScriptLanguageIndex.java +++ b/src/main/java/org/scijava/script/ScriptLanguageIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptModule.java b/src/main/java/org/scijava/script/ScriptModule.java index 2df926592..b10e504dc 100644 --- a/src/main/java/org/scijava/script/ScriptModule.java +++ b/src/main/java/org/scijava/script/ScriptModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptREPL.java b/src/main/java/org/scijava/script/ScriptREPL.java index bbc00fcbc..9c5be1528 100644 --- a/src/main/java/org/scijava/script/ScriptREPL.java +++ b/src/main/java/org/scijava/script/ScriptREPL.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptService.java b/src/main/java/org/scijava/script/ScriptService.java index 064ac980b..602883be0 100644 --- a/src/main/java/org/scijava/script/ScriptService.java +++ b/src/main/java/org/scijava/script/ScriptService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/console/RunScriptArgument.java b/src/main/java/org/scijava/script/console/RunScriptArgument.java index ff2e0c448..8389d55f6 100644 --- a/src/main/java/org/scijava/script/console/RunScriptArgument.java +++ b/src/main/java/org/scijava/script/console/RunScriptArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/io/ScriptIOPlugin.java b/src/main/java/org/scijava/script/io/ScriptIOPlugin.java index 80cf99e7d..da60b2357 100644 --- a/src/main/java/org/scijava/script/io/ScriptIOPlugin.java +++ b/src/main/java/org/scijava/script/io/ScriptIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java b/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java index 21ff9ebc0..3ad01f908 100644 --- a/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java +++ b/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java b/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java index c5260ffb8..231ef68c7 100644 --- a/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java b/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java index 9ef7ecd83..70e696f16 100644 --- a/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptCallback.java b/src/main/java/org/scijava/script/process/ScriptCallback.java index 41a347362..32ad3cebf 100644 --- a/src/main/java/org/scijava/script/process/ScriptCallback.java +++ b/src/main/java/org/scijava/script/process/ScriptCallback.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java b/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java index 9b7e49b86..cdf39b128 100644 --- a/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptProcessor.java b/src/main/java/org/scijava/script/process/ScriptProcessor.java index 23fae5d9a..e4d86a36e 100644 --- a/src/main/java/org/scijava/script/process/ScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptProcessorService.java b/src/main/java/org/scijava/script/process/ScriptProcessorService.java index 056bbd7be..458613b45 100644 --- a/src/main/java/org/scijava/script/process/ScriptProcessorService.java +++ b/src/main/java/org/scijava/script/process/ScriptProcessorService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java b/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java index 3aa87d4b9..5951b6dbb 100644 --- a/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/run/ScriptCodeRunner.java b/src/main/java/org/scijava/script/run/ScriptCodeRunner.java index 3ca981b0e..ac6535c89 100644 --- a/src/main/java/org/scijava/script/run/ScriptCodeRunner.java +++ b/src/main/java/org/scijava/script/run/ScriptCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/AbstractService.java b/src/main/java/org/scijava/service/AbstractService.java index a7c360ece..39062d6a8 100644 --- a/src/main/java/org/scijava/service/AbstractService.java +++ b/src/main/java/org/scijava/service/AbstractService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/SciJavaService.java b/src/main/java/org/scijava/service/SciJavaService.java index 993fcff82..afcad184a 100644 --- a/src/main/java/org/scijava/service/SciJavaService.java +++ b/src/main/java/org/scijava/service/SciJavaService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/Service.java b/src/main/java/org/scijava/service/Service.java index 83767672e..c11d3c2a8 100644 --- a/src/main/java/org/scijava/service/Service.java +++ b/src/main/java/org/scijava/service/Service.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/ServiceHelper.java b/src/main/java/org/scijava/service/ServiceHelper.java index 0af3dff5a..0e8db19d6 100644 --- a/src/main/java/org/scijava/service/ServiceHelper.java +++ b/src/main/java/org/scijava/service/ServiceHelper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/ServiceIndex.java b/src/main/java/org/scijava/service/ServiceIndex.java index fdba46c9a..9632da00d 100644 --- a/src/main/java/org/scijava/service/ServiceIndex.java +++ b/src/main/java/org/scijava/service/ServiceIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java b/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java index 84fb560c9..0a9e58c27 100644 --- a/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java +++ b/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/startup/DefaultStartupService.java b/src/main/java/org/scijava/startup/DefaultStartupService.java index de8ad6baa..4104c3d19 100644 --- a/src/main/java/org/scijava/startup/DefaultStartupService.java +++ b/src/main/java/org/scijava/startup/DefaultStartupService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/startup/StartupService.java b/src/main/java/org/scijava/startup/StartupService.java index 2b9d69d35..1dc08a2ee 100644 --- a/src/main/java/org/scijava/startup/StartupService.java +++ b/src/main/java/org/scijava/startup/StartupService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/DefaultTask.java b/src/main/java/org/scijava/task/DefaultTask.java index 54b69f8d0..44f1c3b30 100644 --- a/src/main/java/org/scijava/task/DefaultTask.java +++ b/src/main/java/org/scijava/task/DefaultTask.java @@ -2,17 +2,17 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE diff --git a/src/main/java/org/scijava/task/DefaultTaskService.java b/src/main/java/org/scijava/task/DefaultTaskService.java index 5b58f66ce..09375262a 100644 --- a/src/main/java/org/scijava/task/DefaultTaskService.java +++ b/src/main/java/org/scijava/task/DefaultTaskService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/Task.java b/src/main/java/org/scijava/task/Task.java index 4867954da..7e6b66062 100644 --- a/src/main/java/org/scijava/task/Task.java +++ b/src/main/java/org/scijava/task/Task.java @@ -2,17 +2,17 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE diff --git a/src/main/java/org/scijava/task/TaskService.java b/src/main/java/org/scijava/task/TaskService.java index 019709766..887acf804 100644 --- a/src/main/java/org/scijava/task/TaskService.java +++ b/src/main/java/org/scijava/task/TaskService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/event/TaskEvent.java b/src/main/java/org/scijava/task/event/TaskEvent.java index 9a6c68266..79d55f7d2 100644 --- a/src/main/java/org/scijava/task/event/TaskEvent.java +++ b/src/main/java/org/scijava/task/event/TaskEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/test/TestUtils.java b/src/main/java/org/scijava/test/TestUtils.java index 750b1d1a2..7f9c63075 100644 --- a/src/main/java/org/scijava/test/TestUtils.java +++ b/src/main/java/org/scijava/test/TestUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/AbstractTextFormat.java b/src/main/java/org/scijava/text/AbstractTextFormat.java index 928143097..202092996 100644 --- a/src/main/java/org/scijava/text/AbstractTextFormat.java +++ b/src/main/java/org/scijava/text/AbstractTextFormat.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/DefaultTextService.java b/src/main/java/org/scijava/text/DefaultTextService.java index 8739af515..dab8a2898 100644 --- a/src/main/java/org/scijava/text/DefaultTextService.java +++ b/src/main/java/org/scijava/text/DefaultTextService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/TextFormat.java b/src/main/java/org/scijava/text/TextFormat.java index fb4f0e23b..40a314e8a 100644 --- a/src/main/java/org/scijava/text/TextFormat.java +++ b/src/main/java/org/scijava/text/TextFormat.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/TextService.java b/src/main/java/org/scijava/text/TextService.java index d9e9fc9a1..8f640ba5f 100644 --- a/src/main/java/org/scijava/text/TextService.java +++ b/src/main/java/org/scijava/text/TextService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/DefaultTextIOService.java b/src/main/java/org/scijava/text/io/DefaultTextIOService.java index 219a6f06d..b1c9ad530 100644 --- a/src/main/java/org/scijava/text/io/DefaultTextIOService.java +++ b/src/main/java/org/scijava/text/io/DefaultTextIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/TextIOPlugin.java b/src/main/java/org/scijava/text/io/TextIOPlugin.java index e8f8172df..04018a44f 100644 --- a/src/main/java/org/scijava/text/io/TextIOPlugin.java +++ b/src/main/java/org/scijava/text/io/TextIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/TextIOService.java b/src/main/java/org/scijava/text/io/TextIOService.java index 24f105c64..42e36e64a 100644 --- a/src/main/java/org/scijava/text/io/TextIOService.java +++ b/src/main/java/org/scijava/text/io/TextIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/thread/DefaultThreadService.java b/src/main/java/org/scijava/thread/DefaultThreadService.java index bfcf79d0e..3262ee21d 100644 --- a/src/main/java/org/scijava/thread/DefaultThreadService.java +++ b/src/main/java/org/scijava/thread/DefaultThreadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/thread/ThreadService.java b/src/main/java/org/scijava/thread/ThreadService.java index b00f6fe80..afddb6f8f 100644 --- a/src/main/java/org/scijava/thread/ThreadService.java +++ b/src/main/java/org/scijava/thread/ThreadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/AbstractTool.java b/src/main/java/org/scijava/tool/AbstractTool.java index 22492cb2e..054fd1a8b 100644 --- a/src/main/java/org/scijava/tool/AbstractTool.java +++ b/src/main/java/org/scijava/tool/AbstractTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/CustomDrawnTool.java b/src/main/java/org/scijava/tool/CustomDrawnTool.java index 7eea24aa4..3a3905780 100644 --- a/src/main/java/org/scijava/tool/CustomDrawnTool.java +++ b/src/main/java/org/scijava/tool/CustomDrawnTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/DefaultToolService.java b/src/main/java/org/scijava/tool/DefaultToolService.java index 7aacdcee1..d78e1a53a 100644 --- a/src/main/java/org/scijava/tool/DefaultToolService.java +++ b/src/main/java/org/scijava/tool/DefaultToolService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/DummyTool.java b/src/main/java/org/scijava/tool/DummyTool.java index b6375479e..baef6dfe3 100644 --- a/src/main/java/org/scijava/tool/DummyTool.java +++ b/src/main/java/org/scijava/tool/DummyTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/IconDrawer.java b/src/main/java/org/scijava/tool/IconDrawer.java index a7cae7e4e..0d1b45824 100644 --- a/src/main/java/org/scijava/tool/IconDrawer.java +++ b/src/main/java/org/scijava/tool/IconDrawer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/IconService.java b/src/main/java/org/scijava/tool/IconService.java index b51a31be4..43ac9f66f 100644 --- a/src/main/java/org/scijava/tool/IconService.java +++ b/src/main/java/org/scijava/tool/IconService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/Tool.java b/src/main/java/org/scijava/tool/Tool.java index 664a20284..cadfcf115 100644 --- a/src/main/java/org/scijava/tool/Tool.java +++ b/src/main/java/org/scijava/tool/Tool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/ToolService.java b/src/main/java/org/scijava/tool/ToolService.java index 7d09765d9..a254a91e3 100644 --- a/src/main/java/org/scijava/tool/ToolService.java +++ b/src/main/java/org/scijava/tool/ToolService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java b/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java index 125a3b6ca..5142bbe18 100644 --- a/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java b/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java index 95d5a6e1a..7503eed17 100644 --- a/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolEvent.java b/src/main/java/org/scijava/tool/event/ToolEvent.java index 13967a4ed..6c6f1f185 100644 --- a/src/main/java/org/scijava/tool/event/ToolEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ARGBPlane.java b/src/main/java/org/scijava/ui/ARGBPlane.java index 9f223593c..5d7678f61 100644 --- a/src/main/java/org/scijava/ui/ARGBPlane.java +++ b/src/main/java/org/scijava/ui/ARGBPlane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java b/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java index a39e1aa89..9d12ab82f 100644 --- a/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java +++ b/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractUIInputWidget.java b/src/main/java/org/scijava/ui/AbstractUIInputWidget.java index c402a1f2e..394ec8829 100644 --- a/src/main/java/org/scijava/ui/AbstractUIInputWidget.java +++ b/src/main/java/org/scijava/ui/AbstractUIInputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractUserInterface.java b/src/main/java/org/scijava/ui/AbstractUserInterface.java index 2c9adba78..0c3e22da5 100644 --- a/src/main/java/org/scijava/ui/AbstractUserInterface.java +++ b/src/main/java/org/scijava/ui/AbstractUserInterface.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ApplicationFrame.java b/src/main/java/org/scijava/ui/ApplicationFrame.java index 10477bab6..dbda0cc80 100644 --- a/src/main/java/org/scijava/ui/ApplicationFrame.java +++ b/src/main/java/org/scijava/ui/ApplicationFrame.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/Arrangeable.java b/src/main/java/org/scijava/ui/Arrangeable.java index 0d082a58e..fb5a06dff 100644 --- a/src/main/java/org/scijava/ui/Arrangeable.java +++ b/src/main/java/org/scijava/ui/Arrangeable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/CloseConfirmable.java b/src/main/java/org/scijava/ui/CloseConfirmable.java index 4e6027ed6..56450088f 100644 --- a/src/main/java/org/scijava/ui/CloseConfirmable.java +++ b/src/main/java/org/scijava/ui/CloseConfirmable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/DefaultUIService.java b/src/main/java/org/scijava/ui/DefaultUIService.java index 06f8c8289..42899053b 100644 --- a/src/main/java/org/scijava/ui/DefaultUIService.java +++ b/src/main/java/org/scijava/ui/DefaultUIService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/Desktop.java b/src/main/java/org/scijava/ui/Desktop.java index db3920956..bfca746d9 100644 --- a/src/main/java/org/scijava/ui/Desktop.java +++ b/src/main/java/org/scijava/ui/Desktop.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/DialogPrompt.java b/src/main/java/org/scijava/ui/DialogPrompt.java index 9ec7c6f5c..26c0ede95 100644 --- a/src/main/java/org/scijava/ui/DialogPrompt.java +++ b/src/main/java/org/scijava/ui/DialogPrompt.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/FileListPreprocessor.java b/src/main/java/org/scijava/ui/FileListPreprocessor.java index 82ee890fa..13d8feb68 100644 --- a/src/main/java/org/scijava/ui/FileListPreprocessor.java +++ b/src/main/java/org/scijava/ui/FileListPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/FilePreprocessor.java b/src/main/java/org/scijava/ui/FilePreprocessor.java index c87674ef4..d03e43bc4 100644 --- a/src/main/java/org/scijava/ui/FilePreprocessor.java +++ b/src/main/java/org/scijava/ui/FilePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/StatusBar.java b/src/main/java/org/scijava/ui/StatusBar.java index 695d28cdb..9b6b71377 100644 --- a/src/main/java/org/scijava/ui/StatusBar.java +++ b/src/main/java/org/scijava/ui/StatusBar.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/SystemClipboard.java b/src/main/java/org/scijava/ui/SystemClipboard.java index 694d9dbd2..8eb4e8bf6 100644 --- a/src/main/java/org/scijava/ui/SystemClipboard.java +++ b/src/main/java/org/scijava/ui/SystemClipboard.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ToolBar.java b/src/main/java/org/scijava/ui/ToolBar.java index 5fdd4cdc7..95a137aa5 100644 --- a/src/main/java/org/scijava/ui/ToolBar.java +++ b/src/main/java/org/scijava/ui/ToolBar.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UIPreprocessor.java b/src/main/java/org/scijava/ui/UIPreprocessor.java index 4d726baed..87a755a14 100644 --- a/src/main/java/org/scijava/ui/UIPreprocessor.java +++ b/src/main/java/org/scijava/ui/UIPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UIService.java b/src/main/java/org/scijava/ui/UIService.java index 82a35a686..d3111bb3e 100644 --- a/src/main/java/org/scijava/ui/UIService.java +++ b/src/main/java/org/scijava/ui/UIService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UserInterface.java b/src/main/java/org/scijava/ui/UserInterface.java index 7c1654dbd..162532dac 100644 --- a/src/main/java/org/scijava/ui/UserInterface.java +++ b/src/main/java/org/scijava/ui/UserInterface.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/AbstractConsolePane.java b/src/main/java/org/scijava/ui/console/AbstractConsolePane.java index 57fcdfe26..db4817ceb 100644 --- a/src/main/java/org/scijava/ui/console/AbstractConsolePane.java +++ b/src/main/java/org/scijava/ui/console/AbstractConsolePane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/ConsolePane.java b/src/main/java/org/scijava/ui/console/ConsolePane.java index bd347f69e..7145ed54a 100644 --- a/src/main/java/org/scijava/ui/console/ConsolePane.java +++ b/src/main/java/org/scijava/ui/console/ConsolePane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/HeadlessArgument.java b/src/main/java/org/scijava/ui/console/HeadlessArgument.java index 0aa658fc1..3a10f459d 100644 --- a/src/main/java/org/scijava/ui/console/HeadlessArgument.java +++ b/src/main/java/org/scijava/ui/console/HeadlessArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/ShowUIArgument.java b/src/main/java/org/scijava/ui/console/ShowUIArgument.java index 9489db54f..9d0c1161b 100644 --- a/src/main/java/org/scijava/ui/console/ShowUIArgument.java +++ b/src/main/java/org/scijava/ui/console/ShowUIArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/UIArgument.java b/src/main/java/org/scijava/ui/console/UIArgument.java index e454ee13e..0deeba42b 100644 --- a/src/main/java/org/scijava/ui/console/UIArgument.java +++ b/src/main/java/org/scijava/ui/console/UIArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java index 364ee52c3..09e3efb79 100644 --- a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java index f311b89fe..05d350bd7 100644 --- a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java index 17f007443..0529ea7c5 100644 --- a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java index b542e7405..524f5a887 100644 --- a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java +++ b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropData.java b/src/main/java/org/scijava/ui/dnd/DragAndDropData.java index 391064a8b..d5924bbbc 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java index 0de0dd56a..4f7d47043 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropService.java b/src/main/java/org/scijava/ui/dnd/DragAndDropService.java index bb999c01b..a7b394407 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropService.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java index 7b8a0ff34..11aa98108 100644 --- a/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java index fba1ac075..9ca0833ca 100644 --- a/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/MIMEType.java b/src/main/java/org/scijava/ui/dnd/MIMEType.java index 90c539fa4..c5fd7ec61 100644 --- a/src/main/java/org/scijava/ui/dnd/MIMEType.java +++ b/src/main/java/org/scijava/ui/dnd/MIMEType.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java index b519354aa..a798ff7ec 100644 --- a/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java index 2b06f058f..20c240ead 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java index da9285286..f219555ab 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java index 11b1ad1a8..fbe9b6ce1 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java index b2f3cfe4b..f0376b017 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DropEvent.java b/src/main/java/org/scijava/ui/dnd/event/DropEvent.java index 99ca4f859..0fd7677e6 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DropEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DropEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/event/UIEvent.java b/src/main/java/org/scijava/ui/event/UIEvent.java index 6f80f9f88..0f4e3a9b0 100644 --- a/src/main/java/org/scijava/ui/event/UIEvent.java +++ b/src/main/java/org/scijava/ui/event/UIEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/event/UIShownEvent.java b/src/main/java/org/scijava/ui/event/UIShownEvent.java index 2de8238eb..d7b893f3c 100644 --- a/src/main/java/org/scijava/ui/event/UIShownEvent.java +++ b/src/main/java/org/scijava/ui/event/UIShownEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java b/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java index 31bea8a62..3352913e3 100644 --- a/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java +++ b/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headless/HeadlessUI.java b/src/main/java/org/scijava/ui/headless/HeadlessUI.java index bf2c128af..c8aceb5ae 100644 --- a/src/main/java/org/scijava/ui/headless/HeadlessUI.java +++ b/src/main/java/org/scijava/ui/headless/HeadlessUI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java b/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java index 4efc3fd1f..96f51ff72 100644 --- a/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java +++ b/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java index 1cc70a7a9..35cefdadc 100644 --- a/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayPanel.java b/src/main/java/org/scijava/ui/viewer/DisplayPanel.java index 786a95a2d..f438822c0 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayPanel.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayViewer.java b/src/main/java/org/scijava/ui/viewer/DisplayViewer.java index 3805bf1a7..657e860b5 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayWindow.java b/src/main/java/org/scijava/ui/viewer/DisplayWindow.java index a990d1a48..d9d4945c4 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayWindow.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayWindow.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java index 9cd858082..2b6e93004 100644 --- a/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java b/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java index 59b9e5068..3f0ba3fec 100644 --- a/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java +++ b/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java index 7937f7a2b..302a6f41a 100644 --- a/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/AbstractPrimitiveArray.java b/src/main/java/org/scijava/util/AbstractPrimitiveArray.java index 71f620135..735f286b0 100644 --- a/src/main/java/org/scijava/util/AbstractPrimitiveArray.java +++ b/src/main/java/org/scijava/util/AbstractPrimitiveArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/AppUtils.java b/src/main/java/org/scijava/util/AppUtils.java index 4e7038849..e83e06798 100644 --- a/src/main/java/org/scijava/util/AppUtils.java +++ b/src/main/java/org/scijava/util/AppUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ArrayUtils.java b/src/main/java/org/scijava/util/ArrayUtils.java index 3dae18ade..c6487c5cf 100644 --- a/src/main/java/org/scijava/util/ArrayUtils.java +++ b/src/main/java/org/scijava/util/ArrayUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/BoolArray.java b/src/main/java/org/scijava/util/BoolArray.java index 13e378677..72e192bbe 100644 --- a/src/main/java/org/scijava/util/BoolArray.java +++ b/src/main/java/org/scijava/util/BoolArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ByteArray.java b/src/main/java/org/scijava/util/ByteArray.java index 5803f10b9..f1e831c0e 100644 --- a/src/main/java/org/scijava/util/ByteArray.java +++ b/src/main/java/org/scijava/util/ByteArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Bytes.java b/src/main/java/org/scijava/util/Bytes.java index bdf52bbcb..fbce5e167 100644 --- a/src/main/java/org/scijava/util/Bytes.java +++ b/src/main/java/org/scijava/util/Bytes.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CharArray.java b/src/main/java/org/scijava/util/CharArray.java index 1816709d7..bfe0ae73e 100644 --- a/src/main/java/org/scijava/util/CharArray.java +++ b/src/main/java/org/scijava/util/CharArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CheckSezpoz.java b/src/main/java/org/scijava/util/CheckSezpoz.java index dcb6c17ee..459260f05 100644 --- a/src/main/java/org/scijava/util/CheckSezpoz.java +++ b/src/main/java/org/scijava/util/CheckSezpoz.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ClassUtils.java b/src/main/java/org/scijava/util/ClassUtils.java index 12a727530..d9d3b2f67 100644 --- a/src/main/java/org/scijava/util/ClassUtils.java +++ b/src/main/java/org/scijava/util/ClassUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ColorRGB.java b/src/main/java/org/scijava/util/ColorRGB.java index c90ee211a..129eaf5f4 100644 --- a/src/main/java/org/scijava/util/ColorRGB.java +++ b/src/main/java/org/scijava/util/ColorRGB.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ColorRGBA.java b/src/main/java/org/scijava/util/ColorRGBA.java index 4cdf59c25..b7c55622b 100644 --- a/src/main/java/org/scijava/util/ColorRGBA.java +++ b/src/main/java/org/scijava/util/ColorRGBA.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Colors.java b/src/main/java/org/scijava/util/Colors.java index 35b3486e4..f32b4fad9 100644 --- a/src/main/java/org/scijava/util/Colors.java +++ b/src/main/java/org/scijava/util/Colors.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CombineAnnotations.java b/src/main/java/org/scijava/util/CombineAnnotations.java index 1b4676bca..002659f4a 100644 --- a/src/main/java/org/scijava/util/CombineAnnotations.java +++ b/src/main/java/org/scijava/util/CombineAnnotations.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Combiner.java b/src/main/java/org/scijava/util/Combiner.java index b8f4c25a7..e4babbe96 100644 --- a/src/main/java/org/scijava/util/Combiner.java +++ b/src/main/java/org/scijava/util/Combiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ConversionUtils.java b/src/main/java/org/scijava/util/ConversionUtils.java index a90039651..99b30254c 100644 --- a/src/main/java/org/scijava/util/ConversionUtils.java +++ b/src/main/java/org/scijava/util/ConversionUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DebugUtils.java b/src/main/java/org/scijava/util/DebugUtils.java index f2d3a3de5..4e88f180b 100644 --- a/src/main/java/org/scijava/util/DebugUtils.java +++ b/src/main/java/org/scijava/util/DebugUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DefaultTreeNode.java b/src/main/java/org/scijava/util/DefaultTreeNode.java index 7b2e2f529..db60c7673 100644 --- a/src/main/java/org/scijava/util/DefaultTreeNode.java +++ b/src/main/java/org/scijava/util/DefaultTreeNode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DigestUtils.java b/src/main/java/org/scijava/util/DigestUtils.java index cc862f321..b78af02ae 100644 --- a/src/main/java/org/scijava/util/DigestUtils.java +++ b/src/main/java/org/scijava/util/DigestUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DoubleArray.java b/src/main/java/org/scijava/util/DoubleArray.java index b54ed91e3..928d62af6 100644 --- a/src/main/java/org/scijava/util/DoubleArray.java +++ b/src/main/java/org/scijava/util/DoubleArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/FileUtils.java b/src/main/java/org/scijava/util/FileUtils.java index cd1eb3781..4de14f37f 100644 --- a/src/main/java/org/scijava/util/FileUtils.java +++ b/src/main/java/org/scijava/util/FileUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/FloatArray.java b/src/main/java/org/scijava/util/FloatArray.java index e3eab4d3d..f232814d6 100644 --- a/src/main/java/org/scijava/util/FloatArray.java +++ b/src/main/java/org/scijava/util/FloatArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/GenericUtils.java b/src/main/java/org/scijava/util/GenericUtils.java index b1e623e12..fd5d3e9a7 100644 --- a/src/main/java/org/scijava/util/GenericUtils.java +++ b/src/main/java/org/scijava/util/GenericUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntArray.java b/src/main/java/org/scijava/util/IntArray.java index 491dbdc35..6d0086a17 100644 --- a/src/main/java/org/scijava/util/IntArray.java +++ b/src/main/java/org/scijava/util/IntArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntCoords.java b/src/main/java/org/scijava/util/IntCoords.java index 3232d6634..80d18eafc 100644 --- a/src/main/java/org/scijava/util/IntCoords.java +++ b/src/main/java/org/scijava/util/IntCoords.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntRect.java b/src/main/java/org/scijava/util/IntRect.java index 0d6c621cd..508fc5eeb 100644 --- a/src/main/java/org/scijava/util/IntRect.java +++ b/src/main/java/org/scijava/util/IntRect.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IteratorPlus.java b/src/main/java/org/scijava/util/IteratorPlus.java index 07a2699a1..990246fd9 100644 --- a/src/main/java/org/scijava/util/IteratorPlus.java +++ b/src/main/java/org/scijava/util/IteratorPlus.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LastRecentlyUsed.java b/src/main/java/org/scijava/util/LastRecentlyUsed.java index baa11ea6d..84ea1ecb8 100644 --- a/src/main/java/org/scijava/util/LastRecentlyUsed.java +++ b/src/main/java/org/scijava/util/LastRecentlyUsed.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LineOutputStream.java b/src/main/java/org/scijava/util/LineOutputStream.java index befb5c3d8..38b014a14 100644 --- a/src/main/java/org/scijava/util/LineOutputStream.java +++ b/src/main/java/org/scijava/util/LineOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ListUtils.java b/src/main/java/org/scijava/util/ListUtils.java index 781980da9..170124839 100644 --- a/src/main/java/org/scijava/util/ListUtils.java +++ b/src/main/java/org/scijava/util/ListUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LongArray.java b/src/main/java/org/scijava/util/LongArray.java index e8fdab952..61ffed4a9 100644 --- a/src/main/java/org/scijava/util/LongArray.java +++ b/src/main/java/org/scijava/util/LongArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Manifest.java b/src/main/java/org/scijava/util/Manifest.java index 460becff0..807eaa05f 100644 --- a/src/main/java/org/scijava/util/Manifest.java +++ b/src/main/java/org/scijava/util/Manifest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MersenneTwisterFast.java b/src/main/java/org/scijava/util/MersenneTwisterFast.java index 8b781c8e9..2abb4d206 100644 --- a/src/main/java/org/scijava/util/MersenneTwisterFast.java +++ b/src/main/java/org/scijava/util/MersenneTwisterFast.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MetaInfCombiner.java b/src/main/java/org/scijava/util/MetaInfCombiner.java index 66df0b78b..745c39195 100644 --- a/src/main/java/org/scijava/util/MetaInfCombiner.java +++ b/src/main/java/org/scijava/util/MetaInfCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MirrorWebsite.java b/src/main/java/org/scijava/util/MirrorWebsite.java index 08e7f6ccb..d8f076e40 100644 --- a/src/main/java/org/scijava/util/MirrorWebsite.java +++ b/src/main/java/org/scijava/util/MirrorWebsite.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MiscUtils.java b/src/main/java/org/scijava/util/MiscUtils.java index fffae00f5..492e2150e 100644 --- a/src/main/java/org/scijava/util/MiscUtils.java +++ b/src/main/java/org/scijava/util/MiscUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/NumberUtils.java b/src/main/java/org/scijava/util/NumberUtils.java index 1a77f54d6..ea9f684ac 100644 --- a/src/main/java/org/scijava/util/NumberUtils.java +++ b/src/main/java/org/scijava/util/NumberUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ObjectArray.java b/src/main/java/org/scijava/util/ObjectArray.java index 252a551a1..2564da853 100644 --- a/src/main/java/org/scijava/util/ObjectArray.java +++ b/src/main/java/org/scijava/util/ObjectArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/POM.java b/src/main/java/org/scijava/util/POM.java index 2517c09ed..8de96e17f 100644 --- a/src/main/java/org/scijava/util/POM.java +++ b/src/main/java/org/scijava/util/POM.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/PlatformUtils.java b/src/main/java/org/scijava/util/PlatformUtils.java index 1dbf798a0..d1b82104d 100644 --- a/src/main/java/org/scijava/util/PlatformUtils.java +++ b/src/main/java/org/scijava/util/PlatformUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Prefs.java b/src/main/java/org/scijava/util/Prefs.java index d013b489c..f946b587f 100644 --- a/src/main/java/org/scijava/util/Prefs.java +++ b/src/main/java/org/scijava/util/Prefs.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/PrimitiveArray.java b/src/main/java/org/scijava/util/PrimitiveArray.java index 694a5d1e2..8e72eb8ec 100644 --- a/src/main/java/org/scijava/util/PrimitiveArray.java +++ b/src/main/java/org/scijava/util/PrimitiveArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ProcessUtils.java b/src/main/java/org/scijava/util/ProcessUtils.java index 00be9935b..698b1ae78 100644 --- a/src/main/java/org/scijava/util/ProcessUtils.java +++ b/src/main/java/org/scijava/util/ProcessUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Query.java b/src/main/java/org/scijava/util/Query.java index eb9e40e13..2973c004e 100644 --- a/src/main/java/org/scijava/util/Query.java +++ b/src/main/java/org/scijava/util/Query.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReadInto.java b/src/main/java/org/scijava/util/ReadInto.java index b6292da6a..5e822926b 100644 --- a/src/main/java/org/scijava/util/ReadInto.java +++ b/src/main/java/org/scijava/util/ReadInto.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/RealCoords.java b/src/main/java/org/scijava/util/RealCoords.java index bb2038ed5..d55f0cdfe 100644 --- a/src/main/java/org/scijava/util/RealCoords.java +++ b/src/main/java/org/scijava/util/RealCoords.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/RealRect.java b/src/main/java/org/scijava/util/RealRect.java index e39fe223e..c58fbb7a8 100644 --- a/src/main/java/org/scijava/util/RealRect.java +++ b/src/main/java/org/scijava/util/RealRect.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReflectException.java b/src/main/java/org/scijava/util/ReflectException.java index 3dc5d5fde..2096b73cf 100644 --- a/src/main/java/org/scijava/util/ReflectException.java +++ b/src/main/java/org/scijava/util/ReflectException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReflectedUniverse.java b/src/main/java/org/scijava/util/ReflectedUniverse.java index 444f7aa13..53c0e0ab7 100644 --- a/src/main/java/org/scijava/util/ReflectedUniverse.java +++ b/src/main/java/org/scijava/util/ReflectedUniverse.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ServiceCombiner.java b/src/main/java/org/scijava/util/ServiceCombiner.java index d6d80b4d5..65bf24190 100644 --- a/src/main/java/org/scijava/util/ServiceCombiner.java +++ b/src/main/java/org/scijava/util/ServiceCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ShortArray.java b/src/main/java/org/scijava/util/ShortArray.java index 967279cb8..50ca80a10 100644 --- a/src/main/java/org/scijava/util/ShortArray.java +++ b/src/main/java/org/scijava/util/ShortArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Sizable.java b/src/main/java/org/scijava/util/Sizable.java index 415e5cda8..b4939d7c8 100644 --- a/src/main/java/org/scijava/util/Sizable.java +++ b/src/main/java/org/scijava/util/Sizable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/SizableArrayList.java b/src/main/java/org/scijava/util/SizableArrayList.java index 56f37d9a3..163ae5939 100644 --- a/src/main/java/org/scijava/util/SizableArrayList.java +++ b/src/main/java/org/scijava/util/SizableArrayList.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/StringMaker.java b/src/main/java/org/scijava/util/StringMaker.java index 35e57613f..97af599da 100644 --- a/src/main/java/org/scijava/util/StringMaker.java +++ b/src/main/java/org/scijava/util/StringMaker.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/StringUtils.java b/src/main/java/org/scijava/util/StringUtils.java index 9bc7a5eb6..6516777b2 100644 --- a/src/main/java/org/scijava/util/StringUtils.java +++ b/src/main/java/org/scijava/util/StringUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Timing.java b/src/main/java/org/scijava/util/Timing.java index 3cb1b2ad9..d533840f6 100644 --- a/src/main/java/org/scijava/util/Timing.java +++ b/src/main/java/org/scijava/util/Timing.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/TreeNode.java b/src/main/java/org/scijava/util/TreeNode.java index 5bea3299e..a0ed8a293 100644 --- a/src/main/java/org/scijava/util/TreeNode.java +++ b/src/main/java/org/scijava/util/TreeNode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/TunePlayer.java b/src/main/java/org/scijava/util/TunePlayer.java index 5b67f2573..a59e2019b 100644 --- a/src/main/java/org/scijava/util/TunePlayer.java +++ b/src/main/java/org/scijava/util/TunePlayer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Types.java b/src/main/java/org/scijava/util/Types.java index 6044ba831..441516eaa 100644 --- a/src/main/java/org/scijava/util/Types.java +++ b/src/main/java/org/scijava/util/Types.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/UnitUtils.java b/src/main/java/org/scijava/util/UnitUtils.java index 55934b8be..1d45f7aac 100644 --- a/src/main/java/org/scijava/util/UnitUtils.java +++ b/src/main/java/org/scijava/util/UnitUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/VersionUtils.java b/src/main/java/org/scijava/util/VersionUtils.java index f207865b4..994a4aa71 100644 --- a/src/main/java/org/scijava/util/VersionUtils.java +++ b/src/main/java/org/scijava/util/VersionUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/XML.java b/src/main/java/org/scijava/util/XML.java index c9edda41b..e1b570d37 100644 --- a/src/main/java/org/scijava/util/XML.java +++ b/src/main/java/org/scijava/util/XML.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/DefaultWelcomeService.java b/src/main/java/org/scijava/welcome/DefaultWelcomeService.java index 70781baae..186b28260 100644 --- a/src/main/java/org/scijava/welcome/DefaultWelcomeService.java +++ b/src/main/java/org/scijava/welcome/DefaultWelcomeService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/WelcomeService.java b/src/main/java/org/scijava/welcome/WelcomeService.java index afababa6e..c7a1ec948 100644 --- a/src/main/java/org/scijava/welcome/WelcomeService.java +++ b/src/main/java/org/scijava/welcome/WelcomeService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/event/WelcomeEvent.java b/src/main/java/org/scijava/welcome/event/WelcomeEvent.java index b84d124b5..8ea1f3424 100644 --- a/src/main/java/org/scijava/welcome/event/WelcomeEvent.java +++ b/src/main/java/org/scijava/welcome/event/WelcomeEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputHarvester.java b/src/main/java/org/scijava/widget/AbstractInputHarvester.java index 52ee74ae9..1f65ae1d5 100644 --- a/src/main/java/org/scijava/widget/AbstractInputHarvester.java +++ b/src/main/java/org/scijava/widget/AbstractInputHarvester.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputPanel.java b/src/main/java/org/scijava/widget/AbstractInputPanel.java index da306e7f2..2a8bb49a5 100644 --- a/src/main/java/org/scijava/widget/AbstractInputPanel.java +++ b/src/main/java/org/scijava/widget/AbstractInputPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputWidget.java b/src/main/java/org/scijava/widget/AbstractInputWidget.java index c62cfb201..f527847b0 100644 --- a/src/main/java/org/scijava/widget/AbstractInputWidget.java +++ b/src/main/java/org/scijava/widget/AbstractInputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/Button.java b/src/main/java/org/scijava/widget/Button.java index fe268b23d..286cd1fb4 100644 --- a/src/main/java/org/scijava/widget/Button.java +++ b/src/main/java/org/scijava/widget/Button.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ButtonWidget.java b/src/main/java/org/scijava/widget/ButtonWidget.java index 865a879c9..c869fc13e 100644 --- a/src/main/java/org/scijava/widget/ButtonWidget.java +++ b/src/main/java/org/scijava/widget/ButtonWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ChoiceWidget.java b/src/main/java/org/scijava/widget/ChoiceWidget.java index 158119163..b900ac0ba 100644 --- a/src/main/java/org/scijava/widget/ChoiceWidget.java +++ b/src/main/java/org/scijava/widget/ChoiceWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ColorWidget.java b/src/main/java/org/scijava/widget/ColorWidget.java index 15a835f02..84284a9dd 100644 --- a/src/main/java/org/scijava/widget/ColorWidget.java +++ b/src/main/java/org/scijava/widget/ColorWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DateWidget.java b/src/main/java/org/scijava/widget/DateWidget.java index c58aacd41..d05049bf7 100644 --- a/src/main/java/org/scijava/widget/DateWidget.java +++ b/src/main/java/org/scijava/widget/DateWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DefaultWidgetModel.java b/src/main/java/org/scijava/widget/DefaultWidgetModel.java index c30fbb0e3..229195289 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetModel.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetModel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DefaultWidgetService.java b/src/main/java/org/scijava/widget/DefaultWidgetService.java index f41a248d4..2606eed13 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetService.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/FileListWidget.java b/src/main/java/org/scijava/widget/FileListWidget.java index 331344f76..d74ea12f5 100644 --- a/src/main/java/org/scijava/widget/FileListWidget.java +++ b/src/main/java/org/scijava/widget/FileListWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/FileWidget.java b/src/main/java/org/scijava/widget/FileWidget.java index dd2ea0aad..dc70e0ce1 100644 --- a/src/main/java/org/scijava/widget/FileWidget.java +++ b/src/main/java/org/scijava/widget/FileWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputHarvester.java b/src/main/java/org/scijava/widget/InputHarvester.java index 2c364e914..08b1a9fe3 100644 --- a/src/main/java/org/scijava/widget/InputHarvester.java +++ b/src/main/java/org/scijava/widget/InputHarvester.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputPanel.java b/src/main/java/org/scijava/widget/InputPanel.java index d13b01161..0813ee375 100644 --- a/src/main/java/org/scijava/widget/InputPanel.java +++ b/src/main/java/org/scijava/widget/InputPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputWidget.java b/src/main/java/org/scijava/widget/InputWidget.java index 0e7bfc07a..43d931c01 100644 --- a/src/main/java/org/scijava/widget/InputWidget.java +++ b/src/main/java/org/scijava/widget/InputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/MessageWidget.java b/src/main/java/org/scijava/widget/MessageWidget.java index 020ca8435..4092544eb 100644 --- a/src/main/java/org/scijava/widget/MessageWidget.java +++ b/src/main/java/org/scijava/widget/MessageWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/NumberWidget.java b/src/main/java/org/scijava/widget/NumberWidget.java index 39122cb03..886d423ea 100644 --- a/src/main/java/org/scijava/widget/NumberWidget.java +++ b/src/main/java/org/scijava/widget/NumberWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ObjectWidget.java b/src/main/java/org/scijava/widget/ObjectWidget.java index fdde6e55a..2870ff270 100644 --- a/src/main/java/org/scijava/widget/ObjectWidget.java +++ b/src/main/java/org/scijava/widget/ObjectWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/TextWidget.java b/src/main/java/org/scijava/widget/TextWidget.java index 41f38498c..384523125 100644 --- a/src/main/java/org/scijava/widget/TextWidget.java +++ b/src/main/java/org/scijava/widget/TextWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ToggleWidget.java b/src/main/java/org/scijava/widget/ToggleWidget.java index 7e128e7f5..bdb87913a 100644 --- a/src/main/java/org/scijava/widget/ToggleWidget.java +++ b/src/main/java/org/scijava/widget/ToggleWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/UIComponent.java b/src/main/java/org/scijava/widget/UIComponent.java index 9a5e636ba..54e38acb9 100644 --- a/src/main/java/org/scijava/widget/UIComponent.java +++ b/src/main/java/org/scijava/widget/UIComponent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetModel.java b/src/main/java/org/scijava/widget/WidgetModel.java index 3e8d9f953..83e8a2f9f 100644 --- a/src/main/java/org/scijava/widget/WidgetModel.java +++ b/src/main/java/org/scijava/widget/WidgetModel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetService.java b/src/main/java/org/scijava/widget/WidgetService.java index 323c1f257..ef74c794a 100644 --- a/src/main/java/org/scijava/widget/WidgetService.java +++ b/src/main/java/org/scijava/widget/WidgetService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetStyle.java b/src/main/java/org/scijava/widget/WidgetStyle.java index 508f29e0a..ec5e1c466 100644 --- a/src/main/java/org/scijava/widget/WidgetStyle.java +++ b/src/main/java/org/scijava/widget/WidgetStyle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextCreationTest.java b/src/test/java/org/scijava/ContextCreationTest.java index f34259805..b00b19dfb 100644 --- a/src/test/java/org/scijava/ContextCreationTest.java +++ b/src/test/java/org/scijava/ContextCreationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextInjectionTest.java b/src/test/java/org/scijava/ContextInjectionTest.java index ee6d087cf..b5b958a4e 100644 --- a/src/test/java/org/scijava/ContextInjectionTest.java +++ b/src/test/java/org/scijava/ContextInjectionTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/SciJavaTest.java b/src/test/java/org/scijava/SciJavaTest.java index fc7cb0db4..7e1f2866a 100644 --- a/src/test/java/org/scijava/SciJavaTest.java +++ b/src/test/java/org/scijava/SciJavaTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedA.java b/src/test/java/org/scijava/annotations/AnnotatedA.java index 7fdfba27e..1226a7e2b 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedA.java +++ b/src/test/java/org/scijava/annotations/AnnotatedA.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedB.java b/src/test/java/org/scijava/annotations/AnnotatedB.java index 88103149c..7993d867a 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedB.java +++ b/src/test/java/org/scijava/annotations/AnnotatedB.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedC.java b/src/test/java/org/scijava/annotations/AnnotatedC.java index 72c387845..5e50040a2 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedC.java +++ b/src/test/java/org/scijava/annotations/AnnotatedC.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedD.java b/src/test/java/org/scijava/annotations/AnnotatedD.java index 242180095..7049ea841 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedD.java +++ b/src/test/java/org/scijava/annotations/AnnotatedD.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java b/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java index 5acfd4beb..41e9a3849 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java +++ b/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Complex.java b/src/test/java/org/scijava/annotations/Complex.java index e2348e92b..4d3b2ae4a 100644 --- a/src/test/java/org/scijava/annotations/Complex.java +++ b/src/test/java/org/scijava/annotations/Complex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java b/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java index 3ad441f01..894dc5aa7 100644 --- a/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java +++ b/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/EclipseHelperTest.java b/src/test/java/org/scijava/annotations/EclipseHelperTest.java index 204257bac..cffbc9228 100644 --- a/src/test/java/org/scijava/annotations/EclipseHelperTest.java +++ b/src/test/java/org/scijava/annotations/EclipseHelperTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Fruit.java b/src/test/java/org/scijava/annotations/Fruit.java index bdc884e7d..28f04a12c 100644 --- a/src/test/java/org/scijava/annotations/Fruit.java +++ b/src/test/java/org/scijava/annotations/Fruit.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/LegacyTest.java b/src/test/java/org/scijava/annotations/LegacyTest.java index b1eea96ac..c12e8930c 100644 --- a/src/test/java/org/scijava/annotations/LegacyTest.java +++ b/src/test/java/org/scijava/annotations/LegacyTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Simple.java b/src/test/java/org/scijava/annotations/Simple.java index 62eb0e389..2a0b751e3 100644 --- a/src/test/java/org/scijava/annotations/Simple.java +++ b/src/test/java/org/scijava/annotations/Simple.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/app/StatusServiceTest.java b/src/test/java/org/scijava/app/StatusServiceTest.java index 35630e00d..5dde120ff 100644 --- a/src/test/java/org/scijava/app/StatusServiceTest.java +++ b/src/test/java/org/scijava/app/StatusServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandArrayConverterTest.java b/src/test/java/org/scijava/command/CommandArrayConverterTest.java index bdc0c1682..effe7a046 100644 --- a/src/test/java/org/scijava/command/CommandArrayConverterTest.java +++ b/src/test/java/org/scijava/command/CommandArrayConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandInfoTest.java b/src/test/java/org/scijava/command/CommandInfoTest.java index fabad17f0..d7830f59e 100644 --- a/src/test/java/org/scijava/command/CommandInfoTest.java +++ b/src/test/java/org/scijava/command/CommandInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandModuleTest.java b/src/test/java/org/scijava/command/CommandModuleTest.java index 5620d4cd2..372ca5267 100644 --- a/src/test/java/org/scijava/command/CommandModuleTest.java +++ b/src/test/java/org/scijava/command/CommandModuleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandServiceTest.java b/src/test/java/org/scijava/command/CommandServiceTest.java index 521dae0f2..a66fe78e3 100644 --- a/src/test/java/org/scijava/command/CommandServiceTest.java +++ b/src/test/java/org/scijava/command/CommandServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/InputsTest.java b/src/test/java/org/scijava/command/InputsTest.java index 0ed5fbcee..a5387d6b9 100644 --- a/src/test/java/org/scijava/command/InputsTest.java +++ b/src/test/java/org/scijava/command/InputsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/InvalidCommandTest.java b/src/test/java/org/scijava/command/InvalidCommandTest.java index 7c9c4e509..3d5e11649 100644 --- a/src/test/java/org/scijava/command/InvalidCommandTest.java +++ b/src/test/java/org/scijava/command/InvalidCommandTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java b/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java index 8b94a4396..afde6646f 100644 --- a/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java +++ b/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/console/ConsoleServiceTest.java b/src/test/java/org/scijava/console/ConsoleServiceTest.java index 7f6f9ce76..9bdb66ba4 100644 --- a/src/test/java/org/scijava/console/ConsoleServiceTest.java +++ b/src/test/java/org/scijava/console/ConsoleServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java b/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java index 1fa912c8d..830ad7047 100644 --- a/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java +++ b/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java b/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java index 5dd0fb908..1ab9f17d4 100644 --- a/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java +++ b/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java index 2b604398a..a345e9cbd 100644 --- a/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java index 8ef681e1b..28ea79d65 100644 --- a/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java index 2985dcd7a..fed7c84ce 100644 --- a/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java b/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java index e62bd6741..3b33abecb 100644 --- a/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java b/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java index 8c003a1de..4395c5789 100644 --- a/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java b/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java index 0d3388b30..61724ec62 100644 --- a/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToLongConverterTest.java b/src/test/java/org/scijava/convert/ByteToLongConverterTest.java index 3d60ed5c8..00866555b 100644 --- a/src/test/java/org/scijava/convert/ByteToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToShortConverterTest.java b/src/test/java/org/scijava/convert/ByteToShortConverterTest.java index 4cf3772de..2c307dcce 100644 --- a/src/test/java/org/scijava/convert/ByteToShortConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToShortConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ConvertServiceTest.java b/src/test/java/org/scijava/convert/ConvertServiceTest.java index 75553f0a6..cca1b2acc 100644 --- a/src/test/java/org/scijava/convert/ConvertServiceTest.java +++ b/src/test/java/org/scijava/convert/ConvertServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ConverterTest.java b/src/test/java/org/scijava/convert/ConverterTest.java index af7e64dbf..dd96e6191 100644 --- a/src/test/java/org/scijava/convert/ConverterTest.java +++ b/src/test/java/org/scijava/convert/ConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DelegateConverterTest.java b/src/test/java/org/scijava/convert/DelegateConverterTest.java index d85d11090..045eabd6a 100644 --- a/src/test/java/org/scijava/convert/DelegateConverterTest.java +++ b/src/test/java/org/scijava/convert/DelegateConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java index c235a8005..ed092262e 100644 --- a/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FileListConverterTest.java b/src/test/java/org/scijava/convert/FileListConverterTest.java index 95ecad501..632e82f4a 100644 --- a/src/test/java/org/scijava/convert/FileListConverterTest.java +++ b/src/test/java/org/scijava/convert/FileListConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java index bc32f0223..0be67f354 100644 --- a/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java b/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java index 8c54546ba..245ba6233 100644 --- a/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java index 19325bd76..ffe7dc17b 100644 --- a/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java index 5517d4fa3..76690b449 100644 --- a/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java b/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java index bfdadf07b..9f4555224 100644 --- a/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java b/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java index 312a85679..1552f8da7 100644 --- a/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java index 091132b8a..929eb9bf7 100644 --- a/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java index 79031df8d..69fcb27bc 100644 --- a/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java index 94f762a12..fb8dfae28 100644 --- a/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java index ea1e57231..d0c4d67ee 100644 --- a/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java b/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java index de2cc0830..a7befa860 100644 --- a/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java b/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java index 3990fd988..2ce0c775b 100644 --- a/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java b/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java index 4447698b8..cb8505498 100644 --- a/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToLongConverterTest.java b/src/test/java/org/scijava/convert/ShortToLongConverterTest.java index b41a7f34e..b9ca04268 100644 --- a/src/test/java/org/scijava/convert/ShortToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/display/DisplayTest.java b/src/test/java/org/scijava/display/DisplayTest.java index ebf9badd2..bb862450c 100644 --- a/src/test/java/org/scijava/display/DisplayTest.java +++ b/src/test/java/org/scijava/display/DisplayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/download/DownloadServiceTest.java b/src/test/java/org/scijava/download/DownloadServiceTest.java index b825cb23a..adf5fad02 100644 --- a/src/test/java/org/scijava/download/DownloadServiceTest.java +++ b/src/test/java/org/scijava/download/DownloadServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/event/EventServiceTest.java b/src/test/java/org/scijava/event/EventServiceTest.java index 06c43b617..c1e6e74e3 100644 --- a/src/test/java/org/scijava/event/EventServiceTest.java +++ b/src/test/java/org/scijava/event/EventServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/ByteArrayByteBankTest.java b/src/test/java/org/scijava/io/ByteArrayByteBankTest.java index ea9a55f08..e7ee584eb 100644 --- a/src/test/java/org/scijava/io/ByteArrayByteBankTest.java +++ b/src/test/java/org/scijava/io/ByteArrayByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/ByteBankTest.java b/src/test/java/org/scijava/io/ByteBankTest.java index 51836b92c..2c69cd595 100644 --- a/src/test/java/org/scijava/io/ByteBankTest.java +++ b/src/test/java/org/scijava/io/ByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/IOServiceTest.java b/src/test/java/org/scijava/io/IOServiceTest.java index 5a6888c6e..68ceb121a 100644 --- a/src/test/java/org/scijava/io/IOServiceTest.java +++ b/src/test/java/org/scijava/io/IOServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/TypedIOServiceTest.java b/src/test/java/org/scijava/io/TypedIOServiceTest.java index dbbccebd2..8e100352c 100644 --- a/src/test/java/org/scijava/io/TypedIOServiceTest.java +++ b/src/test/java/org/scijava/io/TypedIOServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/event/DataEventTest.java b/src/test/java/org/scijava/io/event/DataEventTest.java index 961fcca13..477f6be79 100644 --- a/src/test/java/org/scijava/io/event/DataEventTest.java +++ b/src/test/java/org/scijava/io/event/DataEventTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/BytesHandleTest.java b/src/test/java/org/scijava/io/handle/BytesHandleTest.java index 75777d74e..9e023e1be 100644 --- a/src/test/java/org/scijava/io/handle/BytesHandleTest.java +++ b/src/test/java/org/scijava/io/handle/BytesHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java b/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java index 33e77b6ff..abc9d99a8 100644 --- a/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java +++ b/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandleTest.java b/src/test/java/org/scijava/io/handle/DataHandleTest.java index b3b0335e8..d62bdca7f 100644 --- a/src/test/java/org/scijava/io/handle/DataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/DataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandlesTest.java b/src/test/java/org/scijava/io/handle/DataHandlesTest.java index 4da36f681..7aa81bfb1 100644 --- a/src/test/java/org/scijava/io/handle/DataHandlesTest.java +++ b/src/test/java/org/scijava/io/handle/DataHandlesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/FileHandleTest.java b/src/test/java/org/scijava/io/handle/FileHandleTest.java index 408481690..8b405416c 100644 --- a/src/test/java/org/scijava/io/handle/FileHandleTest.java +++ b/src/test/java/org/scijava/io/handle/FileHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java index aeea4acaa..13a93571e 100644 --- a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java +++ b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java index 4885c44f5..bd1a9ed14 100644 --- a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java b/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java index 894e2c831..b9295187e 100644 --- a/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/BytesLocationTest.java b/src/test/java/org/scijava/io/location/BytesLocationTest.java index ae7d7693c..f7f26c67e 100644 --- a/src/test/java/org/scijava/io/location/BytesLocationTest.java +++ b/src/test/java/org/scijava/io/location/BytesLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/FileLocationResolverTest.java b/src/test/java/org/scijava/io/location/FileLocationResolverTest.java index f61e64659..f3326660a 100644 --- a/src/test/java/org/scijava/io/location/FileLocationResolverTest.java +++ b/src/test/java/org/scijava/io/location/FileLocationResolverTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/FileLocationTest.java b/src/test/java/org/scijava/io/location/FileLocationTest.java index dfdfc5e69..cb7562977 100644 --- a/src/test/java/org/scijava/io/location/FileLocationTest.java +++ b/src/test/java/org/scijava/io/location/FileLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/LocationServiceTest.java b/src/test/java/org/scijava/io/location/LocationServiceTest.java index 032fbe403..feb628fa4 100644 --- a/src/test/java/org/scijava/io/location/LocationServiceTest.java +++ b/src/test/java/org/scijava/io/location/LocationServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/URILocationTest.java b/src/test/java/org/scijava/io/location/URILocationTest.java index 02d561c89..08c886467 100644 --- a/src/test/java/org/scijava/io/location/URILocationTest.java +++ b/src/test/java/org/scijava/io/location/URILocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/URLLocationTest.java b/src/test/java/org/scijava/io/location/URLLocationTest.java index 487673059..9b939f4a1 100644 --- a/src/test/java/org/scijava/io/location/URLLocationTest.java +++ b/src/test/java/org/scijava/io/location/URLLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java b/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java index 023b403f6..90919ed48 100644 --- a/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java +++ b/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/CallingClassUtilsTest.java b/src/test/java/org/scijava/log/CallingClassUtilsTest.java index 69a8e3dcd..a5893c905 100644 --- a/src/test/java/org/scijava/log/CallingClassUtilsTest.java +++ b/src/test/java/org/scijava/log/CallingClassUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/DefaultLoggerTest.java b/src/test/java/org/scijava/log/DefaultLoggerTest.java index dbdbfe16d..865e306aa 100644 --- a/src/test/java/org/scijava/log/DefaultLoggerTest.java +++ b/src/test/java/org/scijava/log/DefaultLoggerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogMessageTest.java b/src/test/java/org/scijava/log/LogMessageTest.java index 199768671..733e28ff5 100644 --- a/src/test/java/org/scijava/log/LogMessageTest.java +++ b/src/test/java/org/scijava/log/LogMessageTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogServiceTest.java b/src/test/java/org/scijava/log/LogServiceTest.java index 700d6a173..fccbc18fb 100644 --- a/src/test/java/org/scijava/log/LogServiceTest.java +++ b/src/test/java/org/scijava/log/LogServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogSourceTest.java b/src/test/java/org/scijava/log/LogSourceTest.java index d8096fd27..848a5e17d 100644 --- a/src/test/java/org/scijava/log/LogSourceTest.java +++ b/src/test/java/org/scijava/log/LogSourceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/StderrLogServiceTest.java b/src/test/java/org/scijava/log/StderrLogServiceTest.java index f18bbb3cb..00d3a698b 100644 --- a/src/test/java/org/scijava/log/StderrLogServiceTest.java +++ b/src/test/java/org/scijava/log/StderrLogServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/TestLogListener.java b/src/test/java/org/scijava/log/TestLogListener.java index 626d4e5dd..ef6224cfa 100644 --- a/src/test/java/org/scijava/log/TestLogListener.java +++ b/src/test/java/org/scijava/log/TestLogListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/main/MainServiceTest.java b/src/test/java/org/scijava/main/MainServiceTest.java index 296008e36..e96794ed8 100644 --- a/src/test/java/org/scijava/main/MainServiceTest.java +++ b/src/test/java/org/scijava/main/MainServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java b/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java index 961a21211..eaf05da9b 100644 --- a/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java +++ b/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/menu/MenuServiceTest.java b/src/test/java/org/scijava/menu/MenuServiceTest.java index c098f4ad0..d3c7428d5 100644 --- a/src/test/java/org/scijava/menu/MenuServiceTest.java +++ b/src/test/java/org/scijava/menu/MenuServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/menu/ShadowMenuTest.java b/src/test/java/org/scijava/menu/ShadowMenuTest.java index 4387f23e1..f24093192 100644 --- a/src/test/java/org/scijava/menu/ShadowMenuTest.java +++ b/src/test/java/org/scijava/menu/ShadowMenuTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/ModuleServiceTest.java b/src/test/java/org/scijava/module/ModuleServiceTest.java index e41fd82ab..b7f94ca7a 100644 --- a/src/test/java/org/scijava/module/ModuleServiceTest.java +++ b/src/test/java/org/scijava/module/ModuleServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java b/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java index 98ab6288a..a0dd141ff 100644 --- a/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java +++ b/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java b/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java index d3249eb30..3425c654b 100644 --- a/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java +++ b/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/NamedObjectIndexTest.java b/src/test/java/org/scijava/object/NamedObjectIndexTest.java index 7375ab0b4..ad5fd4aa7 100644 --- a/src/test/java/org/scijava/object/NamedObjectIndexTest.java +++ b/src/test/java/org/scijava/object/NamedObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/ObjectIndexTest.java b/src/test/java/org/scijava/object/ObjectIndexTest.java index 244fce9ca..e81c87e1f 100644 --- a/src/test/java/org/scijava/object/ObjectIndexTest.java +++ b/src/test/java/org/scijava/object/ObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/ObjectServiceTest.java b/src/test/java/org/scijava/object/ObjectServiceTest.java index cfaf44c7a..321a402cb 100644 --- a/src/test/java/org/scijava/object/ObjectServiceTest.java +++ b/src/test/java/org/scijava/object/ObjectServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/SortedObjectIndexTest.java b/src/test/java/org/scijava/object/SortedObjectIndexTest.java index 63f966fe4..61894ab78 100644 --- a/src/test/java/org/scijava/object/SortedObjectIndexTest.java +++ b/src/test/java/org/scijava/object/SortedObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/options/OptionsTest.java b/src/test/java/org/scijava/options/OptionsTest.java index d83de80e8..3ed1d5f08 100644 --- a/src/test/java/org/scijava/options/OptionsTest.java +++ b/src/test/java/org/scijava/options/OptionsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/parse/ParseServiceTest.java b/src/test/java/org/scijava/parse/ParseServiceTest.java index 7f1b3070a..a5053766c 100644 --- a/src/test/java/org/scijava/parse/ParseServiceTest.java +++ b/src/test/java/org/scijava/parse/ParseServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginFinderTest.java b/src/test/java/org/scijava/plugin/PluginFinderTest.java index 28790ae03..004165143 100644 --- a/src/test/java/org/scijava/plugin/PluginFinderTest.java +++ b/src/test/java/org/scijava/plugin/PluginFinderTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginIndexTest.java b/src/test/java/org/scijava/plugin/PluginIndexTest.java index 5d44ea093..485484287 100644 --- a/src/test/java/org/scijava/plugin/PluginIndexTest.java +++ b/src/test/java/org/scijava/plugin/PluginIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginInfoTest.java b/src/test/java/org/scijava/plugin/PluginInfoTest.java index abb5b7fbc..c7e2fbea5 100644 --- a/src/test/java/org/scijava/plugin/PluginInfoTest.java +++ b/src/test/java/org/scijava/plugin/PluginInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/SingletonServiceTest.java b/src/test/java/org/scijava/plugin/SingletonServiceTest.java index 2f00f5020..a4eabeec7 100644 --- a/src/test/java/org/scijava/plugin/SingletonServiceTest.java +++ b/src/test/java/org/scijava/plugin/SingletonServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/prefs/PrefServiceTest.java b/src/test/java/org/scijava/prefs/PrefServiceTest.java index 5797cab0f..1f2ee361a 100644 --- a/src/test/java/org/scijava/prefs/PrefServiceTest.java +++ b/src/test/java/org/scijava/prefs/PrefServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/run/RunServiceTest.java b/src/test/java/org/scijava/run/RunServiceTest.java index b8bdbce28..5b0189b7b 100644 --- a/src/test/java/org/scijava/run/RunServiceTest.java +++ b/src/test/java/org/scijava/run/RunServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java b/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java index 1b67d8fc1..42d0a0707 100644 --- a/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java +++ b/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptEngineTest.java b/src/test/java/org/scijava/script/ScriptEngineTest.java index c6ee8830c..62914f64a 100644 --- a/src/test/java/org/scijava/script/ScriptEngineTest.java +++ b/src/test/java/org/scijava/script/ScriptEngineTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptFinderTest.java b/src/test/java/org/scijava/script/ScriptFinderTest.java index 8979affba..5c77988a6 100644 --- a/src/test/java/org/scijava/script/ScriptFinderTest.java +++ b/src/test/java/org/scijava/script/ScriptFinderTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptInfoTest.java b/src/test/java/org/scijava/script/ScriptInfoTest.java index 43750e601..53691a948 100644 --- a/src/test/java/org/scijava/script/ScriptInfoTest.java +++ b/src/test/java/org/scijava/script/ScriptInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptServiceTest.java b/src/test/java/org/scijava/script/ScriptServiceTest.java index ab774845f..f3dda2de3 100644 --- a/src/test/java/org/scijava/script/ScriptServiceTest.java +++ b/src/test/java/org/scijava/script/ScriptServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java b/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java index 1f9cbde21..3256d6062 100644 --- a/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java +++ b/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/service/ServiceIndexTest.java b/src/test/java/org/scijava/service/ServiceIndexTest.java index fa5d07512..af260c4ca 100644 --- a/src/test/java/org/scijava/service/ServiceIndexTest.java +++ b/src/test/java/org/scijava/service/ServiceIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/task/TaskEventTest.java b/src/test/java/org/scijava/task/TaskEventTest.java index 9a0b2f71f..5ef418894 100644 --- a/src/test/java/org/scijava/task/TaskEventTest.java +++ b/src/test/java/org/scijava/task/TaskEventTest.java @@ -1,3 +1,31 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ package org.scijava.task; import org.junit.After; @@ -103,4 +131,4 @@ public synchronized Set getLeftOvers() { return new HashSet<>(tasks); } } -} \ No newline at end of file +} diff --git a/src/test/java/org/scijava/task/TaskServiceTest.java b/src/test/java/org/scijava/task/TaskServiceTest.java index 2471cdaa1..7f6705495 100644 --- a/src/test/java/org/scijava/task/TaskServiceTest.java +++ b/src/test/java/org/scijava/task/TaskServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/test/AbstractSciJavaTest.java b/src/test/java/org/scijava/test/AbstractSciJavaTest.java index 2ba9fa0ea..ae0e45338 100644 --- a/src/test/java/org/scijava/test/AbstractSciJavaTest.java +++ b/src/test/java/org/scijava/test/AbstractSciJavaTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/test/TestUtilsTest.java b/src/test/java/org/scijava/test/TestUtilsTest.java index 38058c958..31eee18d4 100644 --- a/src/test/java/org/scijava/test/TestUtilsTest.java +++ b/src/test/java/org/scijava/test/TestUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/thread/ThreadServiceTest.java b/src/test/java/org/scijava/thread/ThreadServiceTest.java index dcdc5822b..0e92db904 100644 --- a/src/test/java/org/scijava/thread/ThreadServiceTest.java +++ b/src/test/java/org/scijava/thread/ThreadServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ui/UIServiceTest.java b/src/test/java/org/scijava/ui/UIServiceTest.java index 66c9fb892..815b186d4 100644 --- a/src/test/java/org/scijava/ui/UIServiceTest.java +++ b/src/test/java/org/scijava/ui/UIServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/AppUtilsTest.java b/src/test/java/org/scijava/util/AppUtilsTest.java index e951aefc1..ddf392bec 100644 --- a/src/test/java/org/scijava/util/AppUtilsTest.java +++ b/src/test/java/org/scijava/util/AppUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ArrayUtilsTest.java b/src/test/java/org/scijava/util/ArrayUtilsTest.java index 20c7b1e04..c31e809a1 100644 --- a/src/test/java/org/scijava/util/ArrayUtilsTest.java +++ b/src/test/java/org/scijava/util/ArrayUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/BoolArrayTest.java b/src/test/java/org/scijava/util/BoolArrayTest.java index 54ff4f062..51c5f6b4c 100644 --- a/src/test/java/org/scijava/util/BoolArrayTest.java +++ b/src/test/java/org/scijava/util/BoolArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ByteArrayTest.java b/src/test/java/org/scijava/util/ByteArrayTest.java index 7897f5a46..31287b2a6 100644 --- a/src/test/java/org/scijava/util/ByteArrayTest.java +++ b/src/test/java/org/scijava/util/ByteArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/CharArrayTest.java b/src/test/java/org/scijava/util/CharArrayTest.java index 65bd49e8f..343a64b80 100644 --- a/src/test/java/org/scijava/util/CharArrayTest.java +++ b/src/test/java/org/scijava/util/CharArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ClassUtilsTest.java b/src/test/java/org/scijava/util/ClassUtilsTest.java index 5276f427c..35e9c134e 100644 --- a/src/test/java/org/scijava/util/ClassUtilsTest.java +++ b/src/test/java/org/scijava/util/ClassUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ColorRGBTest.java b/src/test/java/org/scijava/util/ColorRGBTest.java index f4925301a..4f3f68323 100644 --- a/src/test/java/org/scijava/util/ColorRGBTest.java +++ b/src/test/java/org/scijava/util/ColorRGBTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ConversionUtilsTest.java b/src/test/java/org/scijava/util/ConversionUtilsTest.java index 4406e2cda..d04118628 100644 --- a/src/test/java/org/scijava/util/ConversionUtilsTest.java +++ b/src/test/java/org/scijava/util/ConversionUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/DigestUtilsTest.java b/src/test/java/org/scijava/util/DigestUtilsTest.java index a0dbd98e3..657ee757d 100644 --- a/src/test/java/org/scijava/util/DigestUtilsTest.java +++ b/src/test/java/org/scijava/util/DigestUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/DoubleArrayTest.java b/src/test/java/org/scijava/util/DoubleArrayTest.java index cfe85860c..093adb0a8 100644 --- a/src/test/java/org/scijava/util/DoubleArrayTest.java +++ b/src/test/java/org/scijava/util/DoubleArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/FileUtilsTest.java b/src/test/java/org/scijava/util/FileUtilsTest.java index 89e83b4a9..dab013e7a 100644 --- a/src/test/java/org/scijava/util/FileUtilsTest.java +++ b/src/test/java/org/scijava/util/FileUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/FloatArrayTest.java b/src/test/java/org/scijava/util/FloatArrayTest.java index 72a8350f0..b5bc6801e 100644 --- a/src/test/java/org/scijava/util/FloatArrayTest.java +++ b/src/test/java/org/scijava/util/FloatArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/GenericArrayTypesTest.java b/src/test/java/org/scijava/util/GenericArrayTypesTest.java index fdf443b05..73e6046df 100644 --- a/src/test/java/org/scijava/util/GenericArrayTypesTest.java +++ b/src/test/java/org/scijava/util/GenericArrayTypesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/IntArrayTest.java b/src/test/java/org/scijava/util/IntArrayTest.java index c495d0e35..33b515224 100644 --- a/src/test/java/org/scijava/util/IntArrayTest.java +++ b/src/test/java/org/scijava/util/IntArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/LastRecentlyUsedTest.java b/src/test/java/org/scijava/util/LastRecentlyUsedTest.java index 7d701c838..2d17082ba 100644 --- a/src/test/java/org/scijava/util/LastRecentlyUsedTest.java +++ b/src/test/java/org/scijava/util/LastRecentlyUsedTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/LongArrayTest.java b/src/test/java/org/scijava/util/LongArrayTest.java index 554f4b2be..81f41c692 100644 --- a/src/test/java/org/scijava/util/LongArrayTest.java +++ b/src/test/java/org/scijava/util/LongArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ObjectArrayTest.java b/src/test/java/org/scijava/util/ObjectArrayTest.java index 5eb9056a3..bb654fa0f 100644 --- a/src/test/java/org/scijava/util/ObjectArrayTest.java +++ b/src/test/java/org/scijava/util/ObjectArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/POMTest.java b/src/test/java/org/scijava/util/POMTest.java index 3dbfac27a..dad7a7aa7 100644 --- a/src/test/java/org/scijava/util/POMTest.java +++ b/src/test/java/org/scijava/util/POMTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/PrimitiveArrayTest.java b/src/test/java/org/scijava/util/PrimitiveArrayTest.java index 679327709..747b0fdac 100644 --- a/src/test/java/org/scijava/util/PrimitiveArrayTest.java +++ b/src/test/java/org/scijava/util/PrimitiveArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ProcessUtilsTest.java b/src/test/java/org/scijava/util/ProcessUtilsTest.java index 82bc10524..2b717cb92 100644 --- a/src/test/java/org/scijava/util/ProcessUtilsTest.java +++ b/src/test/java/org/scijava/util/ProcessUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ShortArrayTest.java b/src/test/java/org/scijava/util/ShortArrayTest.java index bff05f0c2..e4d3f7ed6 100644 --- a/src/test/java/org/scijava/util/ShortArrayTest.java +++ b/src/test/java/org/scijava/util/ShortArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/StringUtilsTest.java b/src/test/java/org/scijava/util/StringUtilsTest.java index bc31d533b..4fac7e5e7 100644 --- a/src/test/java/org/scijava/util/StringUtilsTest.java +++ b/src/test/java/org/scijava/util/StringUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/TypesTest.java b/src/test/java/org/scijava/util/TypesTest.java index 545877756..21fce520d 100644 --- a/src/test/java/org/scijava/util/TypesTest.java +++ b/src/test/java/org/scijava/util/TypesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/UnitUtilsTest.java b/src/test/java/org/scijava/util/UnitUtilsTest.java index 116f8ad8e..e095f60a0 100644 --- a/src/test/java/org/scijava/util/UnitUtilsTest.java +++ b/src/test/java/org/scijava/util/UnitUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/VersionUtilsTest.java b/src/test/java/org/scijava/util/VersionUtilsTest.java index 4874af6eb..7b0844225 100644 --- a/src/test/java/org/scijava/util/VersionUtilsTest.java +++ b/src/test/java/org/scijava/util/VersionUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/widget/WidgetStyleTest.java b/src/test/java/org/scijava/widget/WidgetStyleTest.java index 079ed72a5..321342736 100644 --- a/src/test/java/org/scijava/widget/WidgetStyleTest.java +++ b/src/test/java/org/scijava/widget/WidgetStyleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2021 SciJava developers. + * Copyright (C) 2009 - 2022 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: From 207d99f577be6d113cff35e2764769d59a69063e Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sat, 9 Apr 2022 10:50:59 -0500 Subject: [PATCH 007/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5ef9ba2bd..126935ebf 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.88.0-SNAPSHOT + 2.88.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From e05ef57a79820cacb9de3f69cfb335e2d88d6d5f Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sat, 9 Apr 2022 11:15:47 -0500 Subject: [PATCH 008/185] POM: add NicoKiaru to contributors list --- pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pom.xml b/pom.xml index 126935ebf..a26f167bc 100644 --- a/pom.xml +++ b/pom.xml @@ -59,6 +59,11 @@ Chris Allan chris-allan + + Nicolas Chiaruttini + https://imagej.net/people/NicoKiaru + NicoKiaru + Barry DeZonia https://imagej.net/people/bdezonia From 51dffd29c5c65645c6592c65a7bb3bd5cb5820fe Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 29 Apr 2022 03:29:58 -0500 Subject: [PATCH 009/185] POM: update parent to pom-scijava 32.0.0-beta-3 --- pom.xml | 2 +- src/main/java/org/scijava/parse/DefaultParseService.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index a26f167bc..71ca6bc3a 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 31.1.0 + 32.0.0-beta-3 diff --git a/src/main/java/org/scijava/parse/DefaultParseService.java b/src/main/java/org/scijava/parse/DefaultParseService.java index febbba898..53bdbe46a 100644 --- a/src/main/java/org/scijava/parse/DefaultParseService.java +++ b/src/main/java/org/scijava/parse/DefaultParseService.java @@ -35,7 +35,7 @@ import java.util.Map; import org.scijava.parsington.Variable; -import org.scijava.parsington.eval.DefaultEvaluator; +import org.scijava.parsington.eval.DefaultTreeEvaluator; import org.scijava.plugin.Plugin; import org.scijava.service.AbstractService; import org.scijava.service.Service; @@ -97,7 +97,7 @@ public boolean isList() { } private void parseItems(final String arg, final boolean strict) { - final DefaultEvaluator e = new DefaultEvaluator(); + final DefaultTreeEvaluator e = new DefaultTreeEvaluator(); e.setStrict(strict); final Object result = e.evaluate("(" + arg + ")"); if (result == null) { From a3590c6e05eee21e4c9731f3c9979e1f3e5629ee Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 29 Apr 2022 03:30:06 -0500 Subject: [PATCH 010/185] Remove print statements from tests --- .../java/org/scijava/command/CommandArrayConverterTest.java | 6 ------ src/test/java/org/scijava/task/TaskEventTest.java | 1 - 2 files changed, 7 deletions(-) diff --git a/src/test/java/org/scijava/command/CommandArrayConverterTest.java b/src/test/java/org/scijava/command/CommandArrayConverterTest.java index effe7a046..26dfebfc9 100644 --- a/src/test/java/org/scijava/command/CommandArrayConverterTest.java +++ b/src/test/java/org/scijava/command/CommandArrayConverterTest.java @@ -113,10 +113,7 @@ public static class CommandRawArrayInput implements Command { @Override public void run() { final StringBuilder sb = new StringBuilder(); - System.out.println("userObjects length : "+userObjects.length); - System.out.println("class : "+userObjects.getClass()); for (UserClass obj : userObjects) { - System.out.println("\t"+obj); sb.append(obj.toString()+";"); } result = sb.toString(); @@ -136,10 +133,7 @@ public static class CommandGenericsWildcardArrayInput implements Command { @Override public void run() { final StringBuilder sb = new StringBuilder(); - System.out.println("userObjects length : "+userObjects.length); - System.out.println("class : "+userObjects.getClass()); for (UserClass obj : userObjects) { - System.out.println("\t"+obj); sb.append(obj.toString()+";"); } result = sb.toString(); diff --git a/src/test/java/org/scijava/task/TaskEventTest.java b/src/test/java/org/scijava/task/TaskEventTest.java index 5ef418894..fadecc683 100644 --- a/src/test/java/org/scijava/task/TaskEventTest.java +++ b/src/test/java/org/scijava/task/TaskEventTest.java @@ -87,7 +87,6 @@ public static void createTask( new Thread( () -> { try { - System.out.println("Waiting to start task "+taskName); Thread.sleep(msBeforeStart); // Task started From 309dc33241cefab2a2207ae31b32c8f137072996 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 29 Apr 2022 03:31:41 -0500 Subject: [PATCH 011/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 71ca6bc3a..b49783f68 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.88.1-SNAPSHOT + 2.88.2-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 487a40e1fd23246b366396aa26ec0c21c2c42478 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 31 May 2022 14:25:48 -0500 Subject: [PATCH 012/185] ScriptModule: make context class loader non-null Groovy assumes it will be non-null, and crashes if it's null. When is it null? Not totally clear. But it can happen! See its javadoc. --- src/main/java/org/scijava/script/ScriptModule.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/org/scijava/script/ScriptModule.java b/src/main/java/org/scijava/script/ScriptModule.java index b10e504dc..f05cbc7ed 100644 --- a/src/main/java/org/scijava/script/ScriptModule.java +++ b/src/main/java/org/scijava/script/ScriptModule.java @@ -123,6 +123,13 @@ public ScriptInfo getInfo() { @Override public void run() { + // HACK: Work around code (Groovy!) assuming + // context class loader can't be null. + final ClassLoader cl = Thread.currentThread().getContextClassLoader(); + if (cl == null) { + Thread.currentThread().setContextClassLoader(Context.getClassLoader()); + } + final ScriptEngine engine = getEngine(); final String path = getInfo().getPath(); From 5d8c6ca9e3d3e82faa0644622af6f3d6f502e787 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 14 Jun 2022 15:54:00 -0500 Subject: [PATCH 013/185] CI: cache ~/.m2/repository correctly --- .github/workflows/build-main.yml | 18 +++--------------- .github/workflows/build-pr.yml | 18 +++--------------- 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/.github/workflows/build-main.yml b/.github/workflows/build-main.yml index 3fb562252..5ef569202 100644 --- a/.github/workflows/build-main.yml +++ b/.github/workflows/build-main.yml @@ -13,24 +13,12 @@ jobs: steps: - uses: actions/checkout@v2 - - - name: Cache m2 folder - uses: actions/cache@v2 - env: - cache-name: cache-m2 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-build-${{ env.cache-name }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: Set up JDK 8 - uses: actions/setup-java@v2 + - name: Set up Java + uses: actions/setup-java@v3 with: java-version: '8' distribution: 'zulu' + cache: 'maven' - name: Set up CI environment run: .github/setup.sh - name: Execute the build diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index 92a019264..925b57658 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -11,24 +11,12 @@ jobs: steps: - uses: actions/checkout@v2 - - - name: Cache m2 folder - uses: actions/cache@v2 - env: - cache-name: cache-m2 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-build-${{ env.cache-name }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: Set up JDK 8 - uses: actions/setup-java@v2 + - name: Set up Java + uses: actions/setup-java@v3 with: java-version: '8' distribution: 'zulu' + cache: 'maven' - name: Set up CI environment run: .github/setup.sh - name: Execute the build From df29cac4272f4e78b2ef408c8b3e02f15c43fd96 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Fri, 17 Jun 2022 11:08:39 -0500 Subject: [PATCH 014/185] Split Strings before wrapping into ObjectArray We make the executive decision to always delimit by a comma --- src/main/java/org/scijava/util/ArrayUtils.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/scijava/util/ArrayUtils.java b/src/main/java/org/scijava/util/ArrayUtils.java index c6487c5cf..0fda592c5 100644 --- a/src/main/java/org/scijava/util/ArrayUtils.java +++ b/src/main/java/org/scijava/util/ArrayUtils.java @@ -58,7 +58,9 @@ package org.scijava.util; +import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; /** @@ -120,6 +122,12 @@ public static Collection toCollection(final Object value) { if (value instanceof Object[]) { return new ObjectArray<>((Object[]) value); } + if (value instanceof String) { + String[] arr = ((String) value).split("\\s*,\\s*"); + Collection c = new ObjectArray(arr); + c.removeIf(o -> o.equals("")); + return c; + } // This object is neither an array nor a collection. // So we wrap it in a list and return. final List list = new ObjectArray<>(Object.class); From 4191f81317cf4f583b58ae416af4d7a79382b8e5 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Fri, 17 Jun 2022 11:09:49 -0500 Subject: [PATCH 015/185] Improve array conversion to String --- .../org/scijava/convert/DefaultConverter.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index d2daea418..651f171fd 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -39,6 +39,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import org.scijava.Priority; import org.scijava.plugin.Plugin; @@ -168,10 +169,21 @@ public T convert(final Object src, final Class dest) { } if (saneDest == String.class) { // destination type is String; use Object.toString() method - final String sValue = src.toString(); - @SuppressWarnings("unchecked") - final T result = (T) sValue; - return result; + if (src.getClass().isArray()) { + final String elementString = ArrayUtils.toCollection(src).stream() // + .map(object -> convert(object, String.class)) // + .collect(Collectors.joining(",")); + String sb = "[" + elementString + ']'; + @SuppressWarnings("unchecked") + final T result = (T) elementString; + return result; + } + else { + final String sValue = src.toString(); + @SuppressWarnings("unchecked") + final T result = (T) sValue; + return result; + } } // wrap the original object with one of the new type, using a constructor From 37753fa342a7ef79b17a1cb7836d19965b5b894a Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Thu, 16 Jun 2022 16:29:06 -0500 Subject: [PATCH 016/185] Test Module saving and loading for array types --- .../org/scijava/module/ModuleServiceTest.java | 72 +++++++++++++++++-- 1 file changed, 66 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/scijava/module/ModuleServiceTest.java b/src/test/java/org/scijava/module/ModuleServiceTest.java index b7f94ca7a..dffd09e02 100644 --- a/src/test/java/org/scijava/module/ModuleServiceTest.java +++ b/src/test/java/org/scijava/module/ModuleServiceTest.java @@ -29,11 +29,9 @@ package org.scijava.module; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; - +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ExecutionException; @@ -42,6 +40,9 @@ import org.junit.Before; import org.junit.Test; import org.scijava.Context; +import org.scijava.util.ObjectArray; + +import static org.junit.Assert.*; /** * Tests {@link ModuleService}. @@ -158,6 +159,66 @@ public void testGetSingleInput() throws ModuleException { assertSame(info.getInput("double2"), singleDouble); } + @Test + public void testSaveAndLoad() { + + List parameterizations = new ArrayList<>(); + parameterizations.add(new Object[] { // + double[].class, new double[] {} // + }); + parameterizations.add(new Object[] { // + double[].class, new double[] { 1., 2., 3. } // + }); + parameterizations.add(new Object[] { // + Double[].class, new Double[] {} // + }); + parameterizations.add(new Object[] { // + Double[].class, new Double[] { 1., 2., 3. } // + }); + + for (Object[] params : parameterizations) { + Class type = (Class) params[0]; + Object expected = params[1]; + // Get a ModuleItem of the right type + MutableModule m = new DefaultMutableModule(); + m.getInfo().addInput(new DefaultMutableModuleItem<>(m, "a", type)); + @SuppressWarnings("unchecked") + final ModuleItem item = (ModuleItem) moduleService + .getSingleInput(m, type); + // Save a value to the ModuleItem + moduleService.save(item, expected); + // Load that value from the ModuleItem + Object actual = moduleService.load(item); + // Assert equality + if (expected.getClass().isArray()) assertArrayEquality(expected, actual); + else assertEquals(expected, actual); + } + } + + private void assertArrayEquality(Object arr1, Object arr2) { + // Ensure that both Objects are arrays of the same type! + assertEquals(arr1.getClass(), arr2.getClass()); + assertTrue(arr1.getClass().isArray()); + + // We must check primitive arrays as they cannot be cast to Object[] + if (arr1 instanceof boolean[]) // + assertArrayEquals((boolean[]) arr1, (boolean[]) arr2); + else if (arr1 instanceof short[]) // + assertArrayEquals((short[]) arr1, (short[]) arr2); + else if (arr1 instanceof int[]) // + assertArrayEquals((int[]) arr1, (int[]) arr2); + else if (arr1 instanceof long[]) // + assertArrayEquals((long[]) arr1, (long[]) arr2); + else if (arr1 instanceof float[]) // + assertArrayEquals((float[]) arr1, (float[]) arr2, 1e-6f); + else if (arr1 instanceof double[]) // + assertArrayEquals((double[]) arr1, (double[]) arr2, 1e-6); + else if (arr1 instanceof char[]) // + assertArrayEquals((char[]) arr1, (char[]) arr2); + // Otherwise we can just cast to Object[] + else assertArrayEquals((Object[]) arr1, (Object[]) arr2); + } + // -- Helper methods -- private Object[] createInputArray() { @@ -167,7 +228,7 @@ private Object[] createInputArray() { "integer1", -2, // "integer2", 7, // "double1", Math.E, // - "double2", Math.PI // + "double2", Math.PI, // }; } @@ -198,7 +259,6 @@ private static String mapToString(final Map map) { /** A sample module for testing the module service. */ public static class FooModule extends AbstractModule { - private final FooModuleInfo info; public FooModule(final FooModuleInfo info) { From 8cc1a5f7afac25c5f104cc67c7c8ec274d2810d9 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Fri, 17 Jun 2022 11:28:30 -0500 Subject: [PATCH 017/185] Remove unused variable --- src/main/java/org/scijava/convert/DefaultConverter.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index 651f171fd..f01f9668b 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -173,7 +173,6 @@ public T convert(final Object src, final Class dest) { final String elementString = ArrayUtils.toCollection(src).stream() // .map(object -> convert(object, String.class)) // .collect(Collectors.joining(",")); - String sb = "[" + elementString + ']'; @SuppressWarnings("unchecked") final T result = (T) elementString; return result; From bd40f0554ca9efffc4e60c48648d0708a24fb6f4 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Fri, 1 Jul 2022 15:12:23 -0500 Subject: [PATCH 018/185] Add a StringToNumberConverter --- .../convert/StringToNumberConverter.java | 56 +++++++++ .../convert/StringToNumberConverterTest.java | 112 ++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 src/main/java/org/scijava/convert/StringToNumberConverter.java create mode 100644 src/test/java/org/scijava/convert/StringToNumberConverterTest.java diff --git a/src/main/java/org/scijava/convert/StringToNumberConverter.java b/src/main/java/org/scijava/convert/StringToNumberConverter.java new file mode 100644 index 000000000..cd22eeafa --- /dev/null +++ b/src/main/java/org/scijava/convert/StringToNumberConverter.java @@ -0,0 +1,56 @@ + +package org.scijava.convert; + +import org.scijava.plugin.Plugin; +import org.scijava.util.Types; + +/** + * Converts a {@link String} to a {@link Number}. Currently handles all boxed + * and unboxed primitives, along with the Numbers. In particular, + * {@link String}s converted {@link Number}s are just {@link Double}s, as this + * features the broadest range of integers. + * + * @author Gabriel Selzer + */ +@Plugin(type = Converter.class) +public class StringToNumberConverter extends AbstractConverter { + + @Override + @SuppressWarnings("unchecked") + public T convert(Object src, Class dest) { + // ensure type is well-behaved, rather than a primitive type + Class saneDest = Types.box(dest); + if (!(src instanceof String)) throw new IllegalArgumentException( + "Expected src to be a String but got a " + src.getClass()); + if (!(Number.class.isAssignableFrom(saneDest))) + throw new IllegalArgumentException( + "Expected dest to be Number.class (or a subclass of Number, or a numerical primitive), but got " + + saneDest); + String srcString = (String) src; + if (saneDest == Byte.class) return (T) new Byte(srcString); + if (saneDest == Short.class) return (T) new Short(srcString); + if (saneDest == Integer.class) return (T) new Integer(srcString); + if (saneDest == Long.class) return (T) new Long(srcString); + if (saneDest == Float.class) return (T) new Float(srcString); + if (saneDest == Double.class) return (T) new Double(srcString); + if (saneDest == Number.class) return (T) new Double(srcString); + else throw new IllegalArgumentException("Unknown destination type: " + + saneDest); + } + + @Override + public Class getOutputType() { + return Number.class; + } + + @Override + public Class getInputType() { + return String.class; + } + + @Override + public boolean canConvert(Object src, Class dest) { + if (!Types.isAssignable(src.getClass(), String.class)) return false; + return Types.isAssignable(Types.box(dest), Number.class); + } +} diff --git a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java new file mode 100644 index 000000000..efee1acd1 --- /dev/null +++ b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java @@ -0,0 +1,112 @@ + +package org.scijava.convert; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Tests {@link StringToNumberConverter} + * + * @author Gabriel Selzer + */ +public class StringToNumberConverterTest { + + Converter conv; + + @Before + public void setUp() { + conv = new StringToNumberConverter(); + } + + @Test + public void stringToByteTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, Byte.class)); + Assert.assertEquals(new Byte((byte) 0), conv.convert(s, Byte.class)); + } + + @Test + public void stringToPrimitiveByteTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, byte.class)); + Assert.assertEquals(0, (int) conv.convert(s, byte.class)); + } + + @Test + public void stringToShortTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, Short.class)); + Assert.assertEquals(new Short((short) 0), conv.convert(s, Short.class)); + } + + @Test + public void stringToPrimitiveShortTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, short.class)); + Assert.assertEquals(0, (int) conv.convert(s, short.class)); + } + + @Test + public void stringToIntegerTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, Integer.class)); + Assert.assertEquals(new Integer(0), conv.convert(s, Integer.class)); + } + + @Test + public void stringToPrimitiveIntegerTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, int.class)); + Assert.assertEquals(0, (int) conv.convert(s, int.class)); + } + + @Test + public void stringToLongTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, Long.class)); + Assert.assertEquals(new Long(0), conv.convert(s, Long.class)); + } + + @Test + public void stringToPrimitiveLongTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, long.class)); + Assert.assertEquals(0L, (long) conv.convert(s, long.class)); + } + + @Test + public void stringToFloatTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, Float.class)); + Assert.assertEquals(new Float(0), conv.convert(s, Float.class)); + } + + @Test + public void stringToPrimitiveFloat() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, float.class)); + Assert.assertEquals(0f, conv.convert(s, float.class), 1e-6); + } + + @Test + public void stringToDoubleTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, Double.class)); + Assert.assertEquals(new Double(0), conv.convert(s, Double.class)); + } + + @Test + public void stringToPrimitiveDouble() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, double.class)); + Assert.assertEquals(0d, conv.convert(s, double.class), 1e-6); + } + + @Test + public void stringToNumberTest() { + String s = "0"; + Assert.assertTrue(conv.canConvert(s, Number.class)); + Assert.assertEquals(0d, conv.convert(s, Number.class)); + } +} From 5c160d28404aa328ffdb5c20735a49cefe6f5049 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Fri, 1 Jul 2022 15:41:00 -0500 Subject: [PATCH 019/185] Ensure that invalid strings cannot be converted --- .../convert/StringToNumberConverter.java | 21 ++++++++++++++++--- .../convert/StringToNumberConverterTest.java | 8 +++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/scijava/convert/StringToNumberConverter.java b/src/main/java/org/scijava/convert/StringToNumberConverter.java index cd22eeafa..0c75f579d 100644 --- a/src/main/java/org/scijava/convert/StringToNumberConverter.java +++ b/src/main/java/org/scijava/convert/StringToNumberConverter.java @@ -19,7 +19,7 @@ public class StringToNumberConverter extends AbstractConverter { @SuppressWarnings("unchecked") public T convert(Object src, Class dest) { // ensure type is well-behaved, rather than a primitive type - Class saneDest = Types.box(dest); + Class saneDest = sane(dest); if (!(src instanceof String)) throw new IllegalArgumentException( "Expected src to be a String but got a " + src.getClass()); if (!(Number.class.isAssignableFrom(saneDest))) @@ -33,7 +33,6 @@ public T convert(Object src, Class dest) { if (saneDest == Long.class) return (T) new Long(srcString); if (saneDest == Float.class) return (T) new Float(srcString); if (saneDest == Double.class) return (T) new Double(srcString); - if (saneDest == Number.class) return (T) new Double(srcString); else throw new IllegalArgumentException("Unknown destination type: " + saneDest); } @@ -51,6 +50,22 @@ public Class getInputType() { @Override public boolean canConvert(Object src, Class dest) { if (!Types.isAssignable(src.getClass(), String.class)) return false; - return Types.isAssignable(Types.box(dest), Number.class); + // The only way to know if the conversion is valid is to actually do it. + try { + String srcString = (String) src; + sane(dest).getConstructor(String.class).newInstance(srcString); + return true; + } + catch (Exception e) { + return false; + } + } + + // -- Helper functionality -- // + + @SuppressWarnings("unchecked") + private Class sane(Class c) { + if (c == Number.class) return (Class) Double.class; + return Types.box(c); } } diff --git a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java index efee1acd1..8728bd47f 100644 --- a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java @@ -109,4 +109,12 @@ public void stringToNumberTest() { Assert.assertTrue(conv.canConvert(s, Number.class)); Assert.assertEquals(0d, conv.convert(s, Number.class)); } + + @Test + public void invalidStringToNumberTest() { + String s = "invalid"; + Assert.assertFalse(conv.canConvert(s, Number.class)); + Assert.assertThrows(IllegalArgumentException.class, () -> conv.convert(s, + Number.class)); + } } From 88f5eb0c9430b263bb2830172d138c7bd2042fb8 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 11 Jul 2022 15:40:45 -0500 Subject: [PATCH 020/185] Add missing license header blocks --- .../convert/StringToNumberConverter.java | 28 +++++++++++++++++++ .../convert/StringToNumberConverterTest.java | 28 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/main/java/org/scijava/convert/StringToNumberConverter.java b/src/main/java/org/scijava/convert/StringToNumberConverter.java index 0c75f579d..6376a6a70 100644 --- a/src/main/java/org/scijava/convert/StringToNumberConverter.java +++ b/src/main/java/org/scijava/convert/StringToNumberConverter.java @@ -1,3 +1,31 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ package org.scijava.convert; diff --git a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java index 8728bd47f..b2778d128 100644 --- a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java @@ -1,3 +1,31 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ package org.scijava.convert; From 0e120097555320a0045c109ae04d6eee2ac93370 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 11 Jul 2022 15:42:13 -0500 Subject: [PATCH 021/185] Update ImageJ -> ImageJ2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b7f00e234..06c483c15 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,5 @@ SciJava Common is a common library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. -It is used by both [ImageJ](https://github.com/imagej/imagej) and +It is used by both [ImageJ2](https://github.com/imagej/imagej2) and [SCIFIO](https://github.com/scifio/scifio). From d50ae5b31d8912eeab9adbb62a8ee966c0c10c83 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 11 Jul 2022 15:43:25 -0500 Subject: [PATCH 022/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b49783f68..fca6aef22 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.88.2-SNAPSHOT + 2.88.3-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From a82242019bdada83f102628225c92c73f25245f0 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Mon, 18 Jul 2022 09:09:20 -0500 Subject: [PATCH 023/185] Set the ScriptEngineManager to use Context's loader --- src/main/java/org/scijava/script/AdaptedScriptLanguage.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java index ff96c74a3..ad952d54d 100644 --- a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java +++ b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java @@ -35,6 +35,7 @@ import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; +import org.scijava.Context; import org.scijava.plugin.PluginInfo; /** @@ -140,7 +141,7 @@ public ScriptEngine getScriptEngine() { // -- Helper methods -- private static ScriptEngineFactory findFactory(final String factoryName) { - final ScriptEngineManager manager = new ScriptEngineManager(); + final ScriptEngineManager manager = new ScriptEngineManager(Context.getClassLoader()); for (final ScriptEngineFactory factory : manager.getEngineFactories()) { for (final String name : factory.getNames()) { if (factoryName.equals(name)) return factory; From 7201d4d5cd08ac127af553e8602037a80736203e Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Thu, 28 Jul 2022 15:44:37 -0500 Subject: [PATCH 024/185] Add support for Number in NumberUtils --- .../java/org/scijava/util/NumberUtils.java | 4 ++ .../org/scijava/util/NumberUtilsTest.java | 42 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/test/java/org/scijava/util/NumberUtilsTest.java diff --git a/src/main/java/org/scijava/util/NumberUtils.java b/src/main/java/org/scijava/util/NumberUtils.java index ea9f684ac..9b3ad2488 100644 --- a/src/main/java/org/scijava/util/NumberUtils.java +++ b/src/main/java/org/scijava/util/NumberUtils.java @@ -78,6 +78,8 @@ public static Number getMinimumNumber(final Class type) { if (Types.isLong(type)) return Long.MIN_VALUE; if (Types.isFloat(type)) return -Float.MAX_VALUE; if (Types.isDouble(type)) return -Double.MAX_VALUE; + // Fallback for Number.class + if (Types.isNumber(type)) return -Double.MAX_VALUE; return null; } @@ -88,6 +90,8 @@ public static Number getMaximumNumber(final Class type) { if (Types.isLong(type)) return Long.MAX_VALUE; if (Types.isFloat(type)) return Float.MAX_VALUE; if (Types.isDouble(type)) return Double.MAX_VALUE; + // Fallback for Number.class + if (Types.isNumber(type)) return Double.MAX_VALUE; return null; } diff --git a/src/test/java/org/scijava/util/NumberUtilsTest.java b/src/test/java/org/scijava/util/NumberUtilsTest.java new file mode 100644 index 000000000..78f94fbde --- /dev/null +++ b/src/test/java/org/scijava/util/NumberUtilsTest.java @@ -0,0 +1,42 @@ + +package org.scijava.util; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * Tests {@link NumberUtils} functionality + * + * @author Gabriel Selzer + */ +public class NumberUtilsTest { + + /** Tests {@link NumberUtils#getMinimumNumber(Class)} */ + @Test + public void testGetMinimumNumber() { + assertEquals(Byte.MIN_VALUE, NumberUtils.getMinimumNumber(Byte.class)); + assertEquals(Short.MIN_VALUE, NumberUtils.getMinimumNumber(Short.class)); + assertEquals(Integer.MIN_VALUE, NumberUtils.getMinimumNumber( + Integer.class)); + assertEquals(Long.MIN_VALUE, NumberUtils.getMinimumNumber(Long.class)); + assertEquals(-Float.MAX_VALUE, NumberUtils.getMinimumNumber(Float.class)); + assertEquals(-Double.MAX_VALUE, NumberUtils.getMinimumNumber(Double.class)); + // Number's minimum value should be the smallest of all the above -> Double + assertEquals(-Double.MAX_VALUE, NumberUtils.getMinimumNumber(Number.class)); + } + + /** Tests {@link NumberUtils#getMaximumNumber(Class)} */ + @Test + public void testGetMaximumNumber() { + assertEquals(Byte.MAX_VALUE, NumberUtils.getMaximumNumber(Byte.class)); + assertEquals(Short.MAX_VALUE, NumberUtils.getMaximumNumber(Short.class)); + assertEquals(Integer.MAX_VALUE, NumberUtils.getMaximumNumber( + Integer.class)); + assertEquals(Long.MAX_VALUE, NumberUtils.getMaximumNumber(Long.class)); + assertEquals(Float.MAX_VALUE, NumberUtils.getMaximumNumber(Float.class)); + assertEquals(Double.MAX_VALUE, NumberUtils.getMaximumNumber(Double.class)); + // Number's minimum value should be the smallest of all the above -> Double + assertEquals(Double.MAX_VALUE, NumberUtils.getMaximumNumber(Number.class)); + } +} From 818a252d6816a1a054f33ebc4cfbaf0cc3bba811 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 15 Aug 2022 10:40:26 -0500 Subject: [PATCH 025/185] POM: update parent to 32.0.0-beta-4 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fca6aef22..4ee57020f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 32.0.0-beta-3 + 32.0.0-beta-4 From 832b1818c069fbe76c4a5156941afbd561161aa8 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 15 Aug 2022 12:36:50 -0500 Subject: [PATCH 026/185] Add missing license header --- .../org/scijava/util/NumberUtilsTest.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/test/java/org/scijava/util/NumberUtilsTest.java b/src/test/java/org/scijava/util/NumberUtilsTest.java index 78f94fbde..e175ab8e7 100644 --- a/src/test/java/org/scijava/util/NumberUtilsTest.java +++ b/src/test/java/org/scijava/util/NumberUtilsTest.java @@ -1,3 +1,31 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ package org.scijava.util; From b37c0628658f4ac10decbc2135a2e1f5eac6db0d Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 15 Aug 2022 12:59:01 -0500 Subject: [PATCH 027/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4ee57020f..0ed9c5fc3 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.88.3-SNAPSHOT + 2.89.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 7751a9d2b91b5647f62d2a3f9d0f361f4b3ff6bc Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Wed, 17 Aug 2022 13:08:48 -0500 Subject: [PATCH 028/185] Refactor efforts into separate Converters --- .../convert/ArrayToStringConverter.java | 90 +++++++++ .../org/scijava/convert/DefaultConverter.java | 19 +- .../convert/StringToArrayConverter.java | 178 ++++++++++++++++++ .../java/org/scijava/util/ArrayUtils.java | 6 - .../convert/ArrayToStringConverterTest.java | 160 ++++++++++++++++ .../convert/StringToArrayConverterTest.java | 158 ++++++++++++++++ .../org/scijava/module/ModuleServiceTest.java | 86 +++++---- 7 files changed, 637 insertions(+), 60 deletions(-) create mode 100644 src/main/java/org/scijava/convert/ArrayToStringConverter.java create mode 100644 src/main/java/org/scijava/convert/StringToArrayConverter.java create mode 100644 src/test/java/org/scijava/convert/ArrayToStringConverterTest.java create mode 100644 src/test/java/org/scijava/convert/StringToArrayConverterTest.java diff --git a/src/main/java/org/scijava/convert/ArrayToStringConverter.java b/src/main/java/org/scijava/convert/ArrayToStringConverter.java new file mode 100644 index 000000000..922f2eac6 --- /dev/null +++ b/src/main/java/org/scijava/convert/ArrayToStringConverter.java @@ -0,0 +1,90 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.convert; + +import java.lang.reflect.Array; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import org.scijava.Priority; +import org.scijava.plugin.Parameter; +import org.scijava.plugin.Plugin; +import org.scijava.util.ArrayUtils; +import org.scijava.util.Types; + +/** + * A {@link Converter} that specializes in converting + * n-dimensional arrays into {@link String}s. This {@link Converter} can convert any array whose + * component types can be converted into {@link String}s. By default, this + * {@link Converter} delimits the array elements with commas. + * + * @author Gabriel Selzer + */ +@Plugin(type = Converter.class, priority = Priority.VERY_LOW) +public class ArrayToStringConverter extends AbstractConverter { + + @Parameter private ConvertService convertService; + + @Override public boolean canConvert(final Class src, final Class dest) { + if (src == null) return false; + final Class saneSrc = Types.box(src); + final Class saneDest = Types.box(dest); + return saneSrc.isArray() && saneDest == String.class; + } + + @Override public boolean canConvert(final Object src, final Class dest) { + if (!canConvert(src.getClass(), dest)) return false; + if (Array.getLength(src) == 0) return true; + return convertService.supports(Array.get(src, 0), dest); + } + + @Override public Object convert(Object src, Type dest) { + final String elementString = ArrayUtils.toCollection(src).stream() // + .map(object -> convertService.convert(object, String.class)) // + .collect(Collectors.joining(", ")); + return "{" + elementString + "}"; + } + + @SuppressWarnings("unchecked") @Override + public T convert(Object src, Class dest) { + return (T) convert(src, (Type) dest); + } + + @Override public Class getOutputType() { + return String.class; + } + + @Override public Class getInputType() { + return Object.class; + } + +} diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index f01f9668b..d2daea418 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -39,7 +39,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.stream.Collectors; import org.scijava.Priority; import org.scijava.plugin.Plugin; @@ -169,20 +168,10 @@ public T convert(final Object src, final Class dest) { } if (saneDest == String.class) { // destination type is String; use Object.toString() method - if (src.getClass().isArray()) { - final String elementString = ArrayUtils.toCollection(src).stream() // - .map(object -> convert(object, String.class)) // - .collect(Collectors.joining(",")); - @SuppressWarnings("unchecked") - final T result = (T) elementString; - return result; - } - else { - final String sValue = src.toString(); - @SuppressWarnings("unchecked") - final T result = (T) sValue; - return result; - } + final String sValue = src.toString(); + @SuppressWarnings("unchecked") + final T result = (T) sValue; + return result; } // wrap the original object with one of the new type, using a constructor diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java new file mode 100644 index 000000000..fdc57d5b4 --- /dev/null +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -0,0 +1,178 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.convert; + +import org.scijava.Priority; +import org.scijava.plugin.Parameter; +import org.scijava.plugin.Plugin; +import org.scijava.util.Types; + +import java.lang.reflect.Array; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; + +/** + * A {@link Converter} that specializes in converting {@link String}s to + * n-dimensional arrays. This {@link Converter} can convert any array whose + * component types can be created from a {@link String}. By default, this + * {@link Converter} delimits the {@link String} based on commas. + * + * @author Gabriel Selzer + */ +@Plugin(type = Converter.class, priority=Priority.VERY_LOW) +public class StringToArrayConverter extends AbstractConverter { + + @Parameter + private ConvertService convertService; + + @Override + public boolean canConvert(final Class src, final Class dest) { + if (src == null) return false; + final Class saneSrc = Types.box(src); + final Class saneDest = Types.box(dest); + return saneSrc == String.class && saneDest.isArray(); + } + + @Override + public boolean canConvert(final Object src, final Class dest) { + if (!canConvert(src.getClass(), dest)) return false; + String srcString = (String) src; + if (!(srcString.startsWith("{") && srcString.endsWith("}"))) return false; + List components = elements((String) src); + return components.size() == 0 || convertService.supports(components.get(0), + dest.getComponentType()); + } + + @Override + public Object convert(Object src, Type dest) { + final Type componentType = Types.component(dest); + if (componentType == null) throw new IllegalArgumentException(dest + + " is not an array type!"); + return convertToArray((String) src, componentType); + } + + @SuppressWarnings("unchecked") + @Override + public T convert(Object src, Class dest) { + return (T) convert((String) src, (Type) dest); + } + + @Override + public Class getOutputType() { + return Object.class; + } + + @Override + public Class getInputType() { + return String.class; + } + + // -- HELPER METHODS -- // + + /** + * Converts {@code src} into an array of component type {@code componentType} + * + * @param src the {@link String} to convert + * @param componentType the component type of the output array + * @return an array of {@code componentType} whose elements were created from + * {@code src} + */ + private Object convertToArray(String src, final Type componentType) { + List elements = elements( src); + Class componentClass = Types.raw(componentType); + final Object array = Array.newInstance(componentClass, elements.size()); + for (int i = 0; i < elements.size(); i++) + Array.set(array, i, convertService.convert(elements.get(i), + componentClass)); + return array; + } + + /** + * Gets the elements of {@code src}. + * + * @param src a {@link String} consisting of: + *
    + *
  1. A leading curly brace
  2. + *
  3. Some non-negative number of elements, can be a sublist.
  4. + *
  5. A trailing curly brace
  6. + *
+ * @return the elements of {@code src} + */ + private List elements(String src) { + // trim off the leading curly brace + if (src.startsWith("{")) src = src.substring(1); + // trim off the ending curly brace + if (src.endsWith("}")) src = src.substring(0, src.length() - 1); + return splitByComma(src); + } + + /** + * Custom method for {@link String} splitting. Splits on TOP-LEVEL commas. + * TODO: Is there a regex for which {@link String#split(String)} would work? + * + * @param s the {@link String} to split + * @return a {@link List} of substrings, split by a comma. + */ + private List splitByComma(String s) { + int openBraces = 0; + List arrayList = new ArrayList<>(); + int start = 0; + for (int i = 0; i < s.length(); i++) { + switch (s.charAt(i)) { + case '{': + openBraces++; + break; + case '}': + openBraces--; + break; + case ',': + if (openBraces == 0) { + addString(arrayList, s.substring(start, i)); + start = i + 1; + } + } + } + // Get the last substring + addString(arrayList, s.substring(start)); + return arrayList; + } + + /** + * Helper method used to filter and format the additions to {@code list} + * @param list the {@link List} to add to + * @param s the {@link String} to (potentially) be added. + */ + private void addString(List list, String s) { + s = s.trim(); + if (!s.equals("")) list.add(s); + } + +} diff --git a/src/main/java/org/scijava/util/ArrayUtils.java b/src/main/java/org/scijava/util/ArrayUtils.java index 0fda592c5..81b6cf28b 100644 --- a/src/main/java/org/scijava/util/ArrayUtils.java +++ b/src/main/java/org/scijava/util/ArrayUtils.java @@ -122,12 +122,6 @@ public static Collection toCollection(final Object value) { if (value instanceof Object[]) { return new ObjectArray<>((Object[]) value); } - if (value instanceof String) { - String[] arr = ((String) value).split("\\s*,\\s*"); - Collection c = new ObjectArray(arr); - c.removeIf(o -> o.equals("")); - return c; - } // This object is neither an array nor a collection. // So we wrap it in a list and return. final List list = new ObjectArray<>(Object.class); diff --git a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java new file mode 100644 index 000000000..9e1de8785 --- /dev/null +++ b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java @@ -0,0 +1,160 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.convert; + +import java.util.Arrays; +import java.util.List; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.scijava.Context; + +/** + * Tests {@link ArrayToStringConverter}. + * + * @author Gabriel Selzer + */ +public class ArrayToStringConverterTest { + + private final ArrayToStringConverter converter = new ArrayToStringConverter(); + private ConvertService convertService; + private Context context; + + @Before + public void setUp() { + context = new Context(ConvertService.class); + context.inject(converter); + convertService = context.getService(ConvertService.class); + } + + @After + public void tearDown() { + context.dispose(); + } + + /** + * Tests the ability of {@link StringToArrayConverter} in converting to arrays + * of various types + */ + @Test + public void testArrayConversion() { + // Component types for array conversions + List arrays = Arrays.asList( // + new byte[] { 1, 2, 3 }, // + new Byte[] { 1, 2, 3 }, // + new short[] { 1, 2, 3 }, // + new Short[] { 1, 2, 3 }, // + new int[] { 1, 2, 3 }, // + new Integer[] { 1, 2, 3 }, // + new long[] { 1, 2, 3 }, // + new Long[] { 1L, 2L, 3L }, // + new float[] { 1, 2, 3 }, // + new Float[] { 1F, 2F, 3F }, // + new double[] { 1, 2, 3 }, // + new Double[] { 1., 2., 3. } // + ); + // String expectation + String sInt = "{1, 2, 3}"; + String sFloat = "{1.0, 2.0, 3.0}"; + for (Object array : arrays) { + // Ensure our Converter can do the conversion + Assert.assertTrue(converter.canConvert(array, String.class)); + // Do the conversion + String converted = converter.convert(array, String.class); + // Ensure correctness + Assert.assertTrue(converted.equals(sInt) || converted.equals(sFloat)); + } + } + + /** + * Tests the ability of {@link ArrayToStringConverter} in converting + * 2-dimensional arrays + */ + @Test + public void test2DArrayConversion() { + byte[][] arr = new byte[][] { new byte[] { 0, 1 }, new byte[] { 2, 3 } }; + Assert.assertTrue(converter.canConvert(arr, String.class)); + String actual = converter.convert(arr, String.class); + String expected = "{{0, 1}, {2, 3}}"; + Assert.assertEquals(expected, actual); + } + + /** + * Tests the ability of {@link ArrayToStringConverter} in converting + * 3-dimensional arrays + */ + @Test + public void test3DArrayConversion() { + byte[][][] arr = new byte[2][2][2]; + for (int i = 0; i < 2; i++) + for (int j = 0; j < 2; j++) + for (int k = 0; k < 2; k++) + arr[i][j][k] = (byte) (i + j + k); + + Assert.assertTrue(converter.canConvert(arr, String.class)); + String actual = converter.convert(arr, String.class); + String expected = "{{{0, 1}, {1, 2}}, {{1, 2}, {2, 3}}}"; + Assert.assertEquals(expected, actual); + } + + /** + * Tests the ability of {@link ArrayToStringConverter} in converting empty + * arrays + */ + @Test + public void testEmptyArrayConversion() { + byte[] arr = new byte[0]; + Assert.assertTrue(converter.canConvert(arr, String.class)); + String actual = converter.convert(arr, String.class); + String expected = "{}"; + Assert.assertEquals(expected, actual); + } + + /** + * Tests the ability of {@link ArrayToStringConverter} and + * {@link StringToArrayConverter} to perform a cyclic conversion. + */ + @Test + public void testCyclicConversion() { + byte[] expected = new byte[] {1, 2, 3}; + // Do the first conversion + ArrayToStringConverter c1 = new ArrayToStringConverter(); + context.inject(c1); + String converted = c1.convert(expected, String.class); + // Convert back + StringToArrayConverter c2 = new StringToArrayConverter(); + context.inject(c2); + byte[] actual = c2.convert(converted, byte[].class); + Assert.assertArrayEquals(expected, actual); + } + +} diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java new file mode 100644 index 000000000..f26bf804c --- /dev/null +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -0,0 +1,158 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.convert; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.scijava.Context; + +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.List; + +/** + * Tests {@link StringToArrayConverter}. + * + * @author Gabriel Selzer + */ +public class StringToArrayConverterTest { + + private final StringToArrayConverter converter = new StringToArrayConverter(); + private ConvertService convertService; + private Context context; + + @Before + public void setUp() { + context = new Context(ConvertService.class); + context.inject(converter); + convertService = context.getService(ConvertService.class); + } + + @After + public void tearDown() { + context.dispose(); + } + + /** + * Tests the ability of {@link StringToArrayConverter} in converting to arrays + * of various types + */ + @Test + public void testArrayConversion() { + // Component types for array conversions + List> classes = Arrays.asList( // + byte.class, // + Byte.class, // + short.class, // + Short.class, // + int.class, // + Integer.class, // + long.class, // + Long.class, // + float.class, // + Float.class, // + double.class, // + Double.class // + ); + // String input + String s = "{0, 1, 2}"; + for (Class c : classes) { + // Make the array class + Class arrayClass = Array.newInstance(c, 0).getClass(); + // Ensure our Converter can do the conversion + Assert.assertTrue(converter.canConvert(s, arrayClass)); + // Do the conversion + Object converted = converter.convert(s, arrayClass); + // Ensure the output is the expected type + Assert.assertEquals(arrayClass, converted.getClass()); + for (int i = 0; i < 3; i++) { + // Ensure element correctness + Object expected = convertService.convert(i, c); + Assert.assertEquals(expected, Array.get(converted, i)); + } + } + } + + /** + * Tests the ability of {@link StringToArrayConverter} in converting + * 2-dimensional arrays + */ + @Test + public void test2DArrayConversion() { + String s = "{{0, 1}, {2, 3}}"; + Assert.assertTrue(converter.canConvert(s, byte[][].class)); + byte[][] actual = converter.convert(s, byte[][].class); + Assert.assertEquals(0, actual[0][0]); + Assert.assertEquals(1, actual[0][1]); + Assert.assertEquals(2, actual[1][0]); + Assert.assertEquals(3, actual[1][1]); + } + + /** + * Tests the ability of {@link StringToArrayConverter} in converting + * 3-dimensional arrays + */ + @Test + public void test3DArrayConversion() { + String s = "{{{0, 1}, {1, 2}},{{1, 2}, {2, 3}}}"; + Assert.assertTrue(converter.canConvert(s, byte[][][].class)); + byte[][][] actual = converter.convert(s, byte[][][].class); + + for (int i = 0; i < 2; i++) + for (int j = 0; j < 2; j++) + for (int k = 0; k < 2; k++) + Assert.assertEquals(i + j + k, actual[i][j][k]); + } + + /** + * Tests the ability of {@link StringToArrayConverter} in converting empty + * arrays + */ + @Test + public void testEmptyArrayConversion() { + String s = "{}"; + Assert.assertTrue(converter.canConvert(s, byte[].class)); + byte[] actual = converter.convert(s, byte[].class); + Assert.assertEquals(0, actual.length); + } + + /** + * Tests the ability of {@link StringToArrayConverter} in converting only + * arrays whose elements can be converted + */ + @Test + public void testInconvertibleArrayType() { + String s = "{ConverterA}"; + Assert.assertFalse(converter.canConvert(s, Converter[].class)); + } + +} diff --git a/src/test/java/org/scijava/module/ModuleServiceTest.java b/src/test/java/org/scijava/module/ModuleServiceTest.java index dffd09e02..dd9e15af8 100644 --- a/src/test/java/org/scijava/module/ModuleServiceTest.java +++ b/src/test/java/org/scijava/module/ModuleServiceTest.java @@ -40,9 +40,12 @@ import org.junit.Before; import org.junit.Test; import org.scijava.Context; -import org.scijava.util.ObjectArray; -import static org.junit.Assert.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; /** * Tests {@link ModuleService}. @@ -162,59 +165,63 @@ public void testGetSingleInput() throws ModuleException { @Test public void testSaveAndLoad() { - List parameterizations = new ArrayList<>(); - parameterizations.add(new Object[] { // - double[].class, new double[] {} // - }); - parameterizations.add(new Object[] { // - double[].class, new double[] { 1., 2., 3. } // - }); - parameterizations.add(new Object[] { // - Double[].class, new Double[] {} // - }); - parameterizations.add(new Object[] { // - Double[].class, new Double[] { 1., 2., 3. } // - }); - - for (Object[] params : parameterizations) { - Class type = (Class) params[0]; - Object expected = params[1]; - // Get a ModuleItem of the right type - MutableModule m = new DefaultMutableModule(); - m.getInfo().addInput(new DefaultMutableModuleItem<>(m, "a", type)); - @SuppressWarnings("unchecked") - final ModuleItem item = (ModuleItem) moduleService - .getSingleInput(m, type); - // Save a value to the ModuleItem - moduleService.save(item, expected); - // Load that value from the ModuleItem - Object actual = moduleService.load(item); - // Assert equality - if (expected.getClass().isArray()) assertArrayEquality(expected, actual); - else assertEquals(expected, actual); + List objects = new ArrayList<>(); + objects.add(new Object[] { new double[] {} }); + objects.add(new Object[] { new double[] { 1., 2., 3. } }); + objects.add(new Object[] { new Double[] {} }); + objects.add(new Object[] { new Double[] { 1., 2., 3. } }); + + for (Object[] params : objects) { + saveParam(params[0]); } } + private void saveParam(T object) { + @SuppressWarnings("unchecked") + Class c = (Class) object.getClass(); + // Get a ModuleItem of the right type + MutableModule m = new DefaultMutableModule(); + m.getInfo().addInput(new DefaultMutableModuleItem<>(m, "a", c)); + final ModuleItem item = moduleService.getSingleInput(m, c); + // Save a value to the ModuleItem + moduleService.save(item, object); + // Load that value from the ModuleItem + Object actual = moduleService.load(item); + // Assert equality + if (object.getClass().isArray()) assertArrayEquality(object, actual); + else assertEquals(object, actual); + } + private void assertArrayEquality(Object arr1, Object arr2) { // Ensure that both Objects are arrays of the same type! assertEquals(arr1.getClass(), arr2.getClass()); assertTrue(arr1.getClass().isArray()); // We must check primitive arrays as they cannot be cast to Object[] - if (arr1 instanceof boolean[]) // + if (arr1 instanceof boolean[]) { assertArrayEquals((boolean[]) arr1, (boolean[]) arr2); - else if (arr1 instanceof short[]) // + } + else if (arr1 instanceof byte[]) { + assertArrayEquals((byte[]) arr1, (byte[]) arr2); + } + else if (arr1 instanceof short[]) { assertArrayEquals((short[]) arr1, (short[]) arr2); - else if (arr1 instanceof int[]) // + } + else if (arr1 instanceof int[]) { assertArrayEquals((int[]) arr1, (int[]) arr2); - else if (arr1 instanceof long[]) // + } + else if (arr1 instanceof long[]) { assertArrayEquals((long[]) arr1, (long[]) arr2); - else if (arr1 instanceof float[]) // + } + else if (arr1 instanceof float[]) { assertArrayEquals((float[]) arr1, (float[]) arr2, 1e-6f); - else if (arr1 instanceof double[]) // + } + else if (arr1 instanceof double[]) { assertArrayEquals((double[]) arr1, (double[]) arr2, 1e-6); - else if (arr1 instanceof char[]) // + } + else if (arr1 instanceof char[]) { assertArrayEquals((char[]) arr1, (char[]) arr2); + } // Otherwise we can just cast to Object[] else assertArrayEquals((Object[]) arr1, (Object[]) arr2); } @@ -259,6 +266,7 @@ private static String mapToString(final Map map) { /** A sample module for testing the module service. */ public static class FooModule extends AbstractModule { + private final FooModuleInfo info; public FooModule(final FooModuleInfo info) { From 0142f59d03e0a031b60a67ed4b94eb59ad4be510 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Thu, 18 Aug 2022 09:42:38 -0500 Subject: [PATCH 029/185] Add a note about StringToArray.canConvert --- .../java/org/scijava/convert/StringToArrayConverter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index fdc57d5b4..d78df7d13 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -67,6 +67,11 @@ public boolean canConvert(final Object src, final Class dest) { String srcString = (String) src; if (!(srcString.startsWith("{") && srcString.endsWith("}"))) return false; List components = elements((String) src); + // NB this check is merely a heuristic. In the case of a heterogeneous + // array, canConvert may falsely return positive, if later elements in the + // string-ified array cannot be converted into Objects. We make this + // compromise in the interest of speed, however, as ensuring correctness + // would require a premature conversion of the entire array. return components.size() == 0 || convertService.supports(components.get(0), dest.getComponentType()); } From 8203b522944594365c3bb78c192fda6996c1bc9a Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Thu, 18 Aug 2022 09:46:08 -0500 Subject: [PATCH 030/185] Format StringToArray.convert() IAE better It doesn't wrap anymore. --- .../java/org/scijava/convert/StringToArrayConverter.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index d78df7d13..0dd55298f 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -79,8 +79,9 @@ public boolean canConvert(final Object src, final Class dest) { @Override public Object convert(Object src, Type dest) { final Type componentType = Types.component(dest); - if (componentType == null) throw new IllegalArgumentException(dest + - " is not an array type!"); + if (componentType == null) { + throw new IllegalArgumentException(dest + " is not an array type!"); + } return convertToArray((String) src, componentType); } From e852b7e3abc94e570977a933e313bf9d5efe515b Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 18 Aug 2022 11:12:09 -0500 Subject: [PATCH 031/185] README: change chat badge from gitter to zulip --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 06c483c15..42cba38b4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![](https://img.shields.io/maven-central/v/org.scijava/scijava-common.svg)](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.scijava%22%20AND%20a%3A%22scijava-common%22) [![](https://github.com/scijava/scijava-common/actions/workflows/build-main.yml/badge.svg)](https://github.com/scijava/scijava-common/actions/workflows/build-main.yml) -[![Join the chat at https://gitter.im/scijava/scijava-common](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/scijava/scijava-common?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![developer chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://imagesc.zulipchat.com/#narrow/stream/327237-SciJava) SciJava Common is a common library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed From e1ae87d67a1ce0e4efb61b698f0ccff562415972 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Thu, 18 Aug 2022 11:39:02 -0500 Subject: [PATCH 032/185] Use Parsington for string parsing --- .../convert/StringToArrayConverter.java | 94 +++++++++++++++---- 1 file changed, 78 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index 0dd55298f..8bbbf54c3 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -30,6 +30,8 @@ package org.scijava.convert; import org.scijava.Priority; +import org.scijava.parsington.ExpressionParser; +import org.scijava.parsington.SyntaxTree; import org.scijava.plugin.Parameter; import org.scijava.plugin.Plugin; import org.scijava.util.Types; @@ -38,6 +40,7 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; +import java.util.Optional; /** * A {@link Converter} that specializes in converting {@link String}s to @@ -47,12 +50,14 @@ * * @author Gabriel Selzer */ -@Plugin(type = Converter.class, priority=Priority.VERY_LOW) +@Plugin(type = Converter.class, priority = Priority.VERY_LOW) public class StringToArrayConverter extends AbstractConverter { @Parameter private ConvertService convertService; + private final ExpressionParser parser = new ExpressionParser(); + @Override public boolean canConvert(final Class src, final Class dest) { if (src == null) return false; @@ -61,19 +66,35 @@ public boolean canConvert(final Class src, final Class dest) { return saneSrc == String.class && saneDest.isArray(); } + @Override + public boolean canConvert(final Object src, final Type dest) { + return canConvert(src, Types.raw(dest)); + } + @Override public boolean canConvert(final Object src, final Class dest) { + + // First, ensure the base types conform if (!canConvert(src.getClass(), dest)) return false; - String srcString = (String) src; - if (!(srcString.startsWith("{") && srcString.endsWith("}"))) return false; - List components = elements((String) src); + // Then, ensure we can parse the string + SyntaxTree tree; + try { + tree = parser.parseTree((String) src); + } + catch (IllegalArgumentException e) { + return false; + } + // We can always convert empty arrays as we don't have to create Objects + if (tree.count() == 0) return true; + // Finally, ensure that we can convert the elements of the array. // NB this check is merely a heuristic. In the case of a heterogeneous // array, canConvert may falsely return positive, if later elements in the // string-ified array cannot be converted into Objects. We make this // compromise in the interest of speed, however, as ensuring correctness // would require a premature conversion of the entire array. - return components.size() == 0 || convertService.supports(components.get(0), - dest.getComponentType()); + Object testSrc = firstElement(tree); + Class testDest = unitComponentType(dest); + return convertService.supports(testSrc, testDest); } @Override @@ -82,13 +103,19 @@ public Object convert(Object src, Type dest) { if (componentType == null) { throw new IllegalArgumentException(dest + " is not an array type!"); } - return convertToArray((String) src, componentType); + try { + SyntaxTree tree = parser.parseTree((String) src); + return convertToArray(tree, Types.raw(componentType)); + } + catch (IllegalArgumentException e) { + return null; + } } @SuppressWarnings("unchecked") @Override public T convert(Object src, Class dest) { - return (T) convert((String) src, (Type) dest); + return (T) convert(src, (Type) dest); } @Override @@ -106,21 +133,55 @@ public Class getInputType() { /** * Converts {@code src} into an array of component type {@code componentType} * - * @param src the {@link String} to convert + * @param tree the {@link String} to convert * @param componentType the component type of the output array * @return an array of {@code componentType} whose elements were created from * {@code src} */ - private Object convertToArray(String src, final Type componentType) { - List elements = elements( src); - Class componentClass = Types.raw(componentType); - final Object array = Array.newInstance(componentClass, elements.size()); - for (int i = 0; i < elements.size(); i++) - Array.set(array, i, convertService.convert(elements.get(i), - componentClass)); + private Object convertToArray(SyntaxTree tree, final Class componentType) { + // Create the array + final Object array = Array.newInstance(componentType, tree.count()); + // Set each element of the array + for (int i = 0; i < tree.count(); i++) { + SyntaxTree subTree = tree.child(i); + Object element; + // Case 1: Element is an array + if (componentType.isArray()) { + element = convertToArray(subTree, componentType.getComponentType()); + } + // Case 2: Element is a single object + else { + element = convertService.convert(subTree.token(), componentType); + } + Array.set(array, i, element); + } return array; } + /** + * Similar to {@link Class#getComponentType()}, but handles nested array types + * + * @param c the {@link Class} that may be an array class + * @return the unit component type of {@link Class} {@code c} + */ + private Class unitComponentType(Class c) { + if (!c.isArray()) return c; + return unitComponentType(c.getComponentType()); + } + + /** + * Traverses {@code tree} to find the first element + * + * @param tree the {@link SyntaxTree} containing elements + * @return the first {@link Object} in {@code tree} + */ + private Object firstElement(SyntaxTree tree) { + while (tree.count() > 0) { + tree = tree.child(0); + } + return tree.token(); + } + /** * Gets the elements of {@code src}. * @@ -173,6 +234,7 @@ private List splitByComma(String s) { /** * Helper method used to filter and format the additions to {@code list} + * * @param list the {@link List} to add to * @param s the {@link String} to (potentially) be added. */ From 244348726da4796ada9e27e79439929a6a979372 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Thu, 18 Aug 2022 12:27:43 -0500 Subject: [PATCH 033/185] Clean up ModuleServiceTest --- .../org/scijava/module/ModuleServiceTest.java | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/test/java/org/scijava/module/ModuleServiceTest.java b/src/test/java/org/scijava/module/ModuleServiceTest.java index dd9e15af8..f863fe2ab 100644 --- a/src/test/java/org/scijava/module/ModuleServiceTest.java +++ b/src/test/java/org/scijava/module/ModuleServiceTest.java @@ -29,7 +29,13 @@ package org.scijava.module; -import java.util.ArrayList; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,12 +47,6 @@ import org.junit.Test; import org.scijava.Context; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; - /** * Tests {@link ModuleService}. * @@ -164,19 +164,16 @@ public void testGetSingleInput() throws ModuleException { @Test public void testSaveAndLoad() { - - List objects = new ArrayList<>(); - objects.add(new Object[] { new double[] {} }); - objects.add(new Object[] { new double[] { 1., 2., 3. } }); - objects.add(new Object[] { new Double[] {} }); - objects.add(new Object[] { new Double[] { 1., 2., 3. } }); - - for (Object[] params : objects) { - saveParam(params[0]); - } + List objects = Arrays.asList( // + new double[] {}, // + new double[] { 1., 2., 3. }, // + new Double[] {}, // + new Double[] { 1., 2., 3. } // + ); + objects.forEach(this::assertParamSavedAndLoaded); } - private void saveParam(T object) { + private void assertParamSavedAndLoaded(T object) { @SuppressWarnings("unchecked") Class c = (Class) object.getClass(); // Get a ModuleItem of the right type From e17229dc0a8caf81b7c2d6481db2d0e45e98a1d5 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Thu, 18 Aug 2022 13:41:04 -0500 Subject: [PATCH 034/185] Test special conditions --- .../convert/ArrayToStringConverter.java | 43 +++++++++++-- .../convert/StringToArrayConverter.java | 61 ------------------- .../convert/StringToArrayConverterTest.java | 36 ++++++++++- 3 files changed, 72 insertions(+), 68 deletions(-) diff --git a/src/main/java/org/scijava/convert/ArrayToStringConverter.java b/src/main/java/org/scijava/convert/ArrayToStringConverter.java index 922f2eac6..90f1e5ff2 100644 --- a/src/main/java/org/scijava/convert/ArrayToStringConverter.java +++ b/src/main/java/org/scijava/convert/ArrayToStringConverter.java @@ -31,8 +31,6 @@ import java.lang.reflect.Array; import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.List; import java.util.stream.Collectors; import org.scijava.Priority; @@ -67,13 +65,46 @@ public class ArrayToStringConverter extends AbstractConverter { return convertService.supports(Array.get(src, 0), dest); } - @Override public Object convert(Object src, Type dest) { - final String elementString = ArrayUtils.toCollection(src).stream() // - .map(object -> convertService.convert(object, String.class)) // - .collect(Collectors.joining(", ")); + @Override + public Object convert(Object src, Type dest) { + // Preprocess the "string-likes" + if (src.getClass().equals(String[].class) || // + src.getClass().equals(Character[].class) || // + src.getClass().equals(char[].class)) // + { + src = preprocessCharacters(src); + } + // Convert each element to Strings + String elementString = ArrayUtils.toCollection(src).stream() // + .map(object -> convertService.convert(object, String.class)) // + .collect(Collectors.joining(", ")); return "{" + elementString + "}"; } + private String[] preprocessStrings(final Object src) { + int numElements = Array.getLength(src); + String[] processed = new String[numElements]; + for (int i = 0; i < numElements; i++) { + processed[i] = preprocessString(Array.get(src, i)); + } + return processed; + } + + private String preprocessString(final Object o) { + String s = o.toString(); + s = s.replace("\\", "\\\\"); + s = s.replace("\"", "\\\""); + return "\"" + s + "\""; + } + + private String[] preprocessCharacters(Object src) { + String[] processed = new String[Array.getLength(src)]; + for (int i = 0; i < processed.length; i++) { + processed[i] = Array.get(src, i).toString(); + } + return preprocessStrings(processed); + } + @SuppressWarnings("unchecked") @Override public T convert(Object src, Class dest) { return (T) convert(src, (Type) dest); diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index 8bbbf54c3..64db2bb46 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -182,65 +182,4 @@ private Object firstElement(SyntaxTree tree) { return tree.token(); } - /** - * Gets the elements of {@code src}. - * - * @param src a {@link String} consisting of: - *
    - *
  1. A leading curly brace
  2. - *
  3. Some non-negative number of elements, can be a sublist.
  4. - *
  5. A trailing curly brace
  6. - *
- * @return the elements of {@code src} - */ - private List elements(String src) { - // trim off the leading curly brace - if (src.startsWith("{")) src = src.substring(1); - // trim off the ending curly brace - if (src.endsWith("}")) src = src.substring(0, src.length() - 1); - return splitByComma(src); - } - - /** - * Custom method for {@link String} splitting. Splits on TOP-LEVEL commas. - * TODO: Is there a regex for which {@link String#split(String)} would work? - * - * @param s the {@link String} to split - * @return a {@link List} of substrings, split by a comma. - */ - private List splitByComma(String s) { - int openBraces = 0; - List arrayList = new ArrayList<>(); - int start = 0; - for (int i = 0; i < s.length(); i++) { - switch (s.charAt(i)) { - case '{': - openBraces++; - break; - case '}': - openBraces--; - break; - case ',': - if (openBraces == 0) { - addString(arrayList, s.substring(start, i)); - start = i + 1; - } - } - } - // Get the last substring - addString(arrayList, s.substring(start)); - return arrayList; - } - - /** - * Helper method used to filter and format the additions to {@code list} - * - * @param list the {@link List} to add to - * @param s the {@link String} to (potentially) be added. - */ - private void addString(List list, String s) { - s = s.trim(); - if (!s.equals("")) list.add(s); - } - } diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java index f26bf804c..ef361b9e0 100644 --- a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -116,7 +116,6 @@ public void test2DArrayConversion() { Assert.assertEquals(2, actual[1][0]); Assert.assertEquals(3, actual[1][1]); } - /** * Tests the ability of {@link StringToArrayConverter} in converting * 3-dimensional arrays @@ -155,4 +154,39 @@ public void testInconvertibleArrayType() { Assert.assertFalse(converter.canConvert(s, Converter[].class)); } + /** + * Tests the special case of {@link String}s + */ + @Test + public void testStringArrayConversion() { + String[] expected = new String[] { // + "{foo", "bar}", // + "ha\nha", // + "foo,bar", // + "lol\"lol", // + "foo\\\"bar" // + }; + String converted = convertService.convert(expected, String.class); + String[] actual = convertService.convert(converted, String[].class); + Assert.assertArrayEquals(expected, actual); + } + + /** + * Tests the special case of {@link Character}s + */ + @Test + public void testCharacterArrayConversion() { + Character[] expected = new Character[] { // + 's', // + '\n', // + ',', // + '{', // + '}' // + }; + String converted = convertService.convert(expected, String.class); + Character[] actual = convertService.convert(converted, Character[].class); + Assert.assertArrayEquals(expected, actual); + } + + } From 95189404f8e8e7416a284e2509d6b1ebf76b3f15 Mon Sep 17 00:00:00 2001 From: Jan Eglinger Date: Thu, 25 Aug 2022 10:38:39 +0200 Subject: [PATCH 035/185] Adjust comment in NumberUtilsTest.java --- src/test/java/org/scijava/util/NumberUtilsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/scijava/util/NumberUtilsTest.java b/src/test/java/org/scijava/util/NumberUtilsTest.java index e175ab8e7..c838ccc89 100644 --- a/src/test/java/org/scijava/util/NumberUtilsTest.java +++ b/src/test/java/org/scijava/util/NumberUtilsTest.java @@ -64,7 +64,7 @@ public void testGetMaximumNumber() { assertEquals(Long.MAX_VALUE, NumberUtils.getMaximumNumber(Long.class)); assertEquals(Float.MAX_VALUE, NumberUtils.getMaximumNumber(Float.class)); assertEquals(Double.MAX_VALUE, NumberUtils.getMaximumNumber(Double.class)); - // Number's minimum value should be the smallest of all the above -> Double + // Number's maximum value should be the largest of all the above -> Double assertEquals(Double.MAX_VALUE, NumberUtils.getMaximumNumber(Number.class)); } } From a841ee2cdf128b827f83a0ab7df9def1724f3b45 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 29 Aug 2022 16:06:47 -0500 Subject: [PATCH 036/185] DefaultUIService: fix class name typo The relevant class is GraphicsEnvironment, not GraphicsConfiguration. --- src/main/java/org/scijava/ui/DefaultUIService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/ui/DefaultUIService.java b/src/main/java/org/scijava/ui/DefaultUIService.java index 42899053b..d26cbd5d7 100644 --- a/src/main/java/org/scijava/ui/DefaultUIService.java +++ b/src/main/java/org/scijava/ui/DefaultUIService.java @@ -191,7 +191,7 @@ public void setHeadless(final boolean headless) { @Override public boolean isHeadless() { - // NB: We do not use java.awt.GraphicsConfiguration.isHeadless() + // NB: We do not use java.awt.GraphicsEnvironment.isHeadless() // because scijava-common eschews java.awt.* classes when possible. return forceHeadless || Boolean.getBoolean("java.awt.headless"); } From 77758562d0a1526cbcf19f4980f42e93a44db264 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sat, 17 Sep 2022 12:33:37 -0500 Subject: [PATCH 037/185] POM: update parent to pom-scijava 33.2.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0ed9c5fc3..8f538e5bc 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 32.0.0-beta-4 + 33.2.0 From aa7fe2e241c9e5dcca2ffad7945475aca47dc72c Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sat, 17 Sep 2022 17:53:33 -0500 Subject: [PATCH 038/185] Fix bug where text formats claim all files The file extension check was not being invoked, due to multiple inheritance order of precedence. --- .../org/scijava/text/AbstractTextFormat.java | 11 ++- .../java/org/scijava/text/TextFormat.java | 1 + .../org/scijava/text/TextServiceTest.java | 86 +++++++++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/scijava/text/TextServiceTest.java diff --git a/src/main/java/org/scijava/text/AbstractTextFormat.java b/src/main/java/org/scijava/text/AbstractTextFormat.java index 202092996..72654f649 100644 --- a/src/main/java/org/scijava/text/AbstractTextFormat.java +++ b/src/main/java/org/scijava/text/AbstractTextFormat.java @@ -41,5 +41,14 @@ public abstract class AbstractTextFormat extends AbstractHandlerPlugin implements TextFormat { - // NB: No implementation needed. + // -- Typed methods -- + + @Override + public boolean supports(final File data) { + // NB: This override is necessary, because the default super is + // AbstractHandlerPlugin->AbstractTypedPlugin->TypedPlugin->Typed, + // which fails to invoke the needed TextFormat.super. + // See fiji/fiji#303 and fiji/HDF5_Vibez#18. + return TextFormat.super.supports(data); + } } diff --git a/src/main/java/org/scijava/text/TextFormat.java b/src/main/java/org/scijava/text/TextFormat.java index 40a314e8a..01002be53 100644 --- a/src/main/java/org/scijava/text/TextFormat.java +++ b/src/main/java/org/scijava/text/TextFormat.java @@ -63,6 +63,7 @@ public interface TextFormat extends HandlerPlugin { @Override default boolean supports(final File file) { + if (!HandlerPlugin.super.supports(file)) return false; for (final String ext : getExtensions()) { if (FileUtils.getExtension(file).equalsIgnoreCase(ext)) return true; } diff --git a/src/test/java/org/scijava/text/TextServiceTest.java b/src/test/java/org/scijava/text/TextServiceTest.java new file mode 100644 index 000000000..974e0cbac --- /dev/null +++ b/src/test/java/org/scijava/text/TextServiceTest.java @@ -0,0 +1,86 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ +package org.scijava.text; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.io.File; +import java.util.Arrays; +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.scijava.Context; +import org.scijava.plugin.Plugin; + +/** Tests {@link TextService}. */ +public class TextServiceTest { + + private Context ctx; + private TextService textService; + + @Before + public void setUp() { + ctx = new Context(TextService.class); + textService = ctx.service(TextService.class); + } + + @After + public void tearDown() { + ctx.dispose(); + } + + @Test + public void testGetHandler() { + final TextFormat fooHandler = textService.getHandler(new File("data.foo")); + assertNotNull(fooHandler); + assertEquals(FooTextFormat.class, fooHandler.getClass()); + System.out.println(fooHandler); + + final TextFormat barHandler = textService.getHandler(new File("data.bar")); + assertNull(barHandler); + } + + @Plugin(type = TextFormat.class) + public static class FooTextFormat extends AbstractTextFormat { + + @Override + public List getExtensions() { + return Arrays.asList("foo"); + } + + @Override + public String asHTML(final String text) { + return "[FOO]" + text + "[/FOO]"; + } + } +} From 17da84f728d8a6abdf9be1da2362ee61b40cfbad Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Wed, 21 Sep 2022 16:12:21 -0500 Subject: [PATCH 039/185] Remove unused imports and fields --- src/main/java/org/scijava/convert/StringToArrayConverter.java | 3 --- src/main/java/org/scijava/util/ArrayUtils.java | 2 -- .../java/org/scijava/convert/ArrayToStringConverterTest.java | 2 -- 3 files changed, 7 deletions(-) diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index 64db2bb46..4882e747a 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -38,9 +38,6 @@ import java.lang.reflect.Array; import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; /** * A {@link Converter} that specializes in converting {@link String}s to diff --git a/src/main/java/org/scijava/util/ArrayUtils.java b/src/main/java/org/scijava/util/ArrayUtils.java index 81b6cf28b..c6487c5cf 100644 --- a/src/main/java/org/scijava/util/ArrayUtils.java +++ b/src/main/java/org/scijava/util/ArrayUtils.java @@ -58,9 +58,7 @@ package org.scijava.util; -import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.List; /** diff --git a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java index 9e1de8785..63a1f4ba9 100644 --- a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java +++ b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java @@ -46,14 +46,12 @@ public class ArrayToStringConverterTest { private final ArrayToStringConverter converter = new ArrayToStringConverter(); - private ConvertService convertService; private Context context; @Before public void setUp() { context = new Context(ConvertService.class); context.inject(converter); - convertService = context.getService(ConvertService.class); } @After From 73239ad09c78170494b07f0a3e6ce1ad50207033 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Wed, 21 Sep 2022 16:55:56 -0500 Subject: [PATCH 040/185] Use ParseService Thanks @ctrueden for the suggestion --- .../convert/StringToArrayConverter.java | 27 +++++++++---------- .../convert/ArrayToStringConverterTest.java | 3 ++- .../convert/StringToArrayConverterTest.java | 3 ++- .../org/scijava/module/ModuleServiceTest.java | 3 ++- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index 4882e747a..e75415532 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -30,6 +30,8 @@ package org.scijava.convert; import org.scijava.Priority; +import org.scijava.parse.Items; +import org.scijava.parse.ParseService; import org.scijava.parsington.ExpressionParser; import org.scijava.parsington.SyntaxTree; import org.scijava.plugin.Parameter; @@ -53,6 +55,9 @@ public class StringToArrayConverter extends AbstractConverter { @Parameter private ConvertService convertService; + @Parameter + private ParseService parseService; + private final ExpressionParser parser = new ExpressionParser(); @Override @@ -101,8 +106,9 @@ public Object convert(Object src, Type dest) { throw new IllegalArgumentException(dest + " is not an array type!"); } try { - SyntaxTree tree = parser.parseTree((String) src); - return convertToArray(tree, Types.raw(componentType)); + return convertToArray( // + parseService.parse((String) src), // + Types.raw(componentType)); } catch (IllegalArgumentException e) { return null; @@ -135,21 +141,12 @@ public Class getInputType() { * @return an array of {@code componentType} whose elements were created from * {@code src} */ - private Object convertToArray(SyntaxTree tree, final Class componentType) { + private Object convertToArray(Items tree, final Class componentType) { // Create the array - final Object array = Array.newInstance(componentType, tree.count()); + final Object array = Array.newInstance(componentType, tree.size()); // Set each element of the array - for (int i = 0; i < tree.count(); i++) { - SyntaxTree subTree = tree.child(i); - Object element; - // Case 1: Element is an array - if (componentType.isArray()) { - element = convertToArray(subTree, componentType.getComponentType()); - } - // Case 2: Element is a single object - else { - element = convertService.convert(subTree.token(), componentType); - } + for (int i = 0; i < tree.size(); i++) { + Object element = convertService.convert(tree.get(i).value(), componentType); Array.set(array, i, element); } return array; diff --git a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java index 63a1f4ba9..7623017cb 100644 --- a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java +++ b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java @@ -37,6 +37,7 @@ import org.junit.Before; import org.junit.Test; import org.scijava.Context; +import org.scijava.parse.ParseService; /** * Tests {@link ArrayToStringConverter}. @@ -50,7 +51,7 @@ public class ArrayToStringConverterTest { @Before public void setUp() { - context = new Context(ConvertService.class); + context = new Context(ConvertService.class, ParseService.class); context.inject(converter); } diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java index ef361b9e0..0c0dfdd67 100644 --- a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -34,6 +34,7 @@ import org.junit.Before; import org.junit.Test; import org.scijava.Context; +import org.scijava.parse.ParseService; import java.lang.reflect.Array; import java.util.Arrays; @@ -52,7 +53,7 @@ public class StringToArrayConverterTest { @Before public void setUp() { - context = new Context(ConvertService.class); + context = new Context(ParseService.class, ConvertService.class); context.inject(converter); convertService = context.getService(ConvertService.class); } diff --git a/src/test/java/org/scijava/module/ModuleServiceTest.java b/src/test/java/org/scijava/module/ModuleServiceTest.java index f863fe2ab..2bd1fcb4b 100644 --- a/src/test/java/org/scijava/module/ModuleServiceTest.java +++ b/src/test/java/org/scijava/module/ModuleServiceTest.java @@ -46,6 +46,7 @@ import org.junit.Before; import org.junit.Test; import org.scijava.Context; +import org.scijava.parse.ParseService; /** * Tests {@link ModuleService}. @@ -58,7 +59,7 @@ public class ModuleServiceTest { @Before public void setUp() { - final Context context = new Context(ModuleService.class); + final Context context = new Context(ModuleService.class, ParseService.class); moduleService = context.service(ModuleService.class); } From 4843209ea4e0413661d472530ef25c3a8b4231bf Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 21 Sep 2022 18:20:06 -0500 Subject: [PATCH 041/185] POM: update parent to pom-scijava 33.2.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b49783f68..97c05cd19 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 32.0.0-beta-3 + 33.2.0 From 1df50ddead3447bbf74315608997b45f79ae2eda Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 21 Sep 2022 18:34:25 -0500 Subject: [PATCH 042/185] StringToArrayConverterTest: assert more thoroughly We can also assert the converted string, before converting back. --- .../org/scijava/convert/StringToArrayConverterTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java index 0c0dfdd67..dc1b87f18 100644 --- a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -168,6 +168,11 @@ public void testStringArrayConversion() { "foo\\\"bar" // }; String converted = convertService.convert(expected, String.class); + Assert.assertEquals("{\"{foo\", \"bar}\", " + // + "\"ha\nha\", " + // + "\"foo,bar\", " + // + "\"lol\\\"lol\", " + // + "\"foo\\\\\\\"bar\"}", converted); String[] actual = convertService.convert(converted, String[].class); Assert.assertArrayEquals(expected, actual); } @@ -185,6 +190,7 @@ public void testCharacterArrayConversion() { '}' // }; String converted = convertService.convert(expected, String.class); + Assert.assertEquals("{\"s\", \"\n\", \",\", \"{\", \"}\"}", converted); Character[] actual = convertService.convert(converted, Character[].class); Assert.assertArrayEquals(expected, actual); } From 14f4e47b38eb6f01b5acbe63a765c54a50c94745 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 21 Sep 2022 18:45:34 -0500 Subject: [PATCH 043/185] Fix license header whitespace The license-maven-plugin wants the extra trailing whitespace... --- src/main/java/org/scijava/convert/ArrayToStringConverter.java | 4 ++-- src/main/java/org/scijava/convert/StringToArrayConverter.java | 4 ++-- .../java/org/scijava/convert/ArrayToStringConverterTest.java | 4 ++-- .../java/org/scijava/convert/StringToArrayConverterTest.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/scijava/convert/ArrayToStringConverter.java b/src/main/java/org/scijava/convert/ArrayToStringConverter.java index 90f1e5ff2..77850b481 100644 --- a/src/main/java/org/scijava/convert/ArrayToStringConverter.java +++ b/src/main/java/org/scijava/convert/ArrayToStringConverter.java @@ -6,13 +6,13 @@ * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index e75415532..ef0b291c6 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -6,13 +6,13 @@ * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE diff --git a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java index 7623017cb..7f1f07b13 100644 --- a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java +++ b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java @@ -6,13 +6,13 @@ * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java index dc1b87f18..8234adae7 100644 --- a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -6,13 +6,13 @@ * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE From 42db182fa90ebe4fc79163713b8cf5ac7ee9b143 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 21 Sep 2022 18:51:36 -0500 Subject: [PATCH 044/185] Make services optional for array/string converters Especially the ParseService, because otherwise, if you include the ConvertService in your context without the ParseService, you'll see warnings that the StringToArrayConverter plugin cannot be instantiated. --- .../java/org/scijava/convert/ArrayToStringConverter.java | 4 +++- .../java/org/scijava/convert/StringToArrayConverter.java | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/scijava/convert/ArrayToStringConverter.java b/src/main/java/org/scijava/convert/ArrayToStringConverter.java index 77850b481..029f5c1dd 100644 --- a/src/main/java/org/scijava/convert/ArrayToStringConverter.java +++ b/src/main/java/org/scijava/convert/ArrayToStringConverter.java @@ -50,7 +50,8 @@ @Plugin(type = Converter.class, priority = Priority.VERY_LOW) public class ArrayToStringConverter extends AbstractConverter { - @Parameter private ConvertService convertService; + @Parameter(required = false) + private ConvertService convertService; @Override public boolean canConvert(final Class src, final Class dest) { if (src == null) return false; @@ -60,6 +61,7 @@ public class ArrayToStringConverter extends AbstractConverter { } @Override public boolean canConvert(final Object src, final Class dest) { + if (convertService == null) return false; if (!canConvert(src.getClass(), dest)) return false; if (Array.getLength(src) == 0) return true; return convertService.supports(Array.get(src, 0), dest); diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index ef0b291c6..933561ef9 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -52,10 +52,10 @@ @Plugin(type = Converter.class, priority = Priority.VERY_LOW) public class StringToArrayConverter extends AbstractConverter { - @Parameter + @Parameter(required = false) private ConvertService convertService; - @Parameter + @Parameter(required = false) private ParseService parseService; private final ExpressionParser parser = new ExpressionParser(); @@ -75,6 +75,7 @@ public boolean canConvert(final Object src, final Type dest) { @Override public boolean canConvert(final Object src, final Class dest) { + if (convertService == null || parseService == null) return false; // First, ensure the base types conform if (!canConvert(src.getClass(), dest)) return false; From 497eff6eca3ee9687acddd9453859fef40071390 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 21 Sep 2022 19:03:08 -0500 Subject: [PATCH 045/185] StringToArrayConverter: purge Parsington usage The "Use ParseService" commit (73239ad09c78170494b07f0a3e6ce1ad50207033) was an incomplete update. This commit finishes the job, and fixes a bug in the recursive canConvert logic for multidimensional arrays. --- .../convert/StringToArrayConverter.java | 38 +++++-------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index 933561ef9..c5a34abad 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -29,18 +29,16 @@ package org.scijava.convert; +import java.lang.reflect.Array; +import java.lang.reflect.Type; + import org.scijava.Priority; import org.scijava.parse.Items; import org.scijava.parse.ParseService; -import org.scijava.parsington.ExpressionParser; -import org.scijava.parsington.SyntaxTree; import org.scijava.plugin.Parameter; import org.scijava.plugin.Plugin; import org.scijava.util.Types; -import java.lang.reflect.Array; -import java.lang.reflect.Type; - /** * A {@link Converter} that specializes in converting {@link String}s to * n-dimensional arrays. This {@link Converter} can convert any array whose @@ -58,8 +56,6 @@ public class StringToArrayConverter extends AbstractConverter { @Parameter(required = false) private ParseService parseService; - private final ExpressionParser parser = new ExpressionParser(); - @Override public boolean canConvert(final Class src, final Class dest) { if (src == null) return false; @@ -80,22 +76,22 @@ public boolean canConvert(final Object src, final Class dest) { // First, ensure the base types conform if (!canConvert(src.getClass(), dest)) return false; // Then, ensure we can parse the string - SyntaxTree tree; + Items tree; try { - tree = parser.parseTree((String) src); + tree = parseService.parse((String) src); } - catch (IllegalArgumentException e) { + catch (final IllegalArgumentException e) { return false; } // We can always convert empty arrays as we don't have to create Objects - if (tree.count() == 0) return true; + if (tree.size() == 0) return true; // Finally, ensure that we can convert the elements of the array. // NB this check is merely a heuristic. In the case of a heterogeneous // array, canConvert may falsely return positive, if later elements in the // string-ified array cannot be converted into Objects. We make this // compromise in the interest of speed, however, as ensuring correctness // would require a premature conversion of the entire array. - Object testSrc = firstElement(tree); + Object testSrc = tree.get(0).value(); Class testDest = unitComponentType(dest); return convertService.supports(testSrc, testDest); } @@ -111,7 +107,7 @@ public Object convert(Object src, Type dest) { parseService.parse((String) src), // Types.raw(componentType)); } - catch (IllegalArgumentException e) { + catch (final IllegalArgumentException e) { return null; } } @@ -161,20 +157,6 @@ private Object convertToArray(Items tree, final Class componentType) { */ private Class unitComponentType(Class c) { if (!c.isArray()) return c; - return unitComponentType(c.getComponentType()); + return c.getComponentType(); } - - /** - * Traverses {@code tree} to find the first element - * - * @param tree the {@link SyntaxTree} containing elements - * @return the first {@link Object} in {@code tree} - */ - private Object firstElement(SyntaxTree tree) { - while (tree.count() > 0) { - tree = tree.child(0); - } - return tree.token(); - } - } From 19637c4d2f1c4500a6c25882bb7c87dc65ab65a8 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 22 Sep 2022 10:41:03 -0500 Subject: [PATCH 046/185] Update some hyperlinks, and use HTTPS if possible --- NOTICE.txt | 4 ++-- README.md | 2 +- src/it/apt-test/pom.xml | 2 +- src/main/java/org/scijava/app/App.java | 2 +- src/main/java/org/scijava/io/location/URILocation.java | 2 +- src/main/java/org/scijava/io/nio/NIOService.java | 4 ++-- src/main/java/org/scijava/plugin/Parameter.java | 2 +- src/main/java/org/scijava/plugin/PluginIndex.java | 2 +- .../java/org/scijava/script/DefaultScriptInterpreter.java | 4 ++-- src/main/java/org/scijava/text/DefaultTextService.java | 2 +- src/main/java/org/scijava/util/AppUtils.java | 4 ++-- src/main/java/org/scijava/util/FileUtils.java | 2 +- src/main/java/org/scijava/util/ListUtils.java | 2 +- src/main/java/org/scijava/util/MirrorWebsite.java | 2 +- src/main/java/org/scijava/util/POM.java | 2 +- src/main/java/org/scijava/util/Types.java | 4 +--- src/test/java/org/scijava/util/FileUtilsTest.java | 8 ++++---- 17 files changed, 24 insertions(+), 26 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 74385d300..78b8ce335 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -5,7 +5,7 @@ both of which are licensed under the Apache 2.0 license, as follows: Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -197,7 +197,7 @@ both of which are licensed under the Apache 2.0 license, as follows: you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/README.md b/README.md index 42cba38b4..6a69bf198 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![](https://img.shields.io/maven-central/v/org.scijava/scijava-common.svg)](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.scijava%22%20AND%20a%3A%22scijava-common%22) +[![](https://img.shields.io/maven-central/v/org.scijava/scijava-common.svg)](https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.scijava%22%20AND%20a%3A%22scijava-common%22) [![](https://github.com/scijava/scijava-common/actions/workflows/build-main.yml/badge.svg)](https://github.com/scijava/scijava-common/actions/workflows/build-main.yml) [![developer chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://imagesc.zulipchat.com/#narrow/stream/327237-SciJava) diff --git a/src/it/apt-test/pom.xml b/src/it/apt-test/pom.xml index 8bfa04980..93eab1f4c 100644 --- a/src/it/apt-test/pom.xml +++ b/src/it/apt-test/pom.xml @@ -31,7 +31,7 @@ + https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 @project.groupId@ diff --git a/src/main/java/org/scijava/app/App.java b/src/main/java/org/scijava/app/App.java index ad603f17f..aaa359dd9 100644 --- a/src/main/java/org/scijava/app/App.java +++ b/src/main/java/org/scijava/app/App.java @@ -144,7 +144,7 @@ default void quit() { /** * Gets the version of the application. *

- * SciJava conforms to the Semantic + * SciJava conforms to the Semantic * Versioning specification. *

* diff --git a/src/main/java/org/scijava/io/location/URILocation.java b/src/main/java/org/scijava/io/location/URILocation.java index 3311412e0..7b58d6a39 100644 --- a/src/main/java/org/scijava/io/location/URILocation.java +++ b/src/main/java/org/scijava/io/location/URILocation.java @@ -112,7 +112,7 @@ private Map decodeQuery(final String query) { * @see URLDecoder */ private String decode(final String s) { - // http://stackoverflow.com/a/6926987 + // https://stackoverflow.com/a/6926987 try { return URLDecoder.decode(s.replace("+", "%2B"), "UTF-8"); } diff --git a/src/main/java/org/scijava/io/nio/NIOService.java b/src/main/java/org/scijava/io/nio/NIOService.java index cbc8d681d..111ceb81c 100644 --- a/src/main/java/org/scijava/io/nio/NIOService.java +++ b/src/main/java/org/scijava/io/nio/NIOService.java @@ -60,8 +60,8 @@ public interface NIOService extends SciJavaService { * buffer. * @param newSize The buffer size. * @return A newly allocated or mapped NIO byte buffer. - * @see "http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5092131" - * @see "http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6417205" + * @see "https://bugs.java.com/bugdatabase/view_bug.do?bug_id=5092131" + * @see "https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6417205" * @throws IOException If there is an issue mapping, aligning or allocating * the buffer. */ diff --git a/src/main/java/org/scijava/plugin/Parameter.java b/src/main/java/org/scijava/plugin/Parameter.java index 0a41c094d..cddcad87b 100644 --- a/src/main/java/org/scijava/plugin/Parameter.java +++ b/src/main/java/org/scijava/plugin/Parameter.java @@ -71,7 +71,7 @@ * */ // NB: We use the fully qualified name to work around a javac bug: - // http://bugs.sun.com/view_bug.do?bug_id=6512707 + // https://bugs.java.com/view_bug.do?bug_id=6512707 // See: // http://groups.google.com/group/project-lombok/browse_thread/thread/c5568eb659cab203 ItemIO type() default org.scijava.ItemIO.INPUT; diff --git a/src/main/java/org/scijava/plugin/PluginIndex.java b/src/main/java/org/scijava/plugin/PluginIndex.java index 73763ef03..640b6d61b 100644 --- a/src/main/java/org/scijava/plugin/PluginIndex.java +++ b/src/main/java/org/scijava/plugin/PluginIndex.java @@ -88,7 +88,7 @@ public PluginIndex() { */ @SuppressWarnings({ "rawtypes", "unchecked" }) public PluginIndex(final PluginFinder pluginFinder) { - // NB: See: http://stackoverflow.com/questions/4765520/ + // NB: See: https://stackoverflow.com/questions/4765520/ super((Class) PluginInfo.class); this.pluginFinder = pluginFinder; } diff --git a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java index 147c141af..2e51a6322 100644 --- a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java +++ b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java @@ -46,7 +46,7 @@ * The default implementation of a {@link ScriptInterpreter}. *

* Credit to Jason Sachs for the multi-line evaluation (see - * his post on StackOverflow). + * his post on StackOverflow). *

* * @author Johannes Schindelin @@ -174,7 +174,7 @@ public Object eval(final String command) throws ScriptException { * fact that there was a syntax error in the 2nd line. * *

- * For further details, see SO + * For further details, see SO * #5584674. *

*/ diff --git a/src/main/java/org/scijava/text/DefaultTextService.java b/src/main/java/org/scijava/text/DefaultTextService.java index dab8a2898..63c56cb9d 100644 --- a/src/main/java/org/scijava/text/DefaultTextService.java +++ b/src/main/java/org/scijava/text/DefaultTextService.java @@ -59,7 +59,7 @@ public final class DefaultTextService extends @Override public String open(final File file) throws IOException { - // This routine is from: http://stackoverflow.com/a/326440 + // This routine is from: https://stackoverflow.com/a/326440 try (final FileInputStream stream = new FileInputStream(file)) { final FileChannel fc = stream.getChannel(); final MappedByteBuffer bb = diff --git a/src/main/java/org/scijava/util/AppUtils.java b/src/main/java/org/scijava/util/AppUtils.java index e83e06798..31456cb10 100644 --- a/src/main/java/org/scijava/util/AppUtils.java +++ b/src/main/java/org/scijava/util/AppUtils.java @@ -130,7 +130,7 @@ public static File getBaseDirectory(final Class c) { public static File getBaseDirectory(final Class c, final String baseSubdirectory) { - // see: http://stackoverflow.com/a/12733172/1207769 + // see: https://stackoverflow.com/a/12733172/1207769 // step 1: convert Class to URL final URL location = Types.location(c); @@ -171,7 +171,7 @@ public static File getBaseDirectory(final Class c, * this cache is located in {@code ~/.m2/repository}. The location will be * {@code groupId/artifactId/version/artifactId-version.jar} where * {@code groupId}, {@code artifactId} and {@code version} are the Maven GAV + * href="https://maven.apache.org/pom.html#Maven_Coordinates">Maven GAV * coordinates. Note that in this case, no base directory with respect to * the given class can be found, and this method will return null. *
  • Within a JAR file beneath the base directory. Common cases diff --git a/src/main/java/org/scijava/util/FileUtils.java b/src/main/java/org/scijava/util/FileUtils.java index 4de14f37f..3a3efd896 100644 --- a/src/main/java/org/scijava/util/FileUtils.java +++ b/src/main/java/org/scijava/util/FileUtils.java @@ -28,7 +28,7 @@ */ // File path shortening code adapted from: -// from: http://www.rgagnon.com/javadetails/java-0661.html +// from: https://www.rgagnon.com/javadetails/java-0661.html package org.scijava.util; diff --git a/src/main/java/org/scijava/util/ListUtils.java b/src/main/java/org/scijava/util/ListUtils.java index 170124839..2d433e667 100644 --- a/src/main/java/org/scijava/util/ListUtils.java +++ b/src/main/java/org/scijava/util/ListUtils.java @@ -28,7 +28,7 @@ */ // File path shortening code adapted from: -// from: http://www.rgagnon.com/javadetails/java-0661.html +// from: https://www.rgagnon.com/javadetails/java-0661.html package org.scijava.util; diff --git a/src/main/java/org/scijava/util/MirrorWebsite.java b/src/main/java/org/scijava/util/MirrorWebsite.java index d8f076e40..5df62bb10 100644 --- a/src/main/java/org/scijava/util/MirrorWebsite.java +++ b/src/main/java/org/scijava/util/MirrorWebsite.java @@ -58,7 +58,7 @@ * This program mirrors a given website. *

    * Its primary purpose is to provide the code necessary to keep ImageJ Mirror up-to-date. + * href="https://mirror.imagej.net/">ImageJ Mirror up-to-date. *

    * * @author Johannes Schindelin diff --git a/src/main/java/org/scijava/util/POM.java b/src/main/java/org/scijava/util/POM.java index 8de96e17f..2a9c979b7 100644 --- a/src/main/java/org/scijava/util/POM.java +++ b/src/main/java/org/scijava/util/POM.java @@ -335,7 +335,7 @@ public static List getAllPOMs() { * that one has a suffix beginning with a dash ({@code -}), the version with * suffix will be considered less than the one without a suffix. The * reason for this is to accommodate the SemVer versioning scheme's usage of + * href="https://semver.org/">SemVer versioning scheme's usage of * "prerelease" version suffixes. For example, {@code 2.0.0} will compare * greater than {@code 2.0.0-beta-1}, whereas {@code 2.0.0} will compare less * than {@code 2.0.0.1}.
  • diff --git a/src/main/java/org/scijava/util/Types.java b/src/main/java/org/scijava/util/Types.java index 441516eaa..9ded87575 100644 --- a/src/main/java/org/scijava/util/Types.java +++ b/src/main/java/org/scijava/util/Types.java @@ -998,7 +998,7 @@ private static Class arrayOrNull(final Class componentType) { * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -3485,8 +3485,6 @@ else if (type instanceof GenericArrayType) { } private static Type[] getArrayExactDirectSuperTypes(final Type arrayType) { - // see - // http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.10.3 final Type typeComponent = getArrayComponentType(arrayType); Type[] result; diff --git a/src/test/java/org/scijava/util/FileUtilsTest.java b/src/test/java/org/scijava/util/FileUtilsTest.java index dab013e7a..51f6286af 100644 --- a/src/test/java/org/scijava/util/FileUtilsTest.java +++ b/src/test/java/org/scijava/util/FileUtilsTest.java @@ -157,8 +157,8 @@ public void testShortenPath() { .shortenPath("\\\\server\\p1\\p2\\p3\\p4\\p5\\p6")); assertEquals("\\\\server\\p1\\p2\\p3", FileUtils .shortenPath("\\\\server\\p1\\p2\\p3")); - assertEquals("http://www.rgagnon.com/p1/p2/p3/.../pb.html", FileUtils - .shortenPath("http://www.rgagnon.com/p1/p2/p3/p4/p5/pb.html")); + assertEquals("https://www.rgagnon.com/p1/p2/p3/.../pb.html", FileUtils + .shortenPath("https://www.rgagnon.com/p1/p2/p3/p4/p5/pb.html")); } @Test @@ -177,8 +177,8 @@ public void testLimitPath() { "C:/1/2/3/4/5/test.txt", 15)); assertEquals("\\\\server\\p1\\p2\\...p6", FileUtils.limitPath( "\\\\server\\p1\\p2\\p3\\p4\\p5\\p6", 20)); - assertEquals("http://www...pb.html/", FileUtils.limitPath( - "http://www.rgagnon.com/p1/p2/p3/p4/p5/pb.html", 20)); + assertEquals("https://www...pb.html/", FileUtils.limitPath( + "https://www.rgagnon.com/p1/p2/p3/p4/p5/pb.html", 21)); } @Test From 1b0498e6dd82f4b70b4c64c7636700705e657fc0 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 22 Sep 2022 10:51:40 -0500 Subject: [PATCH 047/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8f538e5bc..09c7f7863 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.89.1-SNAPSHOT + 2.89.2-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 20dcf5871915770584e7dc92d0d56e3c8179c6af Mon Sep 17 00:00:00 2001 From: hinerm Date: Fri, 23 Sep 2022 11:13:42 -0500 Subject: [PATCH 048/185] ArrayToStringConverter: support {null} case Avoid throwing an NPE if given a String[] containing a null value. Closes #444 --- .../scijava/convert/ArrayToStringConverter.java | 14 ++++++++++---- .../convert/ArrayToStringConverterTest.java | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/scijava/convert/ArrayToStringConverter.java b/src/main/java/org/scijava/convert/ArrayToStringConverter.java index 029f5c1dd..4000ab6d3 100644 --- a/src/main/java/org/scijava/convert/ArrayToStringConverter.java +++ b/src/main/java/org/scijava/convert/ArrayToStringConverter.java @@ -93,16 +93,22 @@ private String[] preprocessStrings(final Object src) { } private String preprocessString(final Object o) { - String s = o.toString(); - s = s.replace("\\", "\\\\"); - s = s.replace("\"", "\\\""); + String s; + if (o == null) { + return null; + } else { + s = o.toString(); + s = s.replace("\\", "\\\\"); + s = s.replace("\"", "\\\""); + } return "\"" + s + "\""; } private String[] preprocessCharacters(Object src) { String[] processed = new String[Array.getLength(src)]; for (int i = 0; i < processed.length; i++) { - processed[i] = Array.get(src, i).toString(); + Object value = Array.get(src, i); + processed[i] = value == null ? null : value.toString(); } return preprocessStrings(processed); } diff --git a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java index 7f1f07b13..17ad68a4e 100644 --- a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java +++ b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java @@ -156,4 +156,20 @@ public void testCyclicConversion() { Assert.assertArrayEquals(expected, actual); } + @Test + public void testNullConversion() { + String[] s1 = {null}; + String[] s2 = {"null"}; + String[] expected = new String[] {null}; + // Do the first conversion + ArrayToStringConverter c1 = new ArrayToStringConverter(); + context.inject(c1); + String converted = c1.convert(expected, String.class); + // Try to convert back + StringToArrayConverter c2 = new StringToArrayConverter(); + context.inject(c2); + String[] actual = c2.convert(converted, String[].class); + // NB: we cannot recreate the original {null} state + Assert.assertNull(actual); + } } From 0835207eb8e0bce1180a4b89c94fa5a941e802f3 Mon Sep 17 00:00:00 2001 From: hinerm Date: Fri, 23 Sep 2022 11:17:30 -0500 Subject: [PATCH 049/185] Bump to next development cycle Signed-off-by: hinerm --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 09c7f7863..cad4cf5cb 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.89.2-SNAPSHOT + 2.89.3-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From e2fd3b000fd75f7d90b6d97cb08fdb07a1108fb4 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Wed, 5 Oct 2022 14:15:01 -0500 Subject: [PATCH 050/185] Add converters for File <-> Path conversion --- .../scijava/convert/FileToPathConverter.java | 33 +++++++++++ .../scijava/convert/PathToFileConverter.java | 33 +++++++++++ .../convert/FileToPathConversionTest.java | 57 +++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 src/main/java/org/scijava/convert/FileToPathConverter.java create mode 100644 src/main/java/org/scijava/convert/PathToFileConverter.java create mode 100644 src/test/java/org/scijava/convert/FileToPathConversionTest.java diff --git a/src/main/java/org/scijava/convert/FileToPathConverter.java b/src/main/java/org/scijava/convert/FileToPathConverter.java new file mode 100644 index 000000000..e2407d692 --- /dev/null +++ b/src/main/java/org/scijava/convert/FileToPathConverter.java @@ -0,0 +1,33 @@ + +package org.scijava.convert; + +import java.io.File; +import java.nio.file.Path; + +import org.scijava.plugin.Plugin; + +/** + * A {@link Converter} used to convert {@link File}s into {@link Path}s. + * + * @author Gabriel Selzer + */ +@Plugin(type = Converter.class) +public class FileToPathConverter extends AbstractConverter { + + @SuppressWarnings("unchecked") + @Override + public T convert(Object src, Class dest) { + File f = (File) src; + return (T) f.toPath(); + } + + @Override + public Class getOutputType() { + return Path.class; + } + + @Override + public Class getInputType() { + return File.class; + } +} diff --git a/src/main/java/org/scijava/convert/PathToFileConverter.java b/src/main/java/org/scijava/convert/PathToFileConverter.java new file mode 100644 index 000000000..908cff33f --- /dev/null +++ b/src/main/java/org/scijava/convert/PathToFileConverter.java @@ -0,0 +1,33 @@ + +package org.scijava.convert; + +import java.io.File; +import java.nio.file.Path; + +import org.scijava.plugin.Plugin; + +/** + * A {@link Converter} used to convert {@link Path}s into {@link File}s. + * + * @author Gabriel Selzer + */ +@Plugin(type = Converter.class) +public class PathToFileConverter extends AbstractConverter { + + @SuppressWarnings("unchecked") + @Override + public T convert(Object src, Class dest) { + Path p = (Path) src; + return (T) p.toFile(); + } + + @Override + public Class getOutputType() { + return File.class; + } + + @Override + public Class getInputType() { + return Path.class; + } +} diff --git a/src/test/java/org/scijava/convert/FileToPathConversionTest.java b/src/test/java/org/scijava/convert/FileToPathConversionTest.java new file mode 100644 index 000000000..37f96f273 --- /dev/null +++ b/src/test/java/org/scijava/convert/FileToPathConversionTest.java @@ -0,0 +1,57 @@ + +package org.scijava.convert; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.scijava.Context; +import org.scijava.parse.ParseService; + +/** + * Tests conversion between {@link File}s and {@link Path}s. + * + * @author Gabriel Selzer + */ +public class FileToPathConversionTest { + + private ConvertService convertService; + private Context context; + + @Before + public void setUp() { + context = new Context(ParseService.class, ConvertService.class); + convertService = context.getService(ConvertService.class); + } + + @After + public void tearDown() { + context.dispose(); + } + + /** + * Tests the ability of to convert from {@link File} to {@link Path}. + */ + @Test + public void fileToPathConversion() { + File f = new File("tmp.java"); + assertTrue(convertService.supports(f, Path.class)); + Path p = convertService.convert(f, Path.class); + assertEquals(f.toPath(), p); + } + + @Test + public void pathToFileConversion() { + Path p = Paths.get("tmp.java"); + assertTrue(convertService.supports(p, File.class)); + File f = convertService.convert(p, File.class); + assertEquals(f.toPath(), p); + } + +} From 5c63181da57457ac63032597851174fc9017b743 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 14 Oct 2022 14:15:04 -0500 Subject: [PATCH 051/185] Add missing license blurbs --- .../scijava/convert/FileToPathConverter.java | 28 +++++++++++++++++++ .../scijava/convert/PathToFileConverter.java | 28 +++++++++++++++++++ .../convert/FileToPathConversionTest.java | 28 +++++++++++++++++++ 3 files changed, 84 insertions(+) diff --git a/src/main/java/org/scijava/convert/FileToPathConverter.java b/src/main/java/org/scijava/convert/FileToPathConverter.java index e2407d692..551a0d395 100644 --- a/src/main/java/org/scijava/convert/FileToPathConverter.java +++ b/src/main/java/org/scijava/convert/FileToPathConverter.java @@ -1,3 +1,31 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ package org.scijava.convert; diff --git a/src/main/java/org/scijava/convert/PathToFileConverter.java b/src/main/java/org/scijava/convert/PathToFileConverter.java index 908cff33f..668f9425e 100644 --- a/src/main/java/org/scijava/convert/PathToFileConverter.java +++ b/src/main/java/org/scijava/convert/PathToFileConverter.java @@ -1,3 +1,31 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ package org.scijava.convert; diff --git a/src/test/java/org/scijava/convert/FileToPathConversionTest.java b/src/test/java/org/scijava/convert/FileToPathConversionTest.java index 37f96f273..6dcd81d1b 100644 --- a/src/test/java/org/scijava/convert/FileToPathConversionTest.java +++ b/src/test/java/org/scijava/convert/FileToPathConversionTest.java @@ -1,3 +1,31 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2022 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ package org.scijava.convert; From f1f666a8aded15e05660aece5707cd0f8b12521d Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 14 Oct 2022 14:16:15 -0500 Subject: [PATCH 052/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cad4cf5cb..a7fe0d700 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.89.3-SNAPSHOT + 2.90.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 918d91568b3d4c485cb343e9fd3795444505880e Mon Sep 17 00:00:00 2001 From: Jan Eglinger Date: Mon, 12 Dec 2022 14:58:44 +0100 Subject: [PATCH 053/185] Fix priority of LoggerPreprocessor Logger parameters should be processed before InitPreprocessor, so that plugins can use a Logger in their initializer. --- .../java/org/scijava/module/process/LoggerPreprocessor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java index 6145337ac..ded3ac399 100644 --- a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java +++ b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java @@ -29,6 +29,7 @@ package org.scijava.module.process; +import org.scijava.Priority; import org.scijava.log.LogService; import org.scijava.log.Logger; import org.scijava.module.Module; @@ -44,7 +45,7 @@ * * @author Matthias Arzt */ -@Plugin(type = PreprocessorPlugin.class) +@Plugin(type = PreprocessorPlugin.class, priority = Priority.VERY_HIGH) public class LoggerPreprocessor extends AbstractPreprocessorPlugin { @Parameter(required = false) From a639bccb316da32c7060ececfa916859fefcf87e Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Tue, 13 Dec 2022 14:38:22 -0600 Subject: [PATCH 054/185] Only convert to array types when it is possible --- .../java/org/scijava/convert/DefaultConverter.java | 12 +++++++++++- .../java/org/scijava/convert/ConvertServiceTest.java | 5 +++-- .../java/org/scijava/util/ConversionUtilsTest.java | 4 ++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index d2daea418..b399f7596 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -292,7 +292,17 @@ private Collection createCollection(final Class type) { public boolean canConvert(final Class src, final Type dest) { // Handle array types, including generic array types. - if (isArray(dest)) return true; + // The logic follows from the types that ArrayUtils.toCollection + // can convert + if (isArray(dest)){ + // toCollection handles any type of Collection + if (Collection.class.isAssignableFrom(src)) return true; + // toCollection handles any type of array + if (src.isArray()) return true; + // toCollection can wrap objects into a Singleton list, + // but we only want to wrap up a T if the dest type is a T[]. + return Types.isAssignable(src, Types.component(dest)); + } // Handle parameterized collection types. if (dest instanceof ParameterizedType && isCollection(dest) && diff --git a/src/test/java/org/scijava/convert/ConvertServiceTest.java b/src/test/java/org/scijava/convert/ConvertServiceTest.java index cca1b2acc..59aaa2835 100644 --- a/src/test/java/org/scijava/convert/ConvertServiceTest.java +++ b/src/test/java/org/scijava/convert/ConvertServiceTest.java @@ -457,7 +457,7 @@ class Struct { /** * Tests setting an incompatible element value for a primitive array. */ - @Test(expected = IllegalArgumentException.class) + @Test public void testBadPrimitiveArray() { class Struct { @@ -467,6 +467,7 @@ class Struct { final Struct struct = new Struct(); setFieldValue(struct, "intArray", "not an int array"); + assertEquals(null, struct.intArray); } /** @@ -486,7 +487,7 @@ class Struct { // Test abnormal behavior for an object array setFieldValue(struct, "doubleArray", "not a double array"); - assertEquals(null, struct.doubleArray[0]); + assertEquals(null, struct.doubleArray); // Test abnormal behavior for a list setFieldValue(struct, "nestedArray", "definitely not a set of char arrays"); diff --git a/src/test/java/org/scijava/util/ConversionUtilsTest.java b/src/test/java/org/scijava/util/ConversionUtilsTest.java index d04118628..ac0abeaa9 100644 --- a/src/test/java/org/scijava/util/ConversionUtilsTest.java +++ b/src/test/java/org/scijava/util/ConversionUtilsTest.java @@ -237,7 +237,6 @@ class Struct { /** * Tests setting an incompatible element value for a primitive array. */ - @Test(expected = IllegalArgumentException.class) public void testBadPrimitiveArray() { class Struct { @@ -247,6 +246,7 @@ class Struct { final Struct struct = new Struct(); setFieldValue(struct, "intArray", "not an int array"); + assertEquals(null, struct.intArray); } /** @@ -266,7 +266,7 @@ class Struct { // Test abnormal behavior for an object array setFieldValue(struct, "doubleArray", "not a double array"); - assertEquals(null, struct.doubleArray[0]); + assertEquals(null, struct.doubleArray); // Test abnormal behavior for a list setFieldValue(struct, "nestedArray", "definitely not a set of char arrays"); From 0a2b886f853fc4e68217fca668a9023115f5b3e4 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 24 Jan 2023 09:02:45 -0600 Subject: [PATCH 055/185] Happy New Year 2023 --- LICENSE.txt | 2 +- src/it/apt-test/pom.xml | 2 +- src/it/apt-test/setup.bsh | 2 +- .../src/main/java/org/scijava/annotation/its/Annotated.java | 2 +- .../main/java/org/scijava/annotation/its/CustomAnnotation.java | 2 +- src/it/apt-test/verify.bsh | 2 +- src/it/settings.xml | 2 +- src/main/java/org/scijava/AbstractBasicDetails.java | 2 +- src/main/java/org/scijava/AbstractContextual.java | 2 +- src/main/java/org/scijava/AbstractGateway.java | 2 +- src/main/java/org/scijava/AbstractUIDetails.java | 2 +- src/main/java/org/scijava/BasicDetails.java | 2 +- src/main/java/org/scijava/Cancelable.java | 2 +- src/main/java/org/scijava/Context.java | 2 +- src/main/java/org/scijava/Contextual.java | 2 +- src/main/java/org/scijava/Disposable.java | 2 +- src/main/java/org/scijava/Gateway.java | 2 +- src/main/java/org/scijava/Identifiable.java | 2 +- src/main/java/org/scijava/Initializable.java | 2 +- src/main/java/org/scijava/Instantiable.java | 2 +- src/main/java/org/scijava/InstantiableException.java | 2 +- src/main/java/org/scijava/ItemIO.java | 2 +- src/main/java/org/scijava/ItemVisibility.java | 2 +- src/main/java/org/scijava/Locatable.java | 2 +- src/main/java/org/scijava/MenuEntry.java | 2 +- src/main/java/org/scijava/MenuPath.java | 2 +- src/main/java/org/scijava/Named.java | 2 +- src/main/java/org/scijava/NoSuchServiceException.java | 2 +- src/main/java/org/scijava/NullContextException.java | 2 +- src/main/java/org/scijava/Optional.java | 2 +- src/main/java/org/scijava/Prioritized.java | 2 +- src/main/java/org/scijava/Priority.java | 2 +- src/main/java/org/scijava/SciJava.java | 2 +- src/main/java/org/scijava/Typed.java | 2 +- src/main/java/org/scijava/UIDetails.java | 2 +- src/main/java/org/scijava/Validated.java | 2 +- src/main/java/org/scijava/ValidityProblem.java | 2 +- src/main/java/org/scijava/Versioned.java | 2 +- src/main/java/org/scijava/annotations/AbstractIndexWriter.java | 2 +- src/main/java/org/scijava/annotations/AnnotationCombiner.java | 2 +- src/main/java/org/scijava/annotations/AnnotationProcessor.java | 2 +- src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java | 2 +- src/main/java/org/scijava/annotations/DirectoryIndexer.java | 2 +- src/main/java/org/scijava/annotations/EclipseHelper.java | 2 +- src/main/java/org/scijava/annotations/Index.java | 2 +- src/main/java/org/scijava/annotations/IndexItem.java | 2 +- src/main/java/org/scijava/annotations/IndexReader.java | 2 +- src/main/java/org/scijava/annotations/Indexable.java | 2 +- src/main/java/org/scijava/annotations/legacy/LegacyReader.java | 2 +- src/main/java/org/scijava/app/AbstractApp.java | 2 +- src/main/java/org/scijava/app/App.java | 2 +- src/main/java/org/scijava/app/AppService.java | 2 +- src/main/java/org/scijava/app/DefaultAppService.java | 2 +- src/main/java/org/scijava/app/DefaultStatusService.java | 2 +- src/main/java/org/scijava/app/SciJavaApp.java | 2 +- src/main/java/org/scijava/app/StatusService.java | 2 +- src/main/java/org/scijava/app/event/StatusEvent.java | 2 +- src/main/java/org/scijava/cache/CacheService.java | 2 +- src/main/java/org/scijava/cache/DefaultCacheService.java | 2 +- src/main/java/org/scijava/command/Command.java | 2 +- src/main/java/org/scijava/command/CommandInfo.java | 2 +- src/main/java/org/scijava/command/CommandModule.java | 2 +- src/main/java/org/scijava/command/CommandModuleItem.java | 2 +- src/main/java/org/scijava/command/CommandService.java | 2 +- src/main/java/org/scijava/command/ContextCommand.java | 2 +- src/main/java/org/scijava/command/DefaultCommandService.java | 2 +- src/main/java/org/scijava/command/DynamicCommand.java | 2 +- src/main/java/org/scijava/command/DynamicCommandInfo.java | 2 +- src/main/java/org/scijava/command/Inputs.java | 2 +- src/main/java/org/scijava/command/Interactive.java | 2 +- src/main/java/org/scijava/command/InteractiveCommand.java | 2 +- src/main/java/org/scijava/command/ModuleCommand.java | 2 +- src/main/java/org/scijava/command/Previewable.java | 2 +- src/main/java/org/scijava/command/UnimplementedCommand.java | 2 +- src/main/java/org/scijava/command/console/RunArgument.java | 2 +- src/main/java/org/scijava/command/run/CommandCodeRunner.java | 2 +- src/main/java/org/scijava/console/AbstractConsoleArgument.java | 2 +- src/main/java/org/scijava/console/ConsoleArgument.java | 2 +- src/main/java/org/scijava/console/ConsoleService.java | 2 +- src/main/java/org/scijava/console/ConsoleUtils.java | 2 +- src/main/java/org/scijava/console/DefaultConsoleService.java | 2 +- src/main/java/org/scijava/console/MultiOutputStream.java | 2 +- src/main/java/org/scijava/console/MultiPrintStream.java | 2 +- src/main/java/org/scijava/console/OutputEvent.java | 2 +- src/main/java/org/scijava/console/OutputListener.java | 2 +- src/main/java/org/scijava/console/SystemPropertyArgument.java | 2 +- src/main/java/org/scijava/convert/AbstractConvertService.java | 2 +- src/main/java/org/scijava/convert/AbstractConverter.java | 2 +- .../java/org/scijava/convert/AbstractDelegateConverter.java | 2 +- src/main/java/org/scijava/convert/ArrayConverters.java | 2 +- src/main/java/org/scijava/convert/ArrayToStringConverter.java | 2 +- src/main/java/org/scijava/convert/CastingConverter.java | 2 +- src/main/java/org/scijava/convert/ConversionRequest.java | 2 +- src/main/java/org/scijava/convert/ConvertService.java | 2 +- src/main/java/org/scijava/convert/Converter.java | 2 +- src/main/java/org/scijava/convert/DefaultConvertService.java | 2 +- src/main/java/org/scijava/convert/DefaultConverter.java | 2 +- src/main/java/org/scijava/convert/FileListConverters.java | 2 +- src/main/java/org/scijava/convert/FileToPathConverter.java | 2 +- src/main/java/org/scijava/convert/NullConverter.java | 2 +- src/main/java/org/scijava/convert/NumberConverters.java | 2 +- .../java/org/scijava/convert/NumberToBigDecimalConverter.java | 2 +- .../java/org/scijava/convert/NumberToBigIntegerConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToDoubleConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToFloatConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToIntegerConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToLongConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToNumberConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToShortConverter.java | 2 +- src/main/java/org/scijava/convert/PathToFileConverter.java | 2 +- src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java | 2 +- src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java | 2 +- src/main/java/org/scijava/convert/StringToArrayConverter.java | 2 +- src/main/java/org/scijava/convert/StringToNumberConverter.java | 2 +- src/main/java/org/scijava/display/AbstractDisplay.java | 2 +- .../java/org/scijava/display/ActiveDisplayPreprocessor.java | 2 +- src/main/java/org/scijava/display/DefaultDisplay.java | 2 +- src/main/java/org/scijava/display/DefaultDisplayService.java | 2 +- src/main/java/org/scijava/display/DefaultTextDisplay.java | 2 +- src/main/java/org/scijava/display/Display.java | 2 +- src/main/java/org/scijava/display/DisplayPostprocessor.java | 2 +- src/main/java/org/scijava/display/DisplayService.java | 2 +- src/main/java/org/scijava/display/Displayable.java | 2 +- src/main/java/org/scijava/display/TextDisplay.java | 2 +- .../java/org/scijava/display/event/DisplayActivatedEvent.java | 2 +- .../java/org/scijava/display/event/DisplayCreatedEvent.java | 2 +- .../java/org/scijava/display/event/DisplayDeletedEvent.java | 2 +- src/main/java/org/scijava/display/event/DisplayEvent.java | 2 +- .../java/org/scijava/display/event/DisplayUpdatedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/InputEvent.java | 2 +- src/main/java/org/scijava/display/event/input/KyEvent.java | 2 +- .../java/org/scijava/display/event/input/KyPressedEvent.java | 2 +- .../java/org/scijava/display/event/input/KyReleasedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/KyTypedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsButtonEvent.java | 2 +- .../java/org/scijava/display/event/input/MsClickedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsDraggedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsEnteredEvent.java | 2 +- src/main/java/org/scijava/display/event/input/MsEvent.java | 2 +- .../java/org/scijava/display/event/input/MsExitedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/MsMovedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsPressedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsReleasedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/MsWheelEvent.java | 2 +- .../org/scijava/display/event/window/WinActivatedEvent.java | 2 +- .../java/org/scijava/display/event/window/WinClosedEvent.java | 2 +- .../java/org/scijava/display/event/window/WinClosingEvent.java | 2 +- .../org/scijava/display/event/window/WinDeactivatedEvent.java | 2 +- .../org/scijava/display/event/window/WinDeiconifiedEvent.java | 2 +- src/main/java/org/scijava/display/event/window/WinEvent.java | 2 +- .../org/scijava/display/event/window/WinIconifiedEvent.java | 2 +- .../java/org/scijava/display/event/window/WinOpenedEvent.java | 2 +- src/main/java/org/scijava/download/DefaultDownloadService.java | 2 +- src/main/java/org/scijava/download/DiskLocationCache.java | 2 +- src/main/java/org/scijava/download/Download.java | 2 +- src/main/java/org/scijava/download/DownloadService.java | 2 +- src/main/java/org/scijava/download/LocationCache.java | 2 +- src/main/java/org/scijava/download/MultiWriteHandle.java | 2 +- src/main/java/org/scijava/event/ContextDisposingEvent.java | 2 +- src/main/java/org/scijava/event/DefaultEventBus.java | 2 +- src/main/java/org/scijava/event/DefaultEventHistory.java | 2 +- src/main/java/org/scijava/event/DefaultEventService.java | 2 +- src/main/java/org/scijava/event/EventDetails.java | 2 +- src/main/java/org/scijava/event/EventHandler.java | 2 +- src/main/java/org/scijava/event/EventHistory.java | 2 +- src/main/java/org/scijava/event/EventHistoryListener.java | 2 +- src/main/java/org/scijava/event/EventService.java | 2 +- src/main/java/org/scijava/event/EventSubscriber.java | 2 +- src/main/java/org/scijava/event/SciJavaEvent.java | 2 +- src/main/java/org/scijava/input/Accelerator.java | 2 +- src/main/java/org/scijava/input/DefaultInputService.java | 2 +- src/main/java/org/scijava/input/InputModifiers.java | 2 +- src/main/java/org/scijava/input/InputService.java | 2 +- src/main/java/org/scijava/input/KeyCode.java | 2 +- src/main/java/org/scijava/input/MouseCursor.java | 2 +- src/main/java/org/scijava/io/AbstractIOPlugin.java | 2 +- src/main/java/org/scijava/io/AbstractTypedIOService.java | 2 +- src/main/java/org/scijava/io/ByteArrayByteBank.java | 2 +- src/main/java/org/scijava/io/ByteBank.java | 2 +- src/main/java/org/scijava/io/DefaultIOService.java | 2 +- src/main/java/org/scijava/io/DefaultRecentFileService.java | 2 +- src/main/java/org/scijava/io/IOPlugin.java | 2 +- src/main/java/org/scijava/io/IOService.java | 2 +- src/main/java/org/scijava/io/RecentFileService.java | 2 +- src/main/java/org/scijava/io/TypedIOService.java | 2 +- src/main/java/org/scijava/io/console/OpenArgument.java | 2 +- src/main/java/org/scijava/io/event/DataOpenedEvent.java | 2 +- src/main/java/org/scijava/io/event/DataSavedEvent.java | 2 +- src/main/java/org/scijava/io/event/IOEvent.java | 2 +- src/main/java/org/scijava/io/handle/AbstractDataHandle.java | 2 +- .../java/org/scijava/io/handle/AbstractHigherOrderHandle.java | 2 +- .../org/scijava/io/handle/AbstractSeekableStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/AbstractStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/BytesHandle.java | 2 +- src/main/java/org/scijava/io/handle/DataHandle.java | 2 +- src/main/java/org/scijava/io/handle/DataHandleInputStream.java | 2 +- src/main/java/org/scijava/io/handle/DataHandleOutputStream.java | 2 +- src/main/java/org/scijava/io/handle/DataHandleService.java | 2 +- src/main/java/org/scijava/io/handle/DataHandles.java | 2 +- .../java/org/scijava/io/handle/DefaultDataHandleService.java | 2 +- src/main/java/org/scijava/io/handle/DummyHandle.java | 2 +- src/main/java/org/scijava/io/handle/FileHandle.java | 2 +- src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java | 2 +- src/main/java/org/scijava/io/handle/ResettableStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/SeekableStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/StreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java | 2 +- src/main/java/org/scijava/io/location/AbstractLocation.java | 2 +- .../java/org/scijava/io/location/AbstractLocationResolver.java | 2 +- .../java/org/scijava/io/location/AbstractRemoteLocation.java | 2 +- src/main/java/org/scijava/io/location/BrowsableLocation.java | 2 +- src/main/java/org/scijava/io/location/BytesLocation.java | 2 +- .../java/org/scijava/io/location/DefaultLocationService.java | 2 +- src/main/java/org/scijava/io/location/DummyLocation.java | 2 +- src/main/java/org/scijava/io/location/FileLocation.java | 2 +- src/main/java/org/scijava/io/location/FileLocationResolver.java | 2 +- src/main/java/org/scijava/io/location/Location.java | 2 +- src/main/java/org/scijava/io/location/LocationResolver.java | 2 +- src/main/java/org/scijava/io/location/LocationService.java | 2 +- src/main/java/org/scijava/io/location/RemoteLocation.java | 2 +- src/main/java/org/scijava/io/location/URILocation.java | 2 +- src/main/java/org/scijava/io/location/URLLocation.java | 2 +- src/main/java/org/scijava/io/nio/ByteBufferByteBank.java | 2 +- src/main/java/org/scijava/io/nio/DefaultNIOService.java | 2 +- src/main/java/org/scijava/io/nio/NIOService.java | 2 +- src/main/java/org/scijava/log/AbstractLogService.java | 2 +- src/main/java/org/scijava/log/CallingClassUtils.java | 2 +- src/main/java/org/scijava/log/DefaultLogger.java | 2 +- .../java/org/scijava/log/DefaultUncaughtExceptionHandler.java | 2 +- src/main/java/org/scijava/log/IgnoreAsCallingClass.java | 2 +- src/main/java/org/scijava/log/LogLevel.java | 2 +- src/main/java/org/scijava/log/LogListener.java | 2 +- src/main/java/org/scijava/log/LogMessage.java | 2 +- src/main/java/org/scijava/log/LogService.java | 2 +- src/main/java/org/scijava/log/LogSource.java | 2 +- src/main/java/org/scijava/log/Logged.java | 2 +- src/main/java/org/scijava/log/Logger.java | 2 +- src/main/java/org/scijava/log/StderrLogService.java | 2 +- src/main/java/org/scijava/main/DefaultMainService.java | 2 +- src/main/java/org/scijava/main/MainService.java | 2 +- src/main/java/org/scijava/main/console/MainArgument.java | 2 +- src/main/java/org/scijava/main/run/MainCodeRunner.java | 2 +- src/main/java/org/scijava/menu/AbstractMenuCreator.java | 2 +- src/main/java/org/scijava/menu/DefaultMenuService.java | 2 +- src/main/java/org/scijava/menu/MenuConstants.java | 2 +- src/main/java/org/scijava/menu/MenuCreator.java | 2 +- src/main/java/org/scijava/menu/MenuService.java | 2 +- src/main/java/org/scijava/menu/ShadowMenu.java | 2 +- src/main/java/org/scijava/menu/ShadowMenuIterator.java | 2 +- src/main/java/org/scijava/menu/event/MenuEvent.java | 2 +- src/main/java/org/scijava/menu/event/MenusAddedEvent.java | 2 +- src/main/java/org/scijava/menu/event/MenusRemovedEvent.java | 2 +- src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java | 2 +- src/main/java/org/scijava/module/AbstractModule.java | 2 +- src/main/java/org/scijava/module/AbstractModuleInfo.java | 2 +- src/main/java/org/scijava/module/AbstractModuleItem.java | 2 +- src/main/java/org/scijava/module/DefaultModuleService.java | 2 +- src/main/java/org/scijava/module/DefaultMutableModule.java | 2 +- src/main/java/org/scijava/module/DefaultMutableModuleInfo.java | 2 +- src/main/java/org/scijava/module/DefaultMutableModuleItem.java | 2 +- src/main/java/org/scijava/module/MethodCallException.java | 2 +- src/main/java/org/scijava/module/MethodRef.java | 2 +- src/main/java/org/scijava/module/Module.java | 2 +- src/main/java/org/scijava/module/ModuleCanceledException.java | 2 +- src/main/java/org/scijava/module/ModuleException.java | 2 +- src/main/java/org/scijava/module/ModuleIndex.java | 2 +- src/main/java/org/scijava/module/ModuleInfo.java | 2 +- src/main/java/org/scijava/module/ModuleItem.java | 2 +- src/main/java/org/scijava/module/ModuleRunner.java | 2 +- src/main/java/org/scijava/module/ModuleService.java | 2 +- src/main/java/org/scijava/module/MutableModule.java | 2 +- src/main/java/org/scijava/module/MutableModuleInfo.java | 2 +- src/main/java/org/scijava/module/MutableModuleItem.java | 2 +- src/main/java/org/scijava/module/event/ModuleCanceledEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleExecutedEvent.java | 2 +- .../java/org/scijava/module/event/ModuleExecutingEvent.java | 2 +- .../java/org/scijava/module/event/ModuleExecutionEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleFinishedEvent.java | 2 +- .../java/org/scijava/module/event/ModulePostprocessEvent.java | 2 +- .../java/org/scijava/module/event/ModulePreprocessEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleProcessEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleStartedEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesAddedEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesListEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesRemovedEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java | 2 +- .../org/scijava/module/process/AbstractPostprocessorPlugin.java | 2 +- .../org/scijava/module/process/AbstractPreprocessorPlugin.java | 2 +- .../scijava/module/process/AbstractSingleInputPreprocessor.java | 2 +- .../org/scijava/module/process/CheckInputsPreprocessor.java | 2 +- .../java/org/scijava/module/process/DebugPostprocessor.java | 2 +- src/main/java/org/scijava/module/process/DebugPreprocessor.java | 2 +- .../org/scijava/module/process/DefaultValuePreprocessor.java | 2 +- .../java/org/scijava/module/process/GatewayPreprocessor.java | 2 +- src/main/java/org/scijava/module/process/InitPreprocessor.java | 2 +- .../java/org/scijava/module/process/LoadInputsPreprocessor.java | 2 +- .../java/org/scijava/module/process/LoggerPreprocessor.java | 2 +- .../java/org/scijava/module/process/ModulePostprocessor.java | 2 +- .../java/org/scijava/module/process/ModulePreprocessor.java | 2 +- src/main/java/org/scijava/module/process/ModuleProcessor.java | 2 +- .../java/org/scijava/module/process/PostprocessorPlugin.java | 2 +- .../java/org/scijava/module/process/PreprocessorPlugin.java | 2 +- .../java/org/scijava/module/process/SaveInputsPreprocessor.java | 2 +- .../java/org/scijava/module/process/ServicePreprocessor.java | 2 +- .../java/org/scijava/module/process/ValidityPreprocessor.java | 2 +- src/main/java/org/scijava/module/run/ModuleCodeRunner.java | 2 +- src/main/java/org/scijava/object/DefaultObjectService.java | 2 +- src/main/java/org/scijava/object/LazyObjects.java | 2 +- src/main/java/org/scijava/object/NamedObjectIndex.java | 2 +- src/main/java/org/scijava/object/ObjectIndex.java | 2 +- src/main/java/org/scijava/object/ObjectService.java | 2 +- src/main/java/org/scijava/object/SortedObjectIndex.java | 2 +- src/main/java/org/scijava/object/event/ListEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectCreatedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectDeletedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectModifiedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectsAddedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectsListEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java | 2 +- src/main/java/org/scijava/options/DefaultOptionsService.java | 2 +- src/main/java/org/scijava/options/OptionsPlugin.java | 2 +- src/main/java/org/scijava/options/OptionsService.java | 2 +- src/main/java/org/scijava/options/event/OptionsEvent.java | 2 +- src/main/java/org/scijava/parse/DefaultParseService.java | 2 +- src/main/java/org/scijava/parse/Item.java | 2 +- src/main/java/org/scijava/parse/Items.java | 2 +- src/main/java/org/scijava/parse/ParseService.java | 2 +- src/main/java/org/scijava/platform/AbstractPlatform.java | 2 +- src/main/java/org/scijava/platform/AppEventService.java | 2 +- src/main/java/org/scijava/platform/DefaultAppEventService.java | 2 +- src/main/java/org/scijava/platform/DefaultPlatform.java | 2 +- src/main/java/org/scijava/platform/DefaultPlatformService.java | 2 +- src/main/java/org/scijava/platform/Platform.java | 2 +- src/main/java/org/scijava/platform/PlatformService.java | 2 +- src/main/java/org/scijava/platform/event/AppAboutEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppFocusEvent.java | 2 +- .../java/org/scijava/platform/event/AppMenusCreatedEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java | 2 +- .../java/org/scijava/platform/event/AppPreferencesEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppPrintEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppQuitEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppReOpenEvent.java | 2 +- .../java/org/scijava/platform/event/AppScreenSleepEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppSleepEvent.java | 2 +- .../java/org/scijava/platform/event/AppSystemSleepEvent.java | 2 +- .../java/org/scijava/platform/event/AppUserSessionEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppVisibleEvent.java | 2 +- src/main/java/org/scijava/platform/event/ApplicationEvent.java | 2 +- src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractHandlerService.java | 2 +- src/main/java/org/scijava/plugin/AbstractPTService.java | 2 +- src/main/java/org/scijava/plugin/AbstractRichPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractSingletonService.java | 2 +- src/main/java/org/scijava/plugin/AbstractTypedPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractTypedService.java | 2 +- src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractWrapperService.java | 2 +- src/main/java/org/scijava/plugin/Attr.java | 2 +- src/main/java/org/scijava/plugin/DefaultPluginFinder.java | 2 +- src/main/java/org/scijava/plugin/DefaultPluginService.java | 2 +- src/main/java/org/scijava/plugin/HandlerPlugin.java | 2 +- src/main/java/org/scijava/plugin/HandlerService.java | 2 +- src/main/java/org/scijava/plugin/HasPluginInfo.java | 2 +- src/main/java/org/scijava/plugin/Menu.java | 2 +- src/main/java/org/scijava/plugin/PTService.java | 2 +- src/main/java/org/scijava/plugin/Parameter.java | 2 +- src/main/java/org/scijava/plugin/Plugin.java | 2 +- src/main/java/org/scijava/plugin/PluginFinder.java | 2 +- src/main/java/org/scijava/plugin/PluginIndex.java | 2 +- src/main/java/org/scijava/plugin/PluginInfo.java | 2 +- src/main/java/org/scijava/plugin/PluginService.java | 2 +- src/main/java/org/scijava/plugin/RichPlugin.java | 2 +- src/main/java/org/scijava/plugin/SciJavaPlugin.java | 2 +- src/main/java/org/scijava/plugin/SingletonPlugin.java | 2 +- src/main/java/org/scijava/plugin/SingletonService.java | 2 +- src/main/java/org/scijava/plugin/SortablePlugin.java | 2 +- src/main/java/org/scijava/plugin/TypedPlugin.java | 2 +- src/main/java/org/scijava/plugin/TypedService.java | 2 +- src/main/java/org/scijava/plugin/WrapperPlugin.java | 2 +- src/main/java/org/scijava/plugin/WrapperService.java | 2 +- src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java | 2 +- src/main/java/org/scijava/plugin/event/PluginsListEvent.java | 2 +- src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java | 2 +- src/main/java/org/scijava/prefs/AbstractPrefService.java | 2 +- src/main/java/org/scijava/prefs/DefaultPrefService.java | 2 +- src/main/java/org/scijava/prefs/PrefService.java | 2 +- src/main/java/org/scijava/run/AbstractCodeRunner.java | 2 +- src/main/java/org/scijava/run/CodeRunner.java | 2 +- src/main/java/org/scijava/run/DefaultRunService.java | 2 +- src/main/java/org/scijava/run/RunService.java | 2 +- src/main/java/org/scijava/run/console/RunArgument.java | 2 +- src/main/java/org/scijava/script/AbstractAutoCompleter.java | 2 +- src/main/java/org/scijava/script/AbstractScriptContext.java | 2 +- src/main/java/org/scijava/script/AbstractScriptEngine.java | 2 +- src/main/java/org/scijava/script/AbstractScriptHeader.java | 2 +- src/main/java/org/scijava/script/AbstractScriptLanguage.java | 2 +- src/main/java/org/scijava/script/AdaptedScriptEngine.java | 2 +- src/main/java/org/scijava/script/AdaptedScriptLanguage.java | 2 +- src/main/java/org/scijava/script/AutoCompleter.java | 2 +- src/main/java/org/scijava/script/AutoCompletionResult.java | 2 +- src/main/java/org/scijava/script/CodeGenerator.java | 2 +- src/main/java/org/scijava/script/CodeGeneratorJava.java | 2 +- src/main/java/org/scijava/script/DefaultAutoCompleter.java | 2 +- .../java/org/scijava/script/DefaultScriptHeaderService.java | 2 +- src/main/java/org/scijava/script/DefaultScriptInterpreter.java | 2 +- src/main/java/org/scijava/script/DefaultScriptService.java | 2 +- src/main/java/org/scijava/script/InvocationObject.java | 2 +- src/main/java/org/scijava/script/ParameterObject.java | 2 +- src/main/java/org/scijava/script/ScriptFinder.java | 2 +- src/main/java/org/scijava/script/ScriptHeader.java | 2 +- src/main/java/org/scijava/script/ScriptHeaderService.java | 2 +- src/main/java/org/scijava/script/ScriptInfo.java | 2 +- src/main/java/org/scijava/script/ScriptInterpreter.java | 2 +- src/main/java/org/scijava/script/ScriptLanguage.java | 2 +- src/main/java/org/scijava/script/ScriptLanguageIndex.java | 2 +- src/main/java/org/scijava/script/ScriptModule.java | 2 +- src/main/java/org/scijava/script/ScriptREPL.java | 2 +- src/main/java/org/scijava/script/ScriptService.java | 2 +- src/main/java/org/scijava/script/console/RunScriptArgument.java | 2 +- src/main/java/org/scijava/script/io/ScriptIOPlugin.java | 2 +- .../scijava/script/process/DefaultScriptProcessorService.java | 2 +- .../org/scijava/script/process/DirectiveScriptProcessor.java | 2 +- .../org/scijava/script/process/ParameterScriptProcessor.java | 2 +- src/main/java/org/scijava/script/process/ScriptCallback.java | 2 +- .../scijava/script/process/ScriptDirectiveScriptProcessor.java | 2 +- src/main/java/org/scijava/script/process/ScriptProcessor.java | 2 +- .../java/org/scijava/script/process/ScriptProcessorService.java | 2 +- .../java/org/scijava/script/process/ShebangScriptProcessor.java | 2 +- src/main/java/org/scijava/script/run/ScriptCodeRunner.java | 2 +- src/main/java/org/scijava/service/AbstractService.java | 2 +- src/main/java/org/scijava/service/SciJavaService.java | 2 +- src/main/java/org/scijava/service/Service.java | 2 +- src/main/java/org/scijava/service/ServiceHelper.java | 2 +- src/main/java/org/scijava/service/ServiceIndex.java | 2 +- .../java/org/scijava/service/event/ServicesLoadedEvent.java | 2 +- src/main/java/org/scijava/startup/DefaultStartupService.java | 2 +- src/main/java/org/scijava/startup/StartupService.java | 2 +- src/main/java/org/scijava/task/DefaultTask.java | 2 +- src/main/java/org/scijava/task/DefaultTaskService.java | 2 +- src/main/java/org/scijava/task/Task.java | 2 +- src/main/java/org/scijava/task/TaskService.java | 2 +- src/main/java/org/scijava/task/event/TaskEvent.java | 2 +- src/main/java/org/scijava/test/TestUtils.java | 2 +- src/main/java/org/scijava/text/AbstractTextFormat.java | 2 +- src/main/java/org/scijava/text/DefaultTextService.java | 2 +- src/main/java/org/scijava/text/TextFormat.java | 2 +- src/main/java/org/scijava/text/TextService.java | 2 +- src/main/java/org/scijava/text/io/DefaultTextIOService.java | 2 +- src/main/java/org/scijava/text/io/TextIOPlugin.java | 2 +- src/main/java/org/scijava/text/io/TextIOService.java | 2 +- src/main/java/org/scijava/thread/DefaultThreadService.java | 2 +- src/main/java/org/scijava/thread/ThreadService.java | 2 +- src/main/java/org/scijava/tool/AbstractTool.java | 2 +- src/main/java/org/scijava/tool/CustomDrawnTool.java | 2 +- src/main/java/org/scijava/tool/DefaultToolService.java | 2 +- src/main/java/org/scijava/tool/DummyTool.java | 2 +- src/main/java/org/scijava/tool/IconDrawer.java | 2 +- src/main/java/org/scijava/tool/IconService.java | 2 +- src/main/java/org/scijava/tool/Tool.java | 2 +- src/main/java/org/scijava/tool/ToolService.java | 2 +- src/main/java/org/scijava/tool/event/ToolActivatedEvent.java | 2 +- src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java | 2 +- src/main/java/org/scijava/tool/event/ToolEvent.java | 2 +- src/main/java/org/scijava/ui/ARGBPlane.java | 2 +- src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java | 2 +- src/main/java/org/scijava/ui/AbstractUIInputWidget.java | 2 +- src/main/java/org/scijava/ui/AbstractUserInterface.java | 2 +- src/main/java/org/scijava/ui/ApplicationFrame.java | 2 +- src/main/java/org/scijava/ui/Arrangeable.java | 2 +- src/main/java/org/scijava/ui/CloseConfirmable.java | 2 +- src/main/java/org/scijava/ui/DefaultUIService.java | 2 +- src/main/java/org/scijava/ui/Desktop.java | 2 +- src/main/java/org/scijava/ui/DialogPrompt.java | 2 +- src/main/java/org/scijava/ui/FileListPreprocessor.java | 2 +- src/main/java/org/scijava/ui/FilePreprocessor.java | 2 +- src/main/java/org/scijava/ui/StatusBar.java | 2 +- src/main/java/org/scijava/ui/SystemClipboard.java | 2 +- src/main/java/org/scijava/ui/ToolBar.java | 2 +- src/main/java/org/scijava/ui/UIPreprocessor.java | 2 +- src/main/java/org/scijava/ui/UIService.java | 2 +- src/main/java/org/scijava/ui/UserInterface.java | 2 +- src/main/java/org/scijava/ui/console/AbstractConsolePane.java | 2 +- src/main/java/org/scijava/ui/console/ConsolePane.java | 2 +- src/main/java/org/scijava/ui/console/HeadlessArgument.java | 2 +- src/main/java/org/scijava/ui/console/ShowUIArgument.java | 2 +- src/main/java/org/scijava/ui/console/UIArgument.java | 2 +- src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java | 2 +- .../java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java | 2 +- src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java | 2 +- src/main/java/org/scijava/ui/dnd/DragAndDropData.java | 2 +- src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/DragAndDropService.java | 2 +- src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/MIMEType.java | 2 +- .../java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DropEvent.java | 2 +- src/main/java/org/scijava/ui/event/UIEvent.java | 2 +- src/main/java/org/scijava/ui/event/UIShownEvent.java | 2 +- .../java/org/scijava/ui/headless/HeadlessDisplayViewer.java | 2 +- src/main/java/org/scijava/ui/headless/HeadlessUI.java | 2 +- src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java | 2 +- src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java | 2 +- src/main/java/org/scijava/ui/viewer/DisplayPanel.java | 2 +- src/main/java/org/scijava/ui/viewer/DisplayViewer.java | 2 +- src/main/java/org/scijava/ui/viewer/DisplayWindow.java | 2 +- .../org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java | 2 +- src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java | 2 +- src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java | 2 +- src/main/java/org/scijava/util/AbstractPrimitiveArray.java | 2 +- src/main/java/org/scijava/util/AppUtils.java | 2 +- src/main/java/org/scijava/util/ArrayUtils.java | 2 +- src/main/java/org/scijava/util/BoolArray.java | 2 +- src/main/java/org/scijava/util/ByteArray.java | 2 +- src/main/java/org/scijava/util/Bytes.java | 2 +- src/main/java/org/scijava/util/CharArray.java | 2 +- src/main/java/org/scijava/util/CheckSezpoz.java | 2 +- src/main/java/org/scijava/util/ClassUtils.java | 2 +- src/main/java/org/scijava/util/ColorRGB.java | 2 +- src/main/java/org/scijava/util/ColorRGBA.java | 2 +- src/main/java/org/scijava/util/Colors.java | 2 +- src/main/java/org/scijava/util/CombineAnnotations.java | 2 +- src/main/java/org/scijava/util/Combiner.java | 2 +- src/main/java/org/scijava/util/ConversionUtils.java | 2 +- src/main/java/org/scijava/util/DebugUtils.java | 2 +- src/main/java/org/scijava/util/DefaultTreeNode.java | 2 +- src/main/java/org/scijava/util/DigestUtils.java | 2 +- src/main/java/org/scijava/util/DoubleArray.java | 2 +- src/main/java/org/scijava/util/FileUtils.java | 2 +- src/main/java/org/scijava/util/FloatArray.java | 2 +- src/main/java/org/scijava/util/GenericUtils.java | 2 +- src/main/java/org/scijava/util/IntArray.java | 2 +- src/main/java/org/scijava/util/IntCoords.java | 2 +- src/main/java/org/scijava/util/IntRect.java | 2 +- src/main/java/org/scijava/util/IteratorPlus.java | 2 +- src/main/java/org/scijava/util/LastRecentlyUsed.java | 2 +- src/main/java/org/scijava/util/LineOutputStream.java | 2 +- src/main/java/org/scijava/util/ListUtils.java | 2 +- src/main/java/org/scijava/util/LongArray.java | 2 +- src/main/java/org/scijava/util/Manifest.java | 2 +- src/main/java/org/scijava/util/MersenneTwisterFast.java | 2 +- src/main/java/org/scijava/util/MetaInfCombiner.java | 2 +- src/main/java/org/scijava/util/MirrorWebsite.java | 2 +- src/main/java/org/scijava/util/MiscUtils.java | 2 +- src/main/java/org/scijava/util/NumberUtils.java | 2 +- src/main/java/org/scijava/util/ObjectArray.java | 2 +- src/main/java/org/scijava/util/POM.java | 2 +- src/main/java/org/scijava/util/PlatformUtils.java | 2 +- src/main/java/org/scijava/util/Prefs.java | 2 +- src/main/java/org/scijava/util/PrimitiveArray.java | 2 +- src/main/java/org/scijava/util/ProcessUtils.java | 2 +- src/main/java/org/scijava/util/Query.java | 2 +- src/main/java/org/scijava/util/ReadInto.java | 2 +- src/main/java/org/scijava/util/RealCoords.java | 2 +- src/main/java/org/scijava/util/RealRect.java | 2 +- src/main/java/org/scijava/util/ReflectException.java | 2 +- src/main/java/org/scijava/util/ReflectedUniverse.java | 2 +- src/main/java/org/scijava/util/ServiceCombiner.java | 2 +- src/main/java/org/scijava/util/ShortArray.java | 2 +- src/main/java/org/scijava/util/Sizable.java | 2 +- src/main/java/org/scijava/util/SizableArrayList.java | 2 +- src/main/java/org/scijava/util/StringMaker.java | 2 +- src/main/java/org/scijava/util/StringUtils.java | 2 +- src/main/java/org/scijava/util/Timing.java | 2 +- src/main/java/org/scijava/util/TreeNode.java | 2 +- src/main/java/org/scijava/util/TunePlayer.java | 2 +- src/main/java/org/scijava/util/Types.java | 2 +- src/main/java/org/scijava/util/UnitUtils.java | 2 +- src/main/java/org/scijava/util/VersionUtils.java | 2 +- src/main/java/org/scijava/util/XML.java | 2 +- src/main/java/org/scijava/welcome/DefaultWelcomeService.java | 2 +- src/main/java/org/scijava/welcome/WelcomeService.java | 2 +- src/main/java/org/scijava/welcome/event/WelcomeEvent.java | 2 +- src/main/java/org/scijava/widget/AbstractInputHarvester.java | 2 +- src/main/java/org/scijava/widget/AbstractInputPanel.java | 2 +- src/main/java/org/scijava/widget/AbstractInputWidget.java | 2 +- src/main/java/org/scijava/widget/Button.java | 2 +- src/main/java/org/scijava/widget/ButtonWidget.java | 2 +- src/main/java/org/scijava/widget/ChoiceWidget.java | 2 +- src/main/java/org/scijava/widget/ColorWidget.java | 2 +- src/main/java/org/scijava/widget/DateWidget.java | 2 +- src/main/java/org/scijava/widget/DefaultWidgetModel.java | 2 +- src/main/java/org/scijava/widget/DefaultWidgetService.java | 2 +- src/main/java/org/scijava/widget/FileListWidget.java | 2 +- src/main/java/org/scijava/widget/FileWidget.java | 2 +- src/main/java/org/scijava/widget/InputHarvester.java | 2 +- src/main/java/org/scijava/widget/InputPanel.java | 2 +- src/main/java/org/scijava/widget/InputWidget.java | 2 +- src/main/java/org/scijava/widget/MessageWidget.java | 2 +- src/main/java/org/scijava/widget/NumberWidget.java | 2 +- src/main/java/org/scijava/widget/ObjectWidget.java | 2 +- src/main/java/org/scijava/widget/TextWidget.java | 2 +- src/main/java/org/scijava/widget/ToggleWidget.java | 2 +- src/main/java/org/scijava/widget/UIComponent.java | 2 +- src/main/java/org/scijava/widget/WidgetModel.java | 2 +- src/main/java/org/scijava/widget/WidgetService.java | 2 +- src/main/java/org/scijava/widget/WidgetStyle.java | 2 +- src/test/java/org/scijava/ContextCreationTest.java | 2 +- src/test/java/org/scijava/ContextInjectionTest.java | 2 +- src/test/java/org/scijava/SciJavaTest.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedA.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedB.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedC.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedD.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedInnerClass.java | 2 +- src/test/java/org/scijava/annotations/Complex.java | 2 +- src/test/java/org/scijava/annotations/DirectoryIndexerTest.java | 2 +- src/test/java/org/scijava/annotations/EclipseHelperTest.java | 2 +- src/test/java/org/scijava/annotations/Fruit.java | 2 +- src/test/java/org/scijava/annotations/LegacyTest.java | 2 +- src/test/java/org/scijava/annotations/Simple.java | 2 +- src/test/java/org/scijava/app/StatusServiceTest.java | 2 +- .../java/org/scijava/command/CommandArrayConverterTest.java | 2 +- src/test/java/org/scijava/command/CommandInfoTest.java | 2 +- src/test/java/org/scijava/command/CommandModuleTest.java | 2 +- src/test/java/org/scijava/command/CommandServiceTest.java | 2 +- src/test/java/org/scijava/command/InputsTest.java | 2 +- src/test/java/org/scijava/command/InvalidCommandTest.java | 2 +- .../java/org/scijava/command/run/CommandCodeRunnerTest.java | 2 +- src/test/java/org/scijava/console/ConsoleServiceTest.java | 2 +- .../java/org/scijava/console/SystemPropertyArgumentTest.java | 2 +- .../java/org/scijava/convert/AbstractNumberConverterTests.java | 2 +- .../java/org/scijava/convert/ArrayToStringConverterTest.java | 2 +- .../scijava/convert/BigIntegerToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToBigIntegerConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToDoubleConverterTest.java | 2 +- src/test/java/org/scijava/convert/ByteToFloatConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToIntegerConverterTest.java | 2 +- src/test/java/org/scijava/convert/ByteToLongConverterTest.java | 2 +- src/test/java/org/scijava/convert/ByteToShortConverterTest.java | 2 +- src/test/java/org/scijava/convert/ConvertServiceTest.java | 2 +- src/test/java/org/scijava/convert/ConverterTest.java | 2 +- src/test/java/org/scijava/convert/DelegateConverterTest.java | 2 +- .../org/scijava/convert/DoubleToBigDecimalConverterTest.java | 2 +- src/test/java/org/scijava/convert/FileListConverterTest.java | 2 +- src/test/java/org/scijava/convert/FileToPathConversionTest.java | 2 +- .../org/scijava/convert/FloatToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/FloatToDoubleConverterTest.java | 2 +- .../org/scijava/convert/IntegerToBigDecimalConverterTest.java | 2 +- .../org/scijava/convert/IntegerToBigIntegerConverterTest.java | 2 +- .../java/org/scijava/convert/IntegerToDoubleConverterTest.java | 2 +- .../java/org/scijava/convert/IntegerToLongConverterTest.java | 2 +- .../java/org/scijava/convert/LongToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/LongToBigIntegerConverterTest.java | 2 +- .../org/scijava/convert/ShortToBigDecimalConverterTest.java | 2 +- .../org/scijava/convert/ShortToBigIntegerConverterTest.java | 2 +- .../java/org/scijava/convert/ShortToDoubleConverterTest.java | 2 +- .../java/org/scijava/convert/ShortToFloatConverterTest.java | 2 +- .../java/org/scijava/convert/ShortToIntegerConverterTest.java | 2 +- src/test/java/org/scijava/convert/ShortToLongConverterTest.java | 2 +- .../java/org/scijava/convert/StringToArrayConverterTest.java | 2 +- .../java/org/scijava/convert/StringToNumberConverterTest.java | 2 +- src/test/java/org/scijava/display/DisplayTest.java | 2 +- src/test/java/org/scijava/download/DownloadServiceTest.java | 2 +- src/test/java/org/scijava/event/EventServiceTest.java | 2 +- src/test/java/org/scijava/io/ByteArrayByteBankTest.java | 2 +- src/test/java/org/scijava/io/ByteBankTest.java | 2 +- src/test/java/org/scijava/io/IOServiceTest.java | 2 +- src/test/java/org/scijava/io/TypedIOServiceTest.java | 2 +- src/test/java/org/scijava/io/event/DataEventTest.java | 2 +- src/test/java/org/scijava/io/handle/BytesHandleTest.java | 2 +- .../java/org/scijava/io/handle/DataHandleEdgeCaseTests.java | 2 +- src/test/java/org/scijava/io/handle/DataHandleTest.java | 2 +- src/test/java/org/scijava/io/handle/DataHandlesTest.java | 2 +- src/test/java/org/scijava/io/handle/FileHandleTest.java | 2 +- .../org/scijava/io/handle/ReadBufferDataHandleMockTest.java | 2 +- .../java/org/scijava/io/handle/ReadBufferDataHandleTest.java | 2 +- .../java/org/scijava/io/handle/WriteBufferDataHandleTest.java | 2 +- src/test/java/org/scijava/io/location/BytesLocationTest.java | 2 +- .../java/org/scijava/io/location/FileLocationResolverTest.java | 2 +- src/test/java/org/scijava/io/location/FileLocationTest.java | 2 +- src/test/java/org/scijava/io/location/LocationServiceTest.java | 2 +- src/test/java/org/scijava/io/location/URILocationTest.java | 2 +- src/test/java/org/scijava/io/location/URLLocationTest.java | 2 +- src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java | 2 +- src/test/java/org/scijava/log/CallingClassUtilsTest.java | 2 +- src/test/java/org/scijava/log/DefaultLoggerTest.java | 2 +- src/test/java/org/scijava/log/LogMessageTest.java | 2 +- src/test/java/org/scijava/log/LogServiceTest.java | 2 +- src/test/java/org/scijava/log/LogSourceTest.java | 2 +- src/test/java/org/scijava/log/StderrLogServiceTest.java | 2 +- src/test/java/org/scijava/log/TestLogListener.java | 2 +- src/test/java/org/scijava/main/MainServiceTest.java | 2 +- src/test/java/org/scijava/main/run/MainCodeRunnerTest.java | 2 +- src/test/java/org/scijava/menu/MenuServiceTest.java | 2 +- src/test/java/org/scijava/menu/ShadowMenuTest.java | 2 +- src/test/java/org/scijava/module/ModuleServiceTest.java | 2 +- .../java/org/scijava/module/process/LoggerPreprocessorTest.java | 2 +- src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java | 2 +- src/test/java/org/scijava/object/NamedObjectIndexTest.java | 2 +- src/test/java/org/scijava/object/ObjectIndexTest.java | 2 +- src/test/java/org/scijava/object/ObjectServiceTest.java | 2 +- src/test/java/org/scijava/object/SortedObjectIndexTest.java | 2 +- src/test/java/org/scijava/options/OptionsTest.java | 2 +- src/test/java/org/scijava/parse/ParseServiceTest.java | 2 +- src/test/java/org/scijava/plugin/PluginFinderTest.java | 2 +- src/test/java/org/scijava/plugin/PluginIndexTest.java | 2 +- src/test/java/org/scijava/plugin/PluginInfoTest.java | 2 +- src/test/java/org/scijava/plugin/SingletonServiceTest.java | 2 +- src/test/java/org/scijava/prefs/PrefServiceTest.java | 2 +- src/test/java/org/scijava/run/RunServiceTest.java | 2 +- .../java/org/scijava/script/AbstractScriptLanguageTest.java | 2 +- src/test/java/org/scijava/script/ScriptEngineTest.java | 2 +- src/test/java/org/scijava/script/ScriptFinderTest.java | 2 +- src/test/java/org/scijava/script/ScriptInfoTest.java | 2 +- src/test/java/org/scijava/script/ScriptServiceTest.java | 2 +- .../scijava/script/process/ParameterScriptProcessorTest.java | 2 +- src/test/java/org/scijava/service/ServiceIndexTest.java | 2 +- src/test/java/org/scijava/task/TaskEventTest.java | 2 +- src/test/java/org/scijava/task/TaskServiceTest.java | 2 +- src/test/java/org/scijava/test/AbstractSciJavaTest.java | 2 +- src/test/java/org/scijava/test/TestUtilsTest.java | 2 +- src/test/java/org/scijava/text/TextServiceTest.java | 2 +- src/test/java/org/scijava/thread/ThreadServiceTest.java | 2 +- src/test/java/org/scijava/ui/UIServiceTest.java | 2 +- src/test/java/org/scijava/util/AppUtilsTest.java | 2 +- src/test/java/org/scijava/util/ArrayUtilsTest.java | 2 +- src/test/java/org/scijava/util/BoolArrayTest.java | 2 +- src/test/java/org/scijava/util/ByteArrayTest.java | 2 +- src/test/java/org/scijava/util/CharArrayTest.java | 2 +- src/test/java/org/scijava/util/ClassUtilsTest.java | 2 +- src/test/java/org/scijava/util/ColorRGBTest.java | 2 +- src/test/java/org/scijava/util/ConversionUtilsTest.java | 2 +- src/test/java/org/scijava/util/DigestUtilsTest.java | 2 +- src/test/java/org/scijava/util/DoubleArrayTest.java | 2 +- src/test/java/org/scijava/util/FileUtilsTest.java | 2 +- src/test/java/org/scijava/util/FloatArrayTest.java | 2 +- src/test/java/org/scijava/util/GenericArrayTypesTest.java | 2 +- src/test/java/org/scijava/util/IntArrayTest.java | 2 +- src/test/java/org/scijava/util/LastRecentlyUsedTest.java | 2 +- src/test/java/org/scijava/util/LongArrayTest.java | 2 +- src/test/java/org/scijava/util/NumberUtilsTest.java | 2 +- src/test/java/org/scijava/util/ObjectArrayTest.java | 2 +- src/test/java/org/scijava/util/POMTest.java | 2 +- src/test/java/org/scijava/util/PrimitiveArrayTest.java | 2 +- src/test/java/org/scijava/util/ProcessUtilsTest.java | 2 +- src/test/java/org/scijava/util/ShortArrayTest.java | 2 +- src/test/java/org/scijava/util/StringUtilsTest.java | 2 +- src/test/java/org/scijava/util/TypesTest.java | 2 +- src/test/java/org/scijava/util/UnitUtilsTest.java | 2 +- src/test/java/org/scijava/util/VersionUtilsTest.java | 2 +- src/test/java/org/scijava/widget/WidgetStyleTest.java | 2 +- 750 files changed, 750 insertions(+), 750 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 5f08911f4..aaee970f7 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 - 2022, SciJava developers. +Copyright (c) 2009 - 2023, SciJava developers. All rights reserved. Redistribution and use in source and binary forms, with or without modification, diff --git a/src/it/apt-test/pom.xml b/src/it/apt-test/pom.xml index 93eab1f4c..514f2c7d7 100644 --- a/src/it/apt-test/pom.xml +++ b/src/it/apt-test/pom.xml @@ -3,7 +3,7 @@ #%L SciJava Common shared library for SciJava software. %% - Copyright (C) 2009 - 2022 SciJava developers. + Copyright (C) 2009 - 2023 SciJava developers. %% Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/setup.bsh b/src/it/apt-test/setup.bsh index 1aa0b6938..245d04040 100644 --- a/src/it/apt-test/setup.bsh +++ b/src/it/apt-test/setup.bsh @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java b/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java index 1bda32ca5..0f899650e 100644 --- a/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java +++ b/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java b/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java index 77e414da2..bad45ed0b 100644 --- a/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java +++ b/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/verify.bsh b/src/it/apt-test/verify.bsh index bf20d6cc0..399db31d8 100644 --- a/src/it/apt-test/verify.bsh +++ b/src/it/apt-test/verify.bsh @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/settings.xml b/src/it/settings.xml index be7d7b999..fb751e065 100644 --- a/src/it/settings.xml +++ b/src/it/settings.xml @@ -3,7 +3,7 @@ #%L SciJava Common shared library for SciJava software. %% - Copyright (C) 2009 - 2022 SciJava developers. + Copyright (C) 2009 - 2023 SciJava developers. %% Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractBasicDetails.java b/src/main/java/org/scijava/AbstractBasicDetails.java index 96ba66746..f3b30998c 100644 --- a/src/main/java/org/scijava/AbstractBasicDetails.java +++ b/src/main/java/org/scijava/AbstractBasicDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractContextual.java b/src/main/java/org/scijava/AbstractContextual.java index b8a074336..b550ae26f 100644 --- a/src/main/java/org/scijava/AbstractContextual.java +++ b/src/main/java/org/scijava/AbstractContextual.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractGateway.java b/src/main/java/org/scijava/AbstractGateway.java index c6be31959..9df93126c 100644 --- a/src/main/java/org/scijava/AbstractGateway.java +++ b/src/main/java/org/scijava/AbstractGateway.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractUIDetails.java b/src/main/java/org/scijava/AbstractUIDetails.java index 0b887cafa..d6afda127 100644 --- a/src/main/java/org/scijava/AbstractUIDetails.java +++ b/src/main/java/org/scijava/AbstractUIDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/BasicDetails.java b/src/main/java/org/scijava/BasicDetails.java index b3ab1e40f..e6c96fbf1 100644 --- a/src/main/java/org/scijava/BasicDetails.java +++ b/src/main/java/org/scijava/BasicDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Cancelable.java b/src/main/java/org/scijava/Cancelable.java index 0b1098ca0..74aef720e 100644 --- a/src/main/java/org/scijava/Cancelable.java +++ b/src/main/java/org/scijava/Cancelable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Context.java b/src/main/java/org/scijava/Context.java index f93f22991..a6892d7bd 100644 --- a/src/main/java/org/scijava/Context.java +++ b/src/main/java/org/scijava/Context.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Contextual.java b/src/main/java/org/scijava/Contextual.java index cd247a466..6862b19b8 100644 --- a/src/main/java/org/scijava/Contextual.java +++ b/src/main/java/org/scijava/Contextual.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Disposable.java b/src/main/java/org/scijava/Disposable.java index cde51c0fc..6c1f51276 100644 --- a/src/main/java/org/scijava/Disposable.java +++ b/src/main/java/org/scijava/Disposable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Gateway.java b/src/main/java/org/scijava/Gateway.java index 47b346156..3d5897528 100644 --- a/src/main/java/org/scijava/Gateway.java +++ b/src/main/java/org/scijava/Gateway.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Identifiable.java b/src/main/java/org/scijava/Identifiable.java index 0774e0fb2..5d7b4301d 100644 --- a/src/main/java/org/scijava/Identifiable.java +++ b/src/main/java/org/scijava/Identifiable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Initializable.java b/src/main/java/org/scijava/Initializable.java index 149e8d503..b8c4bd430 100644 --- a/src/main/java/org/scijava/Initializable.java +++ b/src/main/java/org/scijava/Initializable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Instantiable.java b/src/main/java/org/scijava/Instantiable.java index 5be5d288d..f51ea2e32 100644 --- a/src/main/java/org/scijava/Instantiable.java +++ b/src/main/java/org/scijava/Instantiable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/InstantiableException.java b/src/main/java/org/scijava/InstantiableException.java index bf31a522f..de5d6db8e 100644 --- a/src/main/java/org/scijava/InstantiableException.java +++ b/src/main/java/org/scijava/InstantiableException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ItemIO.java b/src/main/java/org/scijava/ItemIO.java index e9955fcaf..bb9b0be69 100644 --- a/src/main/java/org/scijava/ItemIO.java +++ b/src/main/java/org/scijava/ItemIO.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ItemVisibility.java b/src/main/java/org/scijava/ItemVisibility.java index d69da15d2..764d67bac 100644 --- a/src/main/java/org/scijava/ItemVisibility.java +++ b/src/main/java/org/scijava/ItemVisibility.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Locatable.java b/src/main/java/org/scijava/Locatable.java index e200df42e..ed9212310 100644 --- a/src/main/java/org/scijava/Locatable.java +++ b/src/main/java/org/scijava/Locatable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/MenuEntry.java b/src/main/java/org/scijava/MenuEntry.java index ee0ac4b75..236cdbe35 100644 --- a/src/main/java/org/scijava/MenuEntry.java +++ b/src/main/java/org/scijava/MenuEntry.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/MenuPath.java b/src/main/java/org/scijava/MenuPath.java index 508eec37b..cab9983d8 100644 --- a/src/main/java/org/scijava/MenuPath.java +++ b/src/main/java/org/scijava/MenuPath.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Named.java b/src/main/java/org/scijava/Named.java index 2307e06f3..e0f508e94 100644 --- a/src/main/java/org/scijava/Named.java +++ b/src/main/java/org/scijava/Named.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/NoSuchServiceException.java b/src/main/java/org/scijava/NoSuchServiceException.java index 498c0989f..24fb01c00 100644 --- a/src/main/java/org/scijava/NoSuchServiceException.java +++ b/src/main/java/org/scijava/NoSuchServiceException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/NullContextException.java b/src/main/java/org/scijava/NullContextException.java index 7c13e82ba..f411e951d 100644 --- a/src/main/java/org/scijava/NullContextException.java +++ b/src/main/java/org/scijava/NullContextException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Optional.java b/src/main/java/org/scijava/Optional.java index 8ce2fc46f..4433057a9 100644 --- a/src/main/java/org/scijava/Optional.java +++ b/src/main/java/org/scijava/Optional.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Prioritized.java b/src/main/java/org/scijava/Prioritized.java index bb49dc76f..cc3e20661 100644 --- a/src/main/java/org/scijava/Prioritized.java +++ b/src/main/java/org/scijava/Prioritized.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Priority.java b/src/main/java/org/scijava/Priority.java index a495ec026..65ce6c237 100644 --- a/src/main/java/org/scijava/Priority.java +++ b/src/main/java/org/scijava/Priority.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/SciJava.java b/src/main/java/org/scijava/SciJava.java index 3c1180e43..11f0d5743 100644 --- a/src/main/java/org/scijava/SciJava.java +++ b/src/main/java/org/scijava/SciJava.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Typed.java b/src/main/java/org/scijava/Typed.java index a600d4718..f40ca469b 100644 --- a/src/main/java/org/scijava/Typed.java +++ b/src/main/java/org/scijava/Typed.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/UIDetails.java b/src/main/java/org/scijava/UIDetails.java index 949cf24cb..07c444bbd 100644 --- a/src/main/java/org/scijava/UIDetails.java +++ b/src/main/java/org/scijava/UIDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Validated.java b/src/main/java/org/scijava/Validated.java index f3383a252..f90043370 100644 --- a/src/main/java/org/scijava/Validated.java +++ b/src/main/java/org/scijava/Validated.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ValidityProblem.java b/src/main/java/org/scijava/ValidityProblem.java index 65cfa240c..82e8ac134 100644 --- a/src/main/java/org/scijava/ValidityProblem.java +++ b/src/main/java/org/scijava/ValidityProblem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Versioned.java b/src/main/java/org/scijava/Versioned.java index c12d5be9b..446e91cda 100644 --- a/src/main/java/org/scijava/Versioned.java +++ b/src/main/java/org/scijava/Versioned.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AbstractIndexWriter.java b/src/main/java/org/scijava/annotations/AbstractIndexWriter.java index 9132512e6..54cfac128 100644 --- a/src/main/java/org/scijava/annotations/AbstractIndexWriter.java +++ b/src/main/java/org/scijava/annotations/AbstractIndexWriter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AnnotationCombiner.java b/src/main/java/org/scijava/annotations/AnnotationCombiner.java index 88f92ca9e..66c1d3566 100644 --- a/src/main/java/org/scijava/annotations/AnnotationCombiner.java +++ b/src/main/java/org/scijava/annotations/AnnotationCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AnnotationProcessor.java b/src/main/java/org/scijava/annotations/AnnotationProcessor.java index 03cc759b0..518e29d64 100644 --- a/src/main/java/org/scijava/annotations/AnnotationProcessor.java +++ b/src/main/java/org/scijava/annotations/AnnotationProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java b/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java index 316ce2601..4de2c6e53 100644 --- a/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java +++ b/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/DirectoryIndexer.java b/src/main/java/org/scijava/annotations/DirectoryIndexer.java index 84a176e00..1af1b118d 100644 --- a/src/main/java/org/scijava/annotations/DirectoryIndexer.java +++ b/src/main/java/org/scijava/annotations/DirectoryIndexer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/EclipseHelper.java b/src/main/java/org/scijava/annotations/EclipseHelper.java index d8b457f29..00a320e6a 100644 --- a/src/main/java/org/scijava/annotations/EclipseHelper.java +++ b/src/main/java/org/scijava/annotations/EclipseHelper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/Index.java b/src/main/java/org/scijava/annotations/Index.java index e9fe9a5c4..98bcf4033 100644 --- a/src/main/java/org/scijava/annotations/Index.java +++ b/src/main/java/org/scijava/annotations/Index.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/IndexItem.java b/src/main/java/org/scijava/annotations/IndexItem.java index 3a3fc8b54..3cfa75dd7 100644 --- a/src/main/java/org/scijava/annotations/IndexItem.java +++ b/src/main/java/org/scijava/annotations/IndexItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/IndexReader.java b/src/main/java/org/scijava/annotations/IndexReader.java index 061226272..63ec749d3 100644 --- a/src/main/java/org/scijava/annotations/IndexReader.java +++ b/src/main/java/org/scijava/annotations/IndexReader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/Indexable.java b/src/main/java/org/scijava/annotations/Indexable.java index 31315dcf0..7b7f040a8 100644 --- a/src/main/java/org/scijava/annotations/Indexable.java +++ b/src/main/java/org/scijava/annotations/Indexable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/legacy/LegacyReader.java b/src/main/java/org/scijava/annotations/legacy/LegacyReader.java index 300a03da0..733a29125 100644 --- a/src/main/java/org/scijava/annotations/legacy/LegacyReader.java +++ b/src/main/java/org/scijava/annotations/legacy/LegacyReader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/AbstractApp.java b/src/main/java/org/scijava/app/AbstractApp.java index 3efbfc005..7901ee792 100644 --- a/src/main/java/org/scijava/app/AbstractApp.java +++ b/src/main/java/org/scijava/app/AbstractApp.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/App.java b/src/main/java/org/scijava/app/App.java index aaa359dd9..72990e5f9 100644 --- a/src/main/java/org/scijava/app/App.java +++ b/src/main/java/org/scijava/app/App.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/AppService.java b/src/main/java/org/scijava/app/AppService.java index 876475de3..e15d3c869 100644 --- a/src/main/java/org/scijava/app/AppService.java +++ b/src/main/java/org/scijava/app/AppService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/DefaultAppService.java b/src/main/java/org/scijava/app/DefaultAppService.java index 26642e99b..12e203ab0 100644 --- a/src/main/java/org/scijava/app/DefaultAppService.java +++ b/src/main/java/org/scijava/app/DefaultAppService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/DefaultStatusService.java b/src/main/java/org/scijava/app/DefaultStatusService.java index c622c12ea..44a871f9f 100644 --- a/src/main/java/org/scijava/app/DefaultStatusService.java +++ b/src/main/java/org/scijava/app/DefaultStatusService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/SciJavaApp.java b/src/main/java/org/scijava/app/SciJavaApp.java index 1c9679b06..d8f8a2d71 100644 --- a/src/main/java/org/scijava/app/SciJavaApp.java +++ b/src/main/java/org/scijava/app/SciJavaApp.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/StatusService.java b/src/main/java/org/scijava/app/StatusService.java index e2c64ebf0..82ef4b7f2 100644 --- a/src/main/java/org/scijava/app/StatusService.java +++ b/src/main/java/org/scijava/app/StatusService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/event/StatusEvent.java b/src/main/java/org/scijava/app/event/StatusEvent.java index cb34e3f4e..7b57ce3e2 100644 --- a/src/main/java/org/scijava/app/event/StatusEvent.java +++ b/src/main/java/org/scijava/app/event/StatusEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/cache/CacheService.java b/src/main/java/org/scijava/cache/CacheService.java index f91b37214..15b8d82f3 100644 --- a/src/main/java/org/scijava/cache/CacheService.java +++ b/src/main/java/org/scijava/cache/CacheService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/cache/DefaultCacheService.java b/src/main/java/org/scijava/cache/DefaultCacheService.java index 210ed2558..a150bf86b 100644 --- a/src/main/java/org/scijava/cache/DefaultCacheService.java +++ b/src/main/java/org/scijava/cache/DefaultCacheService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Command.java b/src/main/java/org/scijava/command/Command.java index 420c5c2e9..fa462633b 100644 --- a/src/main/java/org/scijava/command/Command.java +++ b/src/main/java/org/scijava/command/Command.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandInfo.java b/src/main/java/org/scijava/command/CommandInfo.java index cdde41992..b5aaba8d1 100644 --- a/src/main/java/org/scijava/command/CommandInfo.java +++ b/src/main/java/org/scijava/command/CommandInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandModule.java b/src/main/java/org/scijava/command/CommandModule.java index fc1e59469..702b1a561 100644 --- a/src/main/java/org/scijava/command/CommandModule.java +++ b/src/main/java/org/scijava/command/CommandModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandModuleItem.java b/src/main/java/org/scijava/command/CommandModuleItem.java index 38b52ac11..253c92332 100644 --- a/src/main/java/org/scijava/command/CommandModuleItem.java +++ b/src/main/java/org/scijava/command/CommandModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandService.java b/src/main/java/org/scijava/command/CommandService.java index 6e777ea5b..10772f7f9 100644 --- a/src/main/java/org/scijava/command/CommandService.java +++ b/src/main/java/org/scijava/command/CommandService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/ContextCommand.java b/src/main/java/org/scijava/command/ContextCommand.java index 86094df90..bc3b6e520 100644 --- a/src/main/java/org/scijava/command/ContextCommand.java +++ b/src/main/java/org/scijava/command/ContextCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DefaultCommandService.java b/src/main/java/org/scijava/command/DefaultCommandService.java index 64ee66b62..1ca12204e 100644 --- a/src/main/java/org/scijava/command/DefaultCommandService.java +++ b/src/main/java/org/scijava/command/DefaultCommandService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DynamicCommand.java b/src/main/java/org/scijava/command/DynamicCommand.java index 4d6f8e980..bda553db7 100644 --- a/src/main/java/org/scijava/command/DynamicCommand.java +++ b/src/main/java/org/scijava/command/DynamicCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DynamicCommandInfo.java b/src/main/java/org/scijava/command/DynamicCommandInfo.java index f45561e6b..d67417a04 100644 --- a/src/main/java/org/scijava/command/DynamicCommandInfo.java +++ b/src/main/java/org/scijava/command/DynamicCommandInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Inputs.java b/src/main/java/org/scijava/command/Inputs.java index 291f748cb..9c30dffaa 100644 --- a/src/main/java/org/scijava/command/Inputs.java +++ b/src/main/java/org/scijava/command/Inputs.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Interactive.java b/src/main/java/org/scijava/command/Interactive.java index cb35b9314..a940e4257 100644 --- a/src/main/java/org/scijava/command/Interactive.java +++ b/src/main/java/org/scijava/command/Interactive.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/InteractiveCommand.java b/src/main/java/org/scijava/command/InteractiveCommand.java index 51e7b9ffa..ea3cce37b 100644 --- a/src/main/java/org/scijava/command/InteractiveCommand.java +++ b/src/main/java/org/scijava/command/InteractiveCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/ModuleCommand.java b/src/main/java/org/scijava/command/ModuleCommand.java index 5cb014814..bfe715895 100644 --- a/src/main/java/org/scijava/command/ModuleCommand.java +++ b/src/main/java/org/scijava/command/ModuleCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Previewable.java b/src/main/java/org/scijava/command/Previewable.java index 5115b88a1..3b9ea160c 100644 --- a/src/main/java/org/scijava/command/Previewable.java +++ b/src/main/java/org/scijava/command/Previewable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/UnimplementedCommand.java b/src/main/java/org/scijava/command/UnimplementedCommand.java index f803e283c..cf1d828ee 100644 --- a/src/main/java/org/scijava/command/UnimplementedCommand.java +++ b/src/main/java/org/scijava/command/UnimplementedCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/console/RunArgument.java b/src/main/java/org/scijava/command/console/RunArgument.java index d066e9d74..d0cea8435 100644 --- a/src/main/java/org/scijava/command/console/RunArgument.java +++ b/src/main/java/org/scijava/command/console/RunArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/run/CommandCodeRunner.java b/src/main/java/org/scijava/command/run/CommandCodeRunner.java index ea493609c..2c1816b3c 100644 --- a/src/main/java/org/scijava/command/run/CommandCodeRunner.java +++ b/src/main/java/org/scijava/command/run/CommandCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/AbstractConsoleArgument.java b/src/main/java/org/scijava/console/AbstractConsoleArgument.java index 88d64af7a..9ed6165a5 100644 --- a/src/main/java/org/scijava/console/AbstractConsoleArgument.java +++ b/src/main/java/org/scijava/console/AbstractConsoleArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleArgument.java b/src/main/java/org/scijava/console/ConsoleArgument.java index 2067aae10..d4bdec30a 100644 --- a/src/main/java/org/scijava/console/ConsoleArgument.java +++ b/src/main/java/org/scijava/console/ConsoleArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleService.java b/src/main/java/org/scijava/console/ConsoleService.java index 97299556c..fdc600b31 100644 --- a/src/main/java/org/scijava/console/ConsoleService.java +++ b/src/main/java/org/scijava/console/ConsoleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleUtils.java b/src/main/java/org/scijava/console/ConsoleUtils.java index 80713b5bd..40de75132 100644 --- a/src/main/java/org/scijava/console/ConsoleUtils.java +++ b/src/main/java/org/scijava/console/ConsoleUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/DefaultConsoleService.java b/src/main/java/org/scijava/console/DefaultConsoleService.java index 9f474b2f7..74cce7d56 100644 --- a/src/main/java/org/scijava/console/DefaultConsoleService.java +++ b/src/main/java/org/scijava/console/DefaultConsoleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/MultiOutputStream.java b/src/main/java/org/scijava/console/MultiOutputStream.java index dc2a3ec62..02e4fb5ac 100644 --- a/src/main/java/org/scijava/console/MultiOutputStream.java +++ b/src/main/java/org/scijava/console/MultiOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/MultiPrintStream.java b/src/main/java/org/scijava/console/MultiPrintStream.java index 991f24710..3f0109138 100644 --- a/src/main/java/org/scijava/console/MultiPrintStream.java +++ b/src/main/java/org/scijava/console/MultiPrintStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/OutputEvent.java b/src/main/java/org/scijava/console/OutputEvent.java index ffacdfa07..843a6f20d 100644 --- a/src/main/java/org/scijava/console/OutputEvent.java +++ b/src/main/java/org/scijava/console/OutputEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/OutputListener.java b/src/main/java/org/scijava/console/OutputListener.java index 1486f70f0..44000d87a 100644 --- a/src/main/java/org/scijava/console/OutputListener.java +++ b/src/main/java/org/scijava/console/OutputListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/SystemPropertyArgument.java b/src/main/java/org/scijava/console/SystemPropertyArgument.java index c6a053fbc..60f076798 100644 --- a/src/main/java/org/scijava/console/SystemPropertyArgument.java +++ b/src/main/java/org/scijava/console/SystemPropertyArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractConvertService.java b/src/main/java/org/scijava/convert/AbstractConvertService.java index 89b883f63..e9cd189e7 100644 --- a/src/main/java/org/scijava/convert/AbstractConvertService.java +++ b/src/main/java/org/scijava/convert/AbstractConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractConverter.java b/src/main/java/org/scijava/convert/AbstractConverter.java index 9b2ae2cda..244ca88bc 100644 --- a/src/main/java/org/scijava/convert/AbstractConverter.java +++ b/src/main/java/org/scijava/convert/AbstractConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractDelegateConverter.java b/src/main/java/org/scijava/convert/AbstractDelegateConverter.java index 4e447eb79..df0853005 100644 --- a/src/main/java/org/scijava/convert/AbstractDelegateConverter.java +++ b/src/main/java/org/scijava/convert/AbstractDelegateConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ArrayConverters.java b/src/main/java/org/scijava/convert/ArrayConverters.java index 507ff693e..7f885d1ee 100644 --- a/src/main/java/org/scijava/convert/ArrayConverters.java +++ b/src/main/java/org/scijava/convert/ArrayConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ArrayToStringConverter.java b/src/main/java/org/scijava/convert/ArrayToStringConverter.java index 4000ab6d3..820f818cf 100644 --- a/src/main/java/org/scijava/convert/ArrayToStringConverter.java +++ b/src/main/java/org/scijava/convert/ArrayToStringConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/CastingConverter.java b/src/main/java/org/scijava/convert/CastingConverter.java index d55b9663a..f1d67493e 100644 --- a/src/main/java/org/scijava/convert/CastingConverter.java +++ b/src/main/java/org/scijava/convert/CastingConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ConversionRequest.java b/src/main/java/org/scijava/convert/ConversionRequest.java index 36fc745a9..3f8c4d5cd 100644 --- a/src/main/java/org/scijava/convert/ConversionRequest.java +++ b/src/main/java/org/scijava/convert/ConversionRequest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ConvertService.java b/src/main/java/org/scijava/convert/ConvertService.java index f82552970..9c5976521 100644 --- a/src/main/java/org/scijava/convert/ConvertService.java +++ b/src/main/java/org/scijava/convert/ConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/Converter.java b/src/main/java/org/scijava/convert/Converter.java index bf63a19d8..2654216ee 100644 --- a/src/main/java/org/scijava/convert/Converter.java +++ b/src/main/java/org/scijava/convert/Converter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/DefaultConvertService.java b/src/main/java/org/scijava/convert/DefaultConvertService.java index bb5ec9d50..c642be048 100644 --- a/src/main/java/org/scijava/convert/DefaultConvertService.java +++ b/src/main/java/org/scijava/convert/DefaultConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index b399f7596..5553fca8f 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/FileListConverters.java b/src/main/java/org/scijava/convert/FileListConverters.java index 5aad27fb1..7c65900b2 100644 --- a/src/main/java/org/scijava/convert/FileListConverters.java +++ b/src/main/java/org/scijava/convert/FileListConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/FileToPathConverter.java b/src/main/java/org/scijava/convert/FileToPathConverter.java index 551a0d395..235c18661 100644 --- a/src/main/java/org/scijava/convert/FileToPathConverter.java +++ b/src/main/java/org/scijava/convert/FileToPathConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NullConverter.java b/src/main/java/org/scijava/convert/NullConverter.java index 594468617..f375f99ea 100644 --- a/src/main/java/org/scijava/convert/NullConverter.java +++ b/src/main/java/org/scijava/convert/NullConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberConverters.java b/src/main/java/org/scijava/convert/NumberConverters.java index d2d23e617..ed8481463 100644 --- a/src/main/java/org/scijava/convert/NumberConverters.java +++ b/src/main/java/org/scijava/convert/NumberConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java b/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java index 1b646057d..73fffeecc 100644 --- a/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java +++ b/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java b/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java index b2f29f89d..5dd8bdc71 100644 --- a/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java +++ b/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToDoubleConverter.java b/src/main/java/org/scijava/convert/NumberToDoubleConverter.java index 79ca2723b..23c26b62b 100644 --- a/src/main/java/org/scijava/convert/NumberToDoubleConverter.java +++ b/src/main/java/org/scijava/convert/NumberToDoubleConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToFloatConverter.java b/src/main/java/org/scijava/convert/NumberToFloatConverter.java index 8c036173a..56620787b 100644 --- a/src/main/java/org/scijava/convert/NumberToFloatConverter.java +++ b/src/main/java/org/scijava/convert/NumberToFloatConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToIntegerConverter.java b/src/main/java/org/scijava/convert/NumberToIntegerConverter.java index cc1aad5d7..897fb807f 100644 --- a/src/main/java/org/scijava/convert/NumberToIntegerConverter.java +++ b/src/main/java/org/scijava/convert/NumberToIntegerConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToLongConverter.java b/src/main/java/org/scijava/convert/NumberToLongConverter.java index 834388f9c..1b2af346c 100644 --- a/src/main/java/org/scijava/convert/NumberToLongConverter.java +++ b/src/main/java/org/scijava/convert/NumberToLongConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToNumberConverter.java b/src/main/java/org/scijava/convert/NumberToNumberConverter.java index edbe1aeda..01d092acf 100644 --- a/src/main/java/org/scijava/convert/NumberToNumberConverter.java +++ b/src/main/java/org/scijava/convert/NumberToNumberConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToShortConverter.java b/src/main/java/org/scijava/convert/NumberToShortConverter.java index 3c0666f2a..96c2fbc36 100644 --- a/src/main/java/org/scijava/convert/NumberToShortConverter.java +++ b/src/main/java/org/scijava/convert/NumberToShortConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PathToFileConverter.java b/src/main/java/org/scijava/convert/PathToFileConverter.java index 668f9425e..d50b10a29 100644 --- a/src/main/java/org/scijava/convert/PathToFileConverter.java +++ b/src/main/java/org/scijava/convert/PathToFileConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java index c9e1a0412..ebc1a138a 100644 --- a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java +++ b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java b/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java index 96fdd4211..33441c806 100644 --- a/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java +++ b/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index c5a34abad..8e6ab7aa9 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/StringToNumberConverter.java b/src/main/java/org/scijava/convert/StringToNumberConverter.java index 6376a6a70..6fbebd2cf 100644 --- a/src/main/java/org/scijava/convert/StringToNumberConverter.java +++ b/src/main/java/org/scijava/convert/StringToNumberConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/AbstractDisplay.java b/src/main/java/org/scijava/display/AbstractDisplay.java index b3aa8cc47..c9ff7f702 100644 --- a/src/main/java/org/scijava/display/AbstractDisplay.java +++ b/src/main/java/org/scijava/display/AbstractDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java b/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java index b480f84d1..c0e26c205 100644 --- a/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java +++ b/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultDisplay.java b/src/main/java/org/scijava/display/DefaultDisplay.java index 8813ccd1b..fb2f95d39 100644 --- a/src/main/java/org/scijava/display/DefaultDisplay.java +++ b/src/main/java/org/scijava/display/DefaultDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultDisplayService.java b/src/main/java/org/scijava/display/DefaultDisplayService.java index 836f105f5..946b63cc0 100644 --- a/src/main/java/org/scijava/display/DefaultDisplayService.java +++ b/src/main/java/org/scijava/display/DefaultDisplayService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultTextDisplay.java b/src/main/java/org/scijava/display/DefaultTextDisplay.java index f9b0d3171..abdd3f960 100644 --- a/src/main/java/org/scijava/display/DefaultTextDisplay.java +++ b/src/main/java/org/scijava/display/DefaultTextDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/Display.java b/src/main/java/org/scijava/display/Display.java index 0662c15f6..3df3b4115 100644 --- a/src/main/java/org/scijava/display/Display.java +++ b/src/main/java/org/scijava/display/Display.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DisplayPostprocessor.java b/src/main/java/org/scijava/display/DisplayPostprocessor.java index 1f1db6ac0..1f654e213 100644 --- a/src/main/java/org/scijava/display/DisplayPostprocessor.java +++ b/src/main/java/org/scijava/display/DisplayPostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DisplayService.java b/src/main/java/org/scijava/display/DisplayService.java index cc4a96b89..2d09285e4 100644 --- a/src/main/java/org/scijava/display/DisplayService.java +++ b/src/main/java/org/scijava/display/DisplayService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/Displayable.java b/src/main/java/org/scijava/display/Displayable.java index d079a4c96..f0afe8879 100644 --- a/src/main/java/org/scijava/display/Displayable.java +++ b/src/main/java/org/scijava/display/Displayable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/TextDisplay.java b/src/main/java/org/scijava/display/TextDisplay.java index 63f58eb36..4a4f72b41 100644 --- a/src/main/java/org/scijava/display/TextDisplay.java +++ b/src/main/java/org/scijava/display/TextDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java b/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java index 715a4a291..8457a85aa 100644 --- a/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java b/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java index 9cca17b84..44e1736c3 100644 --- a/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java b/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java index a558604a7..3a866ec4d 100644 --- a/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayEvent.java b/src/main/java/org/scijava/display/event/DisplayEvent.java index 8bdd74598..35cf6026e 100644 --- a/src/main/java/org/scijava/display/event/DisplayEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java b/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java index ee62e8ad9..540812981 100644 --- a/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/InputEvent.java b/src/main/java/org/scijava/display/event/input/InputEvent.java index bae65d081..86008a0c6 100644 --- a/src/main/java/org/scijava/display/event/input/InputEvent.java +++ b/src/main/java/org/scijava/display/event/input/InputEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyEvent.java b/src/main/java/org/scijava/display/event/input/KyEvent.java index c045d99d2..a8b6ae9b9 100644 --- a/src/main/java/org/scijava/display/event/input/KyEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyPressedEvent.java b/src/main/java/org/scijava/display/event/input/KyPressedEvent.java index c8d73d8fb..d5456b715 100644 --- a/src/main/java/org/scijava/display/event/input/KyPressedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyPressedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java b/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java index ca7fdd18c..278c75e1d 100644 --- a/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyTypedEvent.java b/src/main/java/org/scijava/display/event/input/KyTypedEvent.java index f18264ef5..932e1ef9e 100644 --- a/src/main/java/org/scijava/display/event/input/KyTypedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyTypedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsButtonEvent.java b/src/main/java/org/scijava/display/event/input/MsButtonEvent.java index 51cf3adbb..34d49434b 100644 --- a/src/main/java/org/scijava/display/event/input/MsButtonEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsButtonEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsClickedEvent.java b/src/main/java/org/scijava/display/event/input/MsClickedEvent.java index b4af7b6b8..a6c4ba199 100644 --- a/src/main/java/org/scijava/display/event/input/MsClickedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsClickedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java b/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java index d02a8f9e9..ddf8fd2b8 100644 --- a/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java b/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java index 1fefc1f1c..7c65762d6 100644 --- a/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsEvent.java b/src/main/java/org/scijava/display/event/input/MsEvent.java index e2288e32e..ef6bca8dd 100644 --- a/src/main/java/org/scijava/display/event/input/MsEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsExitedEvent.java b/src/main/java/org/scijava/display/event/input/MsExitedEvent.java index f47cda06f..fc6b542ba 100644 --- a/src/main/java/org/scijava/display/event/input/MsExitedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsExitedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsMovedEvent.java b/src/main/java/org/scijava/display/event/input/MsMovedEvent.java index c1c1030ce..25b18bf23 100644 --- a/src/main/java/org/scijava/display/event/input/MsMovedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsMovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsPressedEvent.java b/src/main/java/org/scijava/display/event/input/MsPressedEvent.java index cebaebae1..38fbf57d9 100644 --- a/src/main/java/org/scijava/display/event/input/MsPressedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsPressedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java b/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java index d9b39fe7d..7f7a90e98 100644 --- a/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsWheelEvent.java b/src/main/java/org/scijava/display/event/input/MsWheelEvent.java index 008b66c11..25e2c8fd5 100644 --- a/src/main/java/org/scijava/display/event/input/MsWheelEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsWheelEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java b/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java index 7220064e8..cefba6238 100644 --- a/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinClosedEvent.java b/src/main/java/org/scijava/display/event/window/WinClosedEvent.java index e8e470175..8767b0c3b 100644 --- a/src/main/java/org/scijava/display/event/window/WinClosedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinClosedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinClosingEvent.java b/src/main/java/org/scijava/display/event/window/WinClosingEvent.java index fa7b1bd79..402f42d01 100644 --- a/src/main/java/org/scijava/display/event/window/WinClosingEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinClosingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java b/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java index 7d5e0b3e4..e1b136e70 100644 --- a/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java b/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java index 2af77304f..beae46170 100644 --- a/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinEvent.java b/src/main/java/org/scijava/display/event/window/WinEvent.java index bfe00ebde..c1c50b74b 100644 --- a/src/main/java/org/scijava/display/event/window/WinEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java b/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java index 7d50a608b..3fb4e8f12 100644 --- a/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java b/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java index 3affb4051..f943b0f59 100644 --- a/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DefaultDownloadService.java b/src/main/java/org/scijava/download/DefaultDownloadService.java index f87355f54..749c05497 100644 --- a/src/main/java/org/scijava/download/DefaultDownloadService.java +++ b/src/main/java/org/scijava/download/DefaultDownloadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DiskLocationCache.java b/src/main/java/org/scijava/download/DiskLocationCache.java index 6442d9c27..1a957214b 100644 --- a/src/main/java/org/scijava/download/DiskLocationCache.java +++ b/src/main/java/org/scijava/download/DiskLocationCache.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/Download.java b/src/main/java/org/scijava/download/Download.java index 146c7eb96..2ca41a754 100644 --- a/src/main/java/org/scijava/download/Download.java +++ b/src/main/java/org/scijava/download/Download.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DownloadService.java b/src/main/java/org/scijava/download/DownloadService.java index 94ed5ce53..3e9c8d2d3 100644 --- a/src/main/java/org/scijava/download/DownloadService.java +++ b/src/main/java/org/scijava/download/DownloadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/LocationCache.java b/src/main/java/org/scijava/download/LocationCache.java index 3f902f44e..1e961bf5a 100644 --- a/src/main/java/org/scijava/download/LocationCache.java +++ b/src/main/java/org/scijava/download/LocationCache.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/MultiWriteHandle.java b/src/main/java/org/scijava/download/MultiWriteHandle.java index eb9443133..8f565a3ff 100644 --- a/src/main/java/org/scijava/download/MultiWriteHandle.java +++ b/src/main/java/org/scijava/download/MultiWriteHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/ContextDisposingEvent.java b/src/main/java/org/scijava/event/ContextDisposingEvent.java index 77ef59e3d..cdd8a7814 100644 --- a/src/main/java/org/scijava/event/ContextDisposingEvent.java +++ b/src/main/java/org/scijava/event/ContextDisposingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventBus.java b/src/main/java/org/scijava/event/DefaultEventBus.java index 7a7fd98bc..843bd92b2 100644 --- a/src/main/java/org/scijava/event/DefaultEventBus.java +++ b/src/main/java/org/scijava/event/DefaultEventBus.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventHistory.java b/src/main/java/org/scijava/event/DefaultEventHistory.java index 57cab6bdc..3245d9014 100644 --- a/src/main/java/org/scijava/event/DefaultEventHistory.java +++ b/src/main/java/org/scijava/event/DefaultEventHistory.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index d18b5c62e..fc5f6f3d6 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventDetails.java b/src/main/java/org/scijava/event/EventDetails.java index b10ee4ff4..be0700965 100644 --- a/src/main/java/org/scijava/event/EventDetails.java +++ b/src/main/java/org/scijava/event/EventDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHandler.java b/src/main/java/org/scijava/event/EventHandler.java index ad94bda55..7547b3789 100644 --- a/src/main/java/org/scijava/event/EventHandler.java +++ b/src/main/java/org/scijava/event/EventHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHistory.java b/src/main/java/org/scijava/event/EventHistory.java index 3d0adfbad..de7d48be0 100644 --- a/src/main/java/org/scijava/event/EventHistory.java +++ b/src/main/java/org/scijava/event/EventHistory.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHistoryListener.java b/src/main/java/org/scijava/event/EventHistoryListener.java index b06812dc0..5a8e4b139 100644 --- a/src/main/java/org/scijava/event/EventHistoryListener.java +++ b/src/main/java/org/scijava/event/EventHistoryListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventService.java b/src/main/java/org/scijava/event/EventService.java index 96d35aba1..5c143e18d 100644 --- a/src/main/java/org/scijava/event/EventService.java +++ b/src/main/java/org/scijava/event/EventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventSubscriber.java b/src/main/java/org/scijava/event/EventSubscriber.java index 69725c846..f6e189035 100644 --- a/src/main/java/org/scijava/event/EventSubscriber.java +++ b/src/main/java/org/scijava/event/EventSubscriber.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/SciJavaEvent.java b/src/main/java/org/scijava/event/SciJavaEvent.java index 4adf94671..d6bdd2f39 100644 --- a/src/main/java/org/scijava/event/SciJavaEvent.java +++ b/src/main/java/org/scijava/event/SciJavaEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/Accelerator.java b/src/main/java/org/scijava/input/Accelerator.java index 4615ffd21..200167c44 100644 --- a/src/main/java/org/scijava/input/Accelerator.java +++ b/src/main/java/org/scijava/input/Accelerator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/DefaultInputService.java b/src/main/java/org/scijava/input/DefaultInputService.java index b31364f48..7a6ad862a 100644 --- a/src/main/java/org/scijava/input/DefaultInputService.java +++ b/src/main/java/org/scijava/input/DefaultInputService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/InputModifiers.java b/src/main/java/org/scijava/input/InputModifiers.java index 51dca592c..6adec0eb7 100644 --- a/src/main/java/org/scijava/input/InputModifiers.java +++ b/src/main/java/org/scijava/input/InputModifiers.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/InputService.java b/src/main/java/org/scijava/input/InputService.java index 5966c06d7..92ce58ad5 100644 --- a/src/main/java/org/scijava/input/InputService.java +++ b/src/main/java/org/scijava/input/InputService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/KeyCode.java b/src/main/java/org/scijava/input/KeyCode.java index e09a75dd5..9e817ad4b 100644 --- a/src/main/java/org/scijava/input/KeyCode.java +++ b/src/main/java/org/scijava/input/KeyCode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/MouseCursor.java b/src/main/java/org/scijava/input/MouseCursor.java index e04d7d9da..76144f32f 100644 --- a/src/main/java/org/scijava/input/MouseCursor.java +++ b/src/main/java/org/scijava/input/MouseCursor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/AbstractIOPlugin.java b/src/main/java/org/scijava/io/AbstractIOPlugin.java index 787879832..f1d483810 100644 --- a/src/main/java/org/scijava/io/AbstractIOPlugin.java +++ b/src/main/java/org/scijava/io/AbstractIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/AbstractTypedIOService.java b/src/main/java/org/scijava/io/AbstractTypedIOService.java index 4ca97bd1b..3160c4246 100644 --- a/src/main/java/org/scijava/io/AbstractTypedIOService.java +++ b/src/main/java/org/scijava/io/AbstractTypedIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/ByteArrayByteBank.java b/src/main/java/org/scijava/io/ByteArrayByteBank.java index e3b833405..f74659702 100644 --- a/src/main/java/org/scijava/io/ByteArrayByteBank.java +++ b/src/main/java/org/scijava/io/ByteArrayByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/ByteBank.java b/src/main/java/org/scijava/io/ByteBank.java index c79cbd5d4..058a9cc40 100644 --- a/src/main/java/org/scijava/io/ByteBank.java +++ b/src/main/java/org/scijava/io/ByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/DefaultIOService.java b/src/main/java/org/scijava/io/DefaultIOService.java index b59d2113d..fd0d46c01 100644 --- a/src/main/java/org/scijava/io/DefaultIOService.java +++ b/src/main/java/org/scijava/io/DefaultIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/DefaultRecentFileService.java b/src/main/java/org/scijava/io/DefaultRecentFileService.java index 050b22e78..c2e0b94d7 100644 --- a/src/main/java/org/scijava/io/DefaultRecentFileService.java +++ b/src/main/java/org/scijava/io/DefaultRecentFileService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/IOPlugin.java b/src/main/java/org/scijava/io/IOPlugin.java index 118b693e2..fc797ee29 100644 --- a/src/main/java/org/scijava/io/IOPlugin.java +++ b/src/main/java/org/scijava/io/IOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/IOService.java b/src/main/java/org/scijava/io/IOService.java index 499e18ea5..9dc3c5364 100644 --- a/src/main/java/org/scijava/io/IOService.java +++ b/src/main/java/org/scijava/io/IOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/RecentFileService.java b/src/main/java/org/scijava/io/RecentFileService.java index 019d0a6a1..2f91937bb 100644 --- a/src/main/java/org/scijava/io/RecentFileService.java +++ b/src/main/java/org/scijava/io/RecentFileService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/TypedIOService.java b/src/main/java/org/scijava/io/TypedIOService.java index 0439544e8..711026c5c 100644 --- a/src/main/java/org/scijava/io/TypedIOService.java +++ b/src/main/java/org/scijava/io/TypedIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/console/OpenArgument.java b/src/main/java/org/scijava/io/console/OpenArgument.java index a198a946e..4e929d9c1 100644 --- a/src/main/java/org/scijava/io/console/OpenArgument.java +++ b/src/main/java/org/scijava/io/console/OpenArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/DataOpenedEvent.java b/src/main/java/org/scijava/io/event/DataOpenedEvent.java index a13d20c18..c2d729e0f 100644 --- a/src/main/java/org/scijava/io/event/DataOpenedEvent.java +++ b/src/main/java/org/scijava/io/event/DataOpenedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/DataSavedEvent.java b/src/main/java/org/scijava/io/event/DataSavedEvent.java index 427da0e6a..de82a77ff 100644 --- a/src/main/java/org/scijava/io/event/DataSavedEvent.java +++ b/src/main/java/org/scijava/io/event/DataSavedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/IOEvent.java b/src/main/java/org/scijava/io/event/IOEvent.java index f3ff1652a..8b3c9fa4b 100644 --- a/src/main/java/org/scijava/io/event/IOEvent.java +++ b/src/main/java/org/scijava/io/event/IOEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractDataHandle.java b/src/main/java/org/scijava/io/handle/AbstractDataHandle.java index c9007e250..33a369a5c 100644 --- a/src/main/java/org/scijava/io/handle/AbstractDataHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java b/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java index fb191561c..c1276a092 100644 --- a/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java b/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java index 838cc9229..542b29f2c 100644 --- a/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java b/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java index 3c86730a8..463eefe59 100644 --- a/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/BytesHandle.java b/src/main/java/org/scijava/io/handle/BytesHandle.java index c967b1380..4ab42965f 100644 --- a/src/main/java/org/scijava/io/handle/BytesHandle.java +++ b/src/main/java/org/scijava/io/handle/BytesHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandle.java b/src/main/java/org/scijava/io/handle/DataHandle.java index 7be53f5bb..5497d97b8 100644 --- a/src/main/java/org/scijava/io/handle/DataHandle.java +++ b/src/main/java/org/scijava/io/handle/DataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleInputStream.java b/src/main/java/org/scijava/io/handle/DataHandleInputStream.java index 92e72dcab..bbf9bc183 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleInputStream.java +++ b/src/main/java/org/scijava/io/handle/DataHandleInputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java b/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java index 6b30e1c59..d1a8b4791 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java +++ b/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleService.java b/src/main/java/org/scijava/io/handle/DataHandleService.java index dfb5007f4..37a6e6cfa 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleService.java +++ b/src/main/java/org/scijava/io/handle/DataHandleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandles.java b/src/main/java/org/scijava/io/handle/DataHandles.java index 0ed55abc0..ff2928911 100644 --- a/src/main/java/org/scijava/io/handle/DataHandles.java +++ b/src/main/java/org/scijava/io/handle/DataHandles.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java b/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java index 1349653a6..cf7c8db92 100644 --- a/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java +++ b/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DummyHandle.java b/src/main/java/org/scijava/io/handle/DummyHandle.java index a5b2754b9..ed53272ea 100644 --- a/src/main/java/org/scijava/io/handle/DummyHandle.java +++ b/src/main/java/org/scijava/io/handle/DummyHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/FileHandle.java b/src/main/java/org/scijava/io/handle/FileHandle.java index ad9822101..029447600 100644 --- a/src/main/java/org/scijava/io/handle/FileHandle.java +++ b/src/main/java/org/scijava/io/handle/FileHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java index 1d26e20c0..ffbf10f41 100644 --- a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java b/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java index 17859653a..b5114ca29 100644 --- a/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java b/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java index 1740b7b70..b57ef34d8 100644 --- a/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/StreamHandle.java b/src/main/java/org/scijava/io/handle/StreamHandle.java index 5a4169535..e2e683b08 100644 --- a/src/main/java/org/scijava/io/handle/StreamHandle.java +++ b/src/main/java/org/scijava/io/handle/StreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java b/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java index db400b26a..280457b21 100644 --- a/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractLocation.java b/src/main/java/org/scijava/io/location/AbstractLocation.java index a629c9b48..f1c01a2da 100644 --- a/src/main/java/org/scijava/io/location/AbstractLocation.java +++ b/src/main/java/org/scijava/io/location/AbstractLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractLocationResolver.java b/src/main/java/org/scijava/io/location/AbstractLocationResolver.java index 93616403e..0771e095a 100644 --- a/src/main/java/org/scijava/io/location/AbstractLocationResolver.java +++ b/src/main/java/org/scijava/io/location/AbstractLocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java b/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java index c36f21bbf..ecd40cb78 100644 --- a/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java +++ b/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/BrowsableLocation.java b/src/main/java/org/scijava/io/location/BrowsableLocation.java index 312df412c..e3f03f912 100644 --- a/src/main/java/org/scijava/io/location/BrowsableLocation.java +++ b/src/main/java/org/scijava/io/location/BrowsableLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/BytesLocation.java b/src/main/java/org/scijava/io/location/BytesLocation.java index 0d6210d69..2ac731595 100644 --- a/src/main/java/org/scijava/io/location/BytesLocation.java +++ b/src/main/java/org/scijava/io/location/BytesLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/DefaultLocationService.java b/src/main/java/org/scijava/io/location/DefaultLocationService.java index 92ba74047..5f010073b 100644 --- a/src/main/java/org/scijava/io/location/DefaultLocationService.java +++ b/src/main/java/org/scijava/io/location/DefaultLocationService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/DummyLocation.java b/src/main/java/org/scijava/io/location/DummyLocation.java index 676bd87df..1a2058b42 100644 --- a/src/main/java/org/scijava/io/location/DummyLocation.java +++ b/src/main/java/org/scijava/io/location/DummyLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/FileLocation.java b/src/main/java/org/scijava/io/location/FileLocation.java index 03480c0ae..d86d0e6ae 100644 --- a/src/main/java/org/scijava/io/location/FileLocation.java +++ b/src/main/java/org/scijava/io/location/FileLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/FileLocationResolver.java b/src/main/java/org/scijava/io/location/FileLocationResolver.java index b8d642d3e..498ca6d37 100644 --- a/src/main/java/org/scijava/io/location/FileLocationResolver.java +++ b/src/main/java/org/scijava/io/location/FileLocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/Location.java b/src/main/java/org/scijava/io/location/Location.java index 470c9cb22..74fd05a65 100644 --- a/src/main/java/org/scijava/io/location/Location.java +++ b/src/main/java/org/scijava/io/location/Location.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/LocationResolver.java b/src/main/java/org/scijava/io/location/LocationResolver.java index 9dd2c650c..1759f180b 100644 --- a/src/main/java/org/scijava/io/location/LocationResolver.java +++ b/src/main/java/org/scijava/io/location/LocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/LocationService.java b/src/main/java/org/scijava/io/location/LocationService.java index 0d6104815..b06c6201f 100644 --- a/src/main/java/org/scijava/io/location/LocationService.java +++ b/src/main/java/org/scijava/io/location/LocationService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/RemoteLocation.java b/src/main/java/org/scijava/io/location/RemoteLocation.java index f9bc1b608..6a1ca7bde 100644 --- a/src/main/java/org/scijava/io/location/RemoteLocation.java +++ b/src/main/java/org/scijava/io/location/RemoteLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/URILocation.java b/src/main/java/org/scijava/io/location/URILocation.java index 7b58d6a39..02c3e61d7 100644 --- a/src/main/java/org/scijava/io/location/URILocation.java +++ b/src/main/java/org/scijava/io/location/URILocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/URLLocation.java b/src/main/java/org/scijava/io/location/URLLocation.java index d7e4ed49e..e96afcb7d 100644 --- a/src/main/java/org/scijava/io/location/URLLocation.java +++ b/src/main/java/org/scijava/io/location/URLLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java b/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java index 8fb6b0c52..8e3d9afb9 100644 --- a/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java +++ b/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/DefaultNIOService.java b/src/main/java/org/scijava/io/nio/DefaultNIOService.java index 8bff57a73..832ce5e06 100644 --- a/src/main/java/org/scijava/io/nio/DefaultNIOService.java +++ b/src/main/java/org/scijava/io/nio/DefaultNIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/NIOService.java b/src/main/java/org/scijava/io/nio/NIOService.java index 111ceb81c..b56330b00 100644 --- a/src/main/java/org/scijava/io/nio/NIOService.java +++ b/src/main/java/org/scijava/io/nio/NIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/AbstractLogService.java b/src/main/java/org/scijava/log/AbstractLogService.java index 5ae980645..74e620f2e 100644 --- a/src/main/java/org/scijava/log/AbstractLogService.java +++ b/src/main/java/org/scijava/log/AbstractLogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/CallingClassUtils.java b/src/main/java/org/scijava/log/CallingClassUtils.java index fc1250e78..4216120e7 100644 --- a/src/main/java/org/scijava/log/CallingClassUtils.java +++ b/src/main/java/org/scijava/log/CallingClassUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/DefaultLogger.java b/src/main/java/org/scijava/log/DefaultLogger.java index f11ec5ae0..e8bbfdce6 100644 --- a/src/main/java/org/scijava/log/DefaultLogger.java +++ b/src/main/java/org/scijava/log/DefaultLogger.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java b/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java index d8d45c4d5..b866c447c 100644 --- a/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java +++ b/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/IgnoreAsCallingClass.java b/src/main/java/org/scijava/log/IgnoreAsCallingClass.java index 775c7b4ff..fc0043dc8 100644 --- a/src/main/java/org/scijava/log/IgnoreAsCallingClass.java +++ b/src/main/java/org/scijava/log/IgnoreAsCallingClass.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogLevel.java b/src/main/java/org/scijava/log/LogLevel.java index 276970ae2..0b0211f3b 100644 --- a/src/main/java/org/scijava/log/LogLevel.java +++ b/src/main/java/org/scijava/log/LogLevel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogListener.java b/src/main/java/org/scijava/log/LogListener.java index 8c4047849..502a54c8e 100644 --- a/src/main/java/org/scijava/log/LogListener.java +++ b/src/main/java/org/scijava/log/LogListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogMessage.java b/src/main/java/org/scijava/log/LogMessage.java index 235de87f1..771fe28d9 100644 --- a/src/main/java/org/scijava/log/LogMessage.java +++ b/src/main/java/org/scijava/log/LogMessage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogService.java b/src/main/java/org/scijava/log/LogService.java index 4675e0eab..c4068d1ff 100644 --- a/src/main/java/org/scijava/log/LogService.java +++ b/src/main/java/org/scijava/log/LogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogSource.java b/src/main/java/org/scijava/log/LogSource.java index af8e6802e..30bdca5b5 100644 --- a/src/main/java/org/scijava/log/LogSource.java +++ b/src/main/java/org/scijava/log/LogSource.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/Logged.java b/src/main/java/org/scijava/log/Logged.java index 8e15caf9e..59c1f5c5a 100644 --- a/src/main/java/org/scijava/log/Logged.java +++ b/src/main/java/org/scijava/log/Logged.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/Logger.java b/src/main/java/org/scijava/log/Logger.java index eccb06796..4c066b310 100644 --- a/src/main/java/org/scijava/log/Logger.java +++ b/src/main/java/org/scijava/log/Logger.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/StderrLogService.java b/src/main/java/org/scijava/log/StderrLogService.java index f387991d2..e67c97132 100644 --- a/src/main/java/org/scijava/log/StderrLogService.java +++ b/src/main/java/org/scijava/log/StderrLogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/DefaultMainService.java b/src/main/java/org/scijava/main/DefaultMainService.java index 81677d5c2..1be25c6bc 100644 --- a/src/main/java/org/scijava/main/DefaultMainService.java +++ b/src/main/java/org/scijava/main/DefaultMainService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/MainService.java b/src/main/java/org/scijava/main/MainService.java index f1e76b85f..2230a6d4e 100644 --- a/src/main/java/org/scijava/main/MainService.java +++ b/src/main/java/org/scijava/main/MainService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/console/MainArgument.java b/src/main/java/org/scijava/main/console/MainArgument.java index 71a116fb6..e1548f46c 100644 --- a/src/main/java/org/scijava/main/console/MainArgument.java +++ b/src/main/java/org/scijava/main/console/MainArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/run/MainCodeRunner.java b/src/main/java/org/scijava/main/run/MainCodeRunner.java index f1da7f002..bbf3cc36a 100644 --- a/src/main/java/org/scijava/main/run/MainCodeRunner.java +++ b/src/main/java/org/scijava/main/run/MainCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/AbstractMenuCreator.java b/src/main/java/org/scijava/menu/AbstractMenuCreator.java index 8d076304c..8ad7ba7d4 100644 --- a/src/main/java/org/scijava/menu/AbstractMenuCreator.java +++ b/src/main/java/org/scijava/menu/AbstractMenuCreator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/DefaultMenuService.java b/src/main/java/org/scijava/menu/DefaultMenuService.java index 287e28e5b..af6eee927 100644 --- a/src/main/java/org/scijava/menu/DefaultMenuService.java +++ b/src/main/java/org/scijava/menu/DefaultMenuService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuConstants.java b/src/main/java/org/scijava/menu/MenuConstants.java index 24e27506b..f15311579 100644 --- a/src/main/java/org/scijava/menu/MenuConstants.java +++ b/src/main/java/org/scijava/menu/MenuConstants.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuCreator.java b/src/main/java/org/scijava/menu/MenuCreator.java index d5ddc13d9..0be942d50 100644 --- a/src/main/java/org/scijava/menu/MenuCreator.java +++ b/src/main/java/org/scijava/menu/MenuCreator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuService.java b/src/main/java/org/scijava/menu/MenuService.java index 1a9a98a13..2625caee8 100644 --- a/src/main/java/org/scijava/menu/MenuService.java +++ b/src/main/java/org/scijava/menu/MenuService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/ShadowMenu.java b/src/main/java/org/scijava/menu/ShadowMenu.java index a364d827e..95bcd409a 100644 --- a/src/main/java/org/scijava/menu/ShadowMenu.java +++ b/src/main/java/org/scijava/menu/ShadowMenu.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/ShadowMenuIterator.java b/src/main/java/org/scijava/menu/ShadowMenuIterator.java index 5c1471f7d..2d35a8d2b 100644 --- a/src/main/java/org/scijava/menu/ShadowMenuIterator.java +++ b/src/main/java/org/scijava/menu/ShadowMenuIterator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenuEvent.java b/src/main/java/org/scijava/menu/event/MenuEvent.java index 56a29995a..db950826c 100644 --- a/src/main/java/org/scijava/menu/event/MenuEvent.java +++ b/src/main/java/org/scijava/menu/event/MenuEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusAddedEvent.java b/src/main/java/org/scijava/menu/event/MenusAddedEvent.java index 77b4626d4..7b2595af5 100644 --- a/src/main/java/org/scijava/menu/event/MenusAddedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java b/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java index 717f4be7c..008d2784d 100644 --- a/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java b/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java index 781a6c998..ff0ea6cd6 100644 --- a/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModule.java b/src/main/java/org/scijava/module/AbstractModule.java index e30a52a1c..4dbae4407 100644 --- a/src/main/java/org/scijava/module/AbstractModule.java +++ b/src/main/java/org/scijava/module/AbstractModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModuleInfo.java b/src/main/java/org/scijava/module/AbstractModuleInfo.java index 196b11ab5..9fed0102c 100644 --- a/src/main/java/org/scijava/module/AbstractModuleInfo.java +++ b/src/main/java/org/scijava/module/AbstractModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModuleItem.java b/src/main/java/org/scijava/module/AbstractModuleItem.java index b96941e8d..3f8c7c09c 100644 --- a/src/main/java/org/scijava/module/AbstractModuleItem.java +++ b/src/main/java/org/scijava/module/AbstractModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultModuleService.java b/src/main/java/org/scijava/module/DefaultModuleService.java index 228cee0b1..12b2c19b4 100644 --- a/src/main/java/org/scijava/module/DefaultModuleService.java +++ b/src/main/java/org/scijava/module/DefaultModuleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModule.java b/src/main/java/org/scijava/module/DefaultMutableModule.java index 29c28bdfb..3ab26d90f 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModule.java +++ b/src/main/java/org/scijava/module/DefaultMutableModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java b/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java index a7b2c8de2..bdb3b0c4b 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java +++ b/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModuleItem.java b/src/main/java/org/scijava/module/DefaultMutableModuleItem.java index fc74b85d0..fc7cd35d0 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModuleItem.java +++ b/src/main/java/org/scijava/module/DefaultMutableModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MethodCallException.java b/src/main/java/org/scijava/module/MethodCallException.java index 823220f4c..f42988331 100644 --- a/src/main/java/org/scijava/module/MethodCallException.java +++ b/src/main/java/org/scijava/module/MethodCallException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MethodRef.java b/src/main/java/org/scijava/module/MethodRef.java index 2761aaa25..b20c2d714 100644 --- a/src/main/java/org/scijava/module/MethodRef.java +++ b/src/main/java/org/scijava/module/MethodRef.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/Module.java b/src/main/java/org/scijava/module/Module.java index 35ae5decd..9df7cfda9 100644 --- a/src/main/java/org/scijava/module/Module.java +++ b/src/main/java/org/scijava/module/Module.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleCanceledException.java b/src/main/java/org/scijava/module/ModuleCanceledException.java index df33ba8c9..85c20a202 100644 --- a/src/main/java/org/scijava/module/ModuleCanceledException.java +++ b/src/main/java/org/scijava/module/ModuleCanceledException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleException.java b/src/main/java/org/scijava/module/ModuleException.java index 59d490f17..5b9a3495d 100644 --- a/src/main/java/org/scijava/module/ModuleException.java +++ b/src/main/java/org/scijava/module/ModuleException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleIndex.java b/src/main/java/org/scijava/module/ModuleIndex.java index f40875599..04f0d4de8 100644 --- a/src/main/java/org/scijava/module/ModuleIndex.java +++ b/src/main/java/org/scijava/module/ModuleIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleInfo.java b/src/main/java/org/scijava/module/ModuleInfo.java index bcf7107f5..b7ae95bab 100644 --- a/src/main/java/org/scijava/module/ModuleInfo.java +++ b/src/main/java/org/scijava/module/ModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleItem.java b/src/main/java/org/scijava/module/ModuleItem.java index b226bcde0..1f1f39003 100644 --- a/src/main/java/org/scijava/module/ModuleItem.java +++ b/src/main/java/org/scijava/module/ModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleRunner.java b/src/main/java/org/scijava/module/ModuleRunner.java index 0a4cff44e..d5f61890a 100644 --- a/src/main/java/org/scijava/module/ModuleRunner.java +++ b/src/main/java/org/scijava/module/ModuleRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleService.java b/src/main/java/org/scijava/module/ModuleService.java index ffcbb4d0d..f19ae1df3 100644 --- a/src/main/java/org/scijava/module/ModuleService.java +++ b/src/main/java/org/scijava/module/ModuleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModule.java b/src/main/java/org/scijava/module/MutableModule.java index 294a7c66a..1624c726d 100644 --- a/src/main/java/org/scijava/module/MutableModule.java +++ b/src/main/java/org/scijava/module/MutableModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModuleInfo.java b/src/main/java/org/scijava/module/MutableModuleInfo.java index 976603838..ee7c00232 100644 --- a/src/main/java/org/scijava/module/MutableModuleInfo.java +++ b/src/main/java/org/scijava/module/MutableModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModuleItem.java b/src/main/java/org/scijava/module/MutableModuleItem.java index fc3dfa6a0..3ac251f50 100644 --- a/src/main/java/org/scijava/module/MutableModuleItem.java +++ b/src/main/java/org/scijava/module/MutableModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java b/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java index eef9c42d1..d090600cb 100644 --- a/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleEvent.java b/src/main/java/org/scijava/module/event/ModuleEvent.java index f059dd3a9..ee5c721c1 100644 --- a/src/main/java/org/scijava/module/event/ModuleEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java index f8b17ed12..66b8a8c29 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java index e3ba97c10..d00bb48a4 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java index 3f6aa0c97..81ff94ee1 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java b/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java index d72d0cd07..6c7c2d543 100644 --- a/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java b/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java index 6402c8e1a..4587ba475 100644 --- a/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java +++ b/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java b/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java index 0eedb7c05..e4f228907 100644 --- a/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java +++ b/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleProcessEvent.java b/src/main/java/org/scijava/module/event/ModuleProcessEvent.java index 8dba30973..6519874f4 100644 --- a/src/main/java/org/scijava/module/event/ModuleProcessEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleProcessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleStartedEvent.java b/src/main/java/org/scijava/module/event/ModuleStartedEvent.java index cbe7f0518..aa31745a0 100644 --- a/src/main/java/org/scijava/module/event/ModuleStartedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleStartedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesAddedEvent.java b/src/main/java/org/scijava/module/event/ModulesAddedEvent.java index 8ef3dcf44..0b0844e94 100644 --- a/src/main/java/org/scijava/module/event/ModulesAddedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesListEvent.java b/src/main/java/org/scijava/module/event/ModulesListEvent.java index 7fba52f93..fb5fc5199 100644 --- a/src/main/java/org/scijava/module/event/ModulesListEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java b/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java index 87b43a956..00f2d276f 100644 --- a/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java b/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java index 610ad5a94..eb20e9431 100644 --- a/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java b/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java index 8242389bb..d7a025dd6 100644 --- a/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java b/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java index 93d3726a2..1824c8b39 100644 --- a/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java b/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java index 1fcdc7403..59b9b77a6 100644 --- a/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java +++ b/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java b/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java index d5323ad2f..87526ac1a 100644 --- a/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DebugPostprocessor.java b/src/main/java/org/scijava/module/process/DebugPostprocessor.java index 1927c68aa..7fbfb10df 100644 --- a/src/main/java/org/scijava/module/process/DebugPostprocessor.java +++ b/src/main/java/org/scijava/module/process/DebugPostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DebugPreprocessor.java b/src/main/java/org/scijava/module/process/DebugPreprocessor.java index 69e9a0099..0cb62640c 100644 --- a/src/main/java/org/scijava/module/process/DebugPreprocessor.java +++ b/src/main/java/org/scijava/module/process/DebugPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java b/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java index 7239743f9..272f8580d 100644 --- a/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java +++ b/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/GatewayPreprocessor.java b/src/main/java/org/scijava/module/process/GatewayPreprocessor.java index 86ad0eb5e..4d0a71616 100644 --- a/src/main/java/org/scijava/module/process/GatewayPreprocessor.java +++ b/src/main/java/org/scijava/module/process/GatewayPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/InitPreprocessor.java b/src/main/java/org/scijava/module/process/InitPreprocessor.java index 2ca0e647b..629501688 100644 --- a/src/main/java/org/scijava/module/process/InitPreprocessor.java +++ b/src/main/java/org/scijava/module/process/InitPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java b/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java index 62b6ad5bd..773096c99 100644 --- a/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java index ded3ac399..439ae43e6 100644 --- a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java +++ b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModulePostprocessor.java b/src/main/java/org/scijava/module/process/ModulePostprocessor.java index a64b52723..93a017750 100644 --- a/src/main/java/org/scijava/module/process/ModulePostprocessor.java +++ b/src/main/java/org/scijava/module/process/ModulePostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModulePreprocessor.java b/src/main/java/org/scijava/module/process/ModulePreprocessor.java index 293610033..f0cbe88b9 100644 --- a/src/main/java/org/scijava/module/process/ModulePreprocessor.java +++ b/src/main/java/org/scijava/module/process/ModulePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModuleProcessor.java b/src/main/java/org/scijava/module/process/ModuleProcessor.java index c14c275b3..003d0b2c7 100644 --- a/src/main/java/org/scijava/module/process/ModuleProcessor.java +++ b/src/main/java/org/scijava/module/process/ModuleProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/PostprocessorPlugin.java b/src/main/java/org/scijava/module/process/PostprocessorPlugin.java index 07081b6c9..f60dc8cfc 100644 --- a/src/main/java/org/scijava/module/process/PostprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/PostprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/PreprocessorPlugin.java b/src/main/java/org/scijava/module/process/PreprocessorPlugin.java index 66b10b86a..357ca6612 100644 --- a/src/main/java/org/scijava/module/process/PreprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/PreprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java b/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java index 1998a76d1..742cb870e 100644 --- a/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ServicePreprocessor.java b/src/main/java/org/scijava/module/process/ServicePreprocessor.java index 048f0da82..44f7060ac 100644 --- a/src/main/java/org/scijava/module/process/ServicePreprocessor.java +++ b/src/main/java/org/scijava/module/process/ServicePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ValidityPreprocessor.java b/src/main/java/org/scijava/module/process/ValidityPreprocessor.java index ac86b2020..88c35a9d6 100644 --- a/src/main/java/org/scijava/module/process/ValidityPreprocessor.java +++ b/src/main/java/org/scijava/module/process/ValidityPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/run/ModuleCodeRunner.java b/src/main/java/org/scijava/module/run/ModuleCodeRunner.java index 2ee78144c..4cafd1220 100644 --- a/src/main/java/org/scijava/module/run/ModuleCodeRunner.java +++ b/src/main/java/org/scijava/module/run/ModuleCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/DefaultObjectService.java b/src/main/java/org/scijava/object/DefaultObjectService.java index 0b112b662..8063f9709 100644 --- a/src/main/java/org/scijava/object/DefaultObjectService.java +++ b/src/main/java/org/scijava/object/DefaultObjectService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/LazyObjects.java b/src/main/java/org/scijava/object/LazyObjects.java index 3fc476f79..12a53afc1 100644 --- a/src/main/java/org/scijava/object/LazyObjects.java +++ b/src/main/java/org/scijava/object/LazyObjects.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/NamedObjectIndex.java b/src/main/java/org/scijava/object/NamedObjectIndex.java index 9cd2aeae6..8e3712e4a 100644 --- a/src/main/java/org/scijava/object/NamedObjectIndex.java +++ b/src/main/java/org/scijava/object/NamedObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/ObjectIndex.java b/src/main/java/org/scijava/object/ObjectIndex.java index e97521043..10220b1f3 100644 --- a/src/main/java/org/scijava/object/ObjectIndex.java +++ b/src/main/java/org/scijava/object/ObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/ObjectService.java b/src/main/java/org/scijava/object/ObjectService.java index 392e476d5..687fabdfe 100644 --- a/src/main/java/org/scijava/object/ObjectService.java +++ b/src/main/java/org/scijava/object/ObjectService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/SortedObjectIndex.java b/src/main/java/org/scijava/object/SortedObjectIndex.java index 77b231a0c..2a9f12e44 100644 --- a/src/main/java/org/scijava/object/SortedObjectIndex.java +++ b/src/main/java/org/scijava/object/SortedObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ListEvent.java b/src/main/java/org/scijava/object/event/ListEvent.java index ecf3103e9..58ad375df 100644 --- a/src/main/java/org/scijava/object/event/ListEvent.java +++ b/src/main/java/org/scijava/object/event/ListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java b/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java index 7f0615f4c..597953762 100644 --- a/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java b/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java index 47fc3c88c..d033c7d5a 100644 --- a/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectEvent.java b/src/main/java/org/scijava/object/event/ObjectEvent.java index 80816a27b..17446edf9 100644 --- a/src/main/java/org/scijava/object/event/ObjectEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java b/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java index 966294653..8459e1a0d 100644 --- a/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java b/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java index 9da819a74..fb173a3a0 100644 --- a/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsListEvent.java b/src/main/java/org/scijava/object/event/ObjectsListEvent.java index f9880b3e6..6039ba504 100644 --- a/src/main/java/org/scijava/object/event/ObjectsListEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java b/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java index 4a0872e99..2d6e3a997 100644 --- a/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/DefaultOptionsService.java b/src/main/java/org/scijava/options/DefaultOptionsService.java index 7e44fb84a..9967aa887 100644 --- a/src/main/java/org/scijava/options/DefaultOptionsService.java +++ b/src/main/java/org/scijava/options/DefaultOptionsService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/OptionsPlugin.java b/src/main/java/org/scijava/options/OptionsPlugin.java index bda0f4df2..1994745d8 100644 --- a/src/main/java/org/scijava/options/OptionsPlugin.java +++ b/src/main/java/org/scijava/options/OptionsPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/OptionsService.java b/src/main/java/org/scijava/options/OptionsService.java index 72ead76f2..d0e49bc8c 100644 --- a/src/main/java/org/scijava/options/OptionsService.java +++ b/src/main/java/org/scijava/options/OptionsService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/event/OptionsEvent.java b/src/main/java/org/scijava/options/event/OptionsEvent.java index 48c53fffc..49d676898 100644 --- a/src/main/java/org/scijava/options/event/OptionsEvent.java +++ b/src/main/java/org/scijava/options/event/OptionsEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/DefaultParseService.java b/src/main/java/org/scijava/parse/DefaultParseService.java index 53bdbe46a..1257be932 100644 --- a/src/main/java/org/scijava/parse/DefaultParseService.java +++ b/src/main/java/org/scijava/parse/DefaultParseService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/Item.java b/src/main/java/org/scijava/parse/Item.java index efb86a527..e531fad34 100644 --- a/src/main/java/org/scijava/parse/Item.java +++ b/src/main/java/org/scijava/parse/Item.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/Items.java b/src/main/java/org/scijava/parse/Items.java index a54117481..9cc462972 100644 --- a/src/main/java/org/scijava/parse/Items.java +++ b/src/main/java/org/scijava/parse/Items.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/ParseService.java b/src/main/java/org/scijava/parse/ParseService.java index de88860dd..2f8a5ed1a 100644 --- a/src/main/java/org/scijava/parse/ParseService.java +++ b/src/main/java/org/scijava/parse/ParseService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/AbstractPlatform.java b/src/main/java/org/scijava/platform/AbstractPlatform.java index 6c8cfa5bc..d192753f2 100644 --- a/src/main/java/org/scijava/platform/AbstractPlatform.java +++ b/src/main/java/org/scijava/platform/AbstractPlatform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/AppEventService.java b/src/main/java/org/scijava/platform/AppEventService.java index 26d2b4555..c8e51bf5d 100644 --- a/src/main/java/org/scijava/platform/AppEventService.java +++ b/src/main/java/org/scijava/platform/AppEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultAppEventService.java b/src/main/java/org/scijava/platform/DefaultAppEventService.java index 2101d8c04..ebc753143 100644 --- a/src/main/java/org/scijava/platform/DefaultAppEventService.java +++ b/src/main/java/org/scijava/platform/DefaultAppEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultPlatform.java b/src/main/java/org/scijava/platform/DefaultPlatform.java index 6d61317fe..35c756bdc 100644 --- a/src/main/java/org/scijava/platform/DefaultPlatform.java +++ b/src/main/java/org/scijava/platform/DefaultPlatform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultPlatformService.java b/src/main/java/org/scijava/platform/DefaultPlatformService.java index 2a1c671ae..5dd7ffe6b 100644 --- a/src/main/java/org/scijava/platform/DefaultPlatformService.java +++ b/src/main/java/org/scijava/platform/DefaultPlatformService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/Platform.java b/src/main/java/org/scijava/platform/Platform.java index 3a663bb85..fd3b71e6d 100644 --- a/src/main/java/org/scijava/platform/Platform.java +++ b/src/main/java/org/scijava/platform/Platform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/PlatformService.java b/src/main/java/org/scijava/platform/PlatformService.java index 2f771bd35..99eaf6612 100644 --- a/src/main/java/org/scijava/platform/PlatformService.java +++ b/src/main/java/org/scijava/platform/PlatformService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppAboutEvent.java b/src/main/java/org/scijava/platform/event/AppAboutEvent.java index 46eed9b31..1b1390e93 100644 --- a/src/main/java/org/scijava/platform/event/AppAboutEvent.java +++ b/src/main/java/org/scijava/platform/event/AppAboutEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppFocusEvent.java b/src/main/java/org/scijava/platform/event/AppFocusEvent.java index 36d5605a0..5aafe2b91 100644 --- a/src/main/java/org/scijava/platform/event/AppFocusEvent.java +++ b/src/main/java/org/scijava/platform/event/AppFocusEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java b/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java index 1e9dd3f9e..5603e085d 100644 --- a/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java +++ b/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java b/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java index 5b3bdcde1..aa33f9e15 100644 --- a/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java +++ b/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java b/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java index 2b4883129..73a123737 100644 --- a/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java +++ b/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppPrintEvent.java b/src/main/java/org/scijava/platform/event/AppPrintEvent.java index 013a70e79..03be243a9 100644 --- a/src/main/java/org/scijava/platform/event/AppPrintEvent.java +++ b/src/main/java/org/scijava/platform/event/AppPrintEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppQuitEvent.java b/src/main/java/org/scijava/platform/event/AppQuitEvent.java index de8d9be40..f2398c75f 100644 --- a/src/main/java/org/scijava/platform/event/AppQuitEvent.java +++ b/src/main/java/org/scijava/platform/event/AppQuitEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppReOpenEvent.java b/src/main/java/org/scijava/platform/event/AppReOpenEvent.java index 907e83148..674f3b340 100644 --- a/src/main/java/org/scijava/platform/event/AppReOpenEvent.java +++ b/src/main/java/org/scijava/platform/event/AppReOpenEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java b/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java index fcedfd3a3..a82b0c20a 100644 --- a/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppSleepEvent.java b/src/main/java/org/scijava/platform/event/AppSleepEvent.java index 776b80fba..b70c05442 100644 --- a/src/main/java/org/scijava/platform/event/AppSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java b/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java index f7c426e3a..4cbfa99f3 100644 --- a/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java b/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java index e3ee34255..3a48d5a5e 100644 --- a/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java +++ b/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppVisibleEvent.java b/src/main/java/org/scijava/platform/event/AppVisibleEvent.java index 307895791..e99c60d37 100644 --- a/src/main/java/org/scijava/platform/event/AppVisibleEvent.java +++ b/src/main/java/org/scijava/platform/event/AppVisibleEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/ApplicationEvent.java b/src/main/java/org/scijava/platform/event/ApplicationEvent.java index 0b359cd46..e5af9d7bd 100644 --- a/src/main/java/org/scijava/platform/event/ApplicationEvent.java +++ b/src/main/java/org/scijava/platform/event/ApplicationEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java b/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java index 3187fcd23..91448fa9b 100644 --- a/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractHandlerService.java b/src/main/java/org/scijava/plugin/AbstractHandlerService.java index 4ede3e5aa..e17ba3be7 100644 --- a/src/main/java/org/scijava/plugin/AbstractHandlerService.java +++ b/src/main/java/org/scijava/plugin/AbstractHandlerService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractPTService.java b/src/main/java/org/scijava/plugin/AbstractPTService.java index 7d96d2770..76b268b65 100644 --- a/src/main/java/org/scijava/plugin/AbstractPTService.java +++ b/src/main/java/org/scijava/plugin/AbstractPTService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractRichPlugin.java b/src/main/java/org/scijava/plugin/AbstractRichPlugin.java index 2d53decac..4b61e1b9f 100644 --- a/src/main/java/org/scijava/plugin/AbstractRichPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractRichPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractSingletonService.java b/src/main/java/org/scijava/plugin/AbstractSingletonService.java index c54f26ee5..28885726a 100644 --- a/src/main/java/org/scijava/plugin/AbstractSingletonService.java +++ b/src/main/java/org/scijava/plugin/AbstractSingletonService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java b/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java index 8d9e4a1f3..cb479c299 100644 --- a/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractTypedService.java b/src/main/java/org/scijava/plugin/AbstractTypedService.java index 17ea8f400..d2ab714a7 100644 --- a/src/main/java/org/scijava/plugin/AbstractTypedService.java +++ b/src/main/java/org/scijava/plugin/AbstractTypedService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java b/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java index 26fcc5e47..d2324ccd3 100644 --- a/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractWrapperService.java b/src/main/java/org/scijava/plugin/AbstractWrapperService.java index 516ad9d69..69fa49c20 100644 --- a/src/main/java/org/scijava/plugin/AbstractWrapperService.java +++ b/src/main/java/org/scijava/plugin/AbstractWrapperService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Attr.java b/src/main/java/org/scijava/plugin/Attr.java index d45a4f0b0..e828d2f2b 100644 --- a/src/main/java/org/scijava/plugin/Attr.java +++ b/src/main/java/org/scijava/plugin/Attr.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/DefaultPluginFinder.java b/src/main/java/org/scijava/plugin/DefaultPluginFinder.java index 99fc8fd18..9b2041484 100644 --- a/src/main/java/org/scijava/plugin/DefaultPluginFinder.java +++ b/src/main/java/org/scijava/plugin/DefaultPluginFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/DefaultPluginService.java b/src/main/java/org/scijava/plugin/DefaultPluginService.java index 02b905f56..7e73d3e2c 100644 --- a/src/main/java/org/scijava/plugin/DefaultPluginService.java +++ b/src/main/java/org/scijava/plugin/DefaultPluginService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HandlerPlugin.java b/src/main/java/org/scijava/plugin/HandlerPlugin.java index b511aab11..b08fad223 100644 --- a/src/main/java/org/scijava/plugin/HandlerPlugin.java +++ b/src/main/java/org/scijava/plugin/HandlerPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HandlerService.java b/src/main/java/org/scijava/plugin/HandlerService.java index 1a2bfa119..8a5942493 100644 --- a/src/main/java/org/scijava/plugin/HandlerService.java +++ b/src/main/java/org/scijava/plugin/HandlerService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HasPluginInfo.java b/src/main/java/org/scijava/plugin/HasPluginInfo.java index 19c3da732..971201198 100644 --- a/src/main/java/org/scijava/plugin/HasPluginInfo.java +++ b/src/main/java/org/scijava/plugin/HasPluginInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Menu.java b/src/main/java/org/scijava/plugin/Menu.java index 0c00e546b..3c3b0706a 100644 --- a/src/main/java/org/scijava/plugin/Menu.java +++ b/src/main/java/org/scijava/plugin/Menu.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PTService.java b/src/main/java/org/scijava/plugin/PTService.java index 4feb02532..ad63b6919 100644 --- a/src/main/java/org/scijava/plugin/PTService.java +++ b/src/main/java/org/scijava/plugin/PTService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Parameter.java b/src/main/java/org/scijava/plugin/Parameter.java index cddcad87b..f922c23c8 100644 --- a/src/main/java/org/scijava/plugin/Parameter.java +++ b/src/main/java/org/scijava/plugin/Parameter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Plugin.java b/src/main/java/org/scijava/plugin/Plugin.java index a1f7af866..d2aabba95 100644 --- a/src/main/java/org/scijava/plugin/Plugin.java +++ b/src/main/java/org/scijava/plugin/Plugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginFinder.java b/src/main/java/org/scijava/plugin/PluginFinder.java index 0b9ff441e..ccf96ee6a 100644 --- a/src/main/java/org/scijava/plugin/PluginFinder.java +++ b/src/main/java/org/scijava/plugin/PluginFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginIndex.java b/src/main/java/org/scijava/plugin/PluginIndex.java index 640b6d61b..944133d38 100644 --- a/src/main/java/org/scijava/plugin/PluginIndex.java +++ b/src/main/java/org/scijava/plugin/PluginIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginInfo.java b/src/main/java/org/scijava/plugin/PluginInfo.java index a9e4b5e09..6629cdb80 100644 --- a/src/main/java/org/scijava/plugin/PluginInfo.java +++ b/src/main/java/org/scijava/plugin/PluginInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginService.java b/src/main/java/org/scijava/plugin/PluginService.java index 07f44a6ca..3b8ccea3e 100644 --- a/src/main/java/org/scijava/plugin/PluginService.java +++ b/src/main/java/org/scijava/plugin/PluginService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/RichPlugin.java b/src/main/java/org/scijava/plugin/RichPlugin.java index d649eb5aa..29fc580af 100644 --- a/src/main/java/org/scijava/plugin/RichPlugin.java +++ b/src/main/java/org/scijava/plugin/RichPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SciJavaPlugin.java b/src/main/java/org/scijava/plugin/SciJavaPlugin.java index ff4bd3c7a..bdbe7df70 100644 --- a/src/main/java/org/scijava/plugin/SciJavaPlugin.java +++ b/src/main/java/org/scijava/plugin/SciJavaPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SingletonPlugin.java b/src/main/java/org/scijava/plugin/SingletonPlugin.java index b26ee37cc..28c9dbd60 100644 --- a/src/main/java/org/scijava/plugin/SingletonPlugin.java +++ b/src/main/java/org/scijava/plugin/SingletonPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SingletonService.java b/src/main/java/org/scijava/plugin/SingletonService.java index 07c2ff091..7f2363307 100644 --- a/src/main/java/org/scijava/plugin/SingletonService.java +++ b/src/main/java/org/scijava/plugin/SingletonService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SortablePlugin.java b/src/main/java/org/scijava/plugin/SortablePlugin.java index e3ab8e244..84da9b16c 100644 --- a/src/main/java/org/scijava/plugin/SortablePlugin.java +++ b/src/main/java/org/scijava/plugin/SortablePlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/TypedPlugin.java b/src/main/java/org/scijava/plugin/TypedPlugin.java index 26ae5468e..1e583d42a 100644 --- a/src/main/java/org/scijava/plugin/TypedPlugin.java +++ b/src/main/java/org/scijava/plugin/TypedPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/TypedService.java b/src/main/java/org/scijava/plugin/TypedService.java index 26f1c60bf..9629620e6 100644 --- a/src/main/java/org/scijava/plugin/TypedService.java +++ b/src/main/java/org/scijava/plugin/TypedService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/WrapperPlugin.java b/src/main/java/org/scijava/plugin/WrapperPlugin.java index d867aeef8..bfb036898 100644 --- a/src/main/java/org/scijava/plugin/WrapperPlugin.java +++ b/src/main/java/org/scijava/plugin/WrapperPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/WrapperService.java b/src/main/java/org/scijava/plugin/WrapperService.java index 2377a9fef..c42d27caf 100644 --- a/src/main/java/org/scijava/plugin/WrapperService.java +++ b/src/main/java/org/scijava/plugin/WrapperService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java b/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java index cae5e3792..ed682367c 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsListEvent.java b/src/main/java/org/scijava/plugin/event/PluginsListEvent.java index 927d76bee..af1505342 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsListEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java b/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java index f46d54bf9..a302db020 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/AbstractPrefService.java b/src/main/java/org/scijava/prefs/AbstractPrefService.java index 8fc849c20..084df69de 100644 --- a/src/main/java/org/scijava/prefs/AbstractPrefService.java +++ b/src/main/java/org/scijava/prefs/AbstractPrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/DefaultPrefService.java b/src/main/java/org/scijava/prefs/DefaultPrefService.java index 76a688924..dfc9b9fa8 100644 --- a/src/main/java/org/scijava/prefs/DefaultPrefService.java +++ b/src/main/java/org/scijava/prefs/DefaultPrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/PrefService.java b/src/main/java/org/scijava/prefs/PrefService.java index 9e787f436..c5761b178 100644 --- a/src/main/java/org/scijava/prefs/PrefService.java +++ b/src/main/java/org/scijava/prefs/PrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/AbstractCodeRunner.java b/src/main/java/org/scijava/run/AbstractCodeRunner.java index 37ebab4cb..4d7eb067a 100644 --- a/src/main/java/org/scijava/run/AbstractCodeRunner.java +++ b/src/main/java/org/scijava/run/AbstractCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/CodeRunner.java b/src/main/java/org/scijava/run/CodeRunner.java index 13062df91..06b626881 100644 --- a/src/main/java/org/scijava/run/CodeRunner.java +++ b/src/main/java/org/scijava/run/CodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/DefaultRunService.java b/src/main/java/org/scijava/run/DefaultRunService.java index cb9a7249e..eab573481 100644 --- a/src/main/java/org/scijava/run/DefaultRunService.java +++ b/src/main/java/org/scijava/run/DefaultRunService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/RunService.java b/src/main/java/org/scijava/run/RunService.java index e0f8de3bb..4d815098d 100644 --- a/src/main/java/org/scijava/run/RunService.java +++ b/src/main/java/org/scijava/run/RunService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/console/RunArgument.java b/src/main/java/org/scijava/run/console/RunArgument.java index ba056a6e8..80b9cd073 100644 --- a/src/main/java/org/scijava/run/console/RunArgument.java +++ b/src/main/java/org/scijava/run/console/RunArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractAutoCompleter.java b/src/main/java/org/scijava/script/AbstractAutoCompleter.java index b8368dbff..fe843eff8 100644 --- a/src/main/java/org/scijava/script/AbstractAutoCompleter.java +++ b/src/main/java/org/scijava/script/AbstractAutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptContext.java b/src/main/java/org/scijava/script/AbstractScriptContext.java index abd258195..67c0d3fee 100644 --- a/src/main/java/org/scijava/script/AbstractScriptContext.java +++ b/src/main/java/org/scijava/script/AbstractScriptContext.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptEngine.java b/src/main/java/org/scijava/script/AbstractScriptEngine.java index f306ee488..5826abf07 100644 --- a/src/main/java/org/scijava/script/AbstractScriptEngine.java +++ b/src/main/java/org/scijava/script/AbstractScriptEngine.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptHeader.java b/src/main/java/org/scijava/script/AbstractScriptHeader.java index 41b3185bc..8779ac1dc 100644 --- a/src/main/java/org/scijava/script/AbstractScriptHeader.java +++ b/src/main/java/org/scijava/script/AbstractScriptHeader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptLanguage.java b/src/main/java/org/scijava/script/AbstractScriptLanguage.java index 0f65a99c2..3ead99983 100644 --- a/src/main/java/org/scijava/script/AbstractScriptLanguage.java +++ b/src/main/java/org/scijava/script/AbstractScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AdaptedScriptEngine.java b/src/main/java/org/scijava/script/AdaptedScriptEngine.java index 39c8012a3..e08f84ff7 100644 --- a/src/main/java/org/scijava/script/AdaptedScriptEngine.java +++ b/src/main/java/org/scijava/script/AdaptedScriptEngine.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java index ad952d54d..b29910428 100644 --- a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java +++ b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AutoCompleter.java b/src/main/java/org/scijava/script/AutoCompleter.java index f56ec50fb..18783f1e3 100644 --- a/src/main/java/org/scijava/script/AutoCompleter.java +++ b/src/main/java/org/scijava/script/AutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AutoCompletionResult.java b/src/main/java/org/scijava/script/AutoCompletionResult.java index 89ae99097..7a495fe7c 100644 --- a/src/main/java/org/scijava/script/AutoCompletionResult.java +++ b/src/main/java/org/scijava/script/AutoCompletionResult.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/CodeGenerator.java b/src/main/java/org/scijava/script/CodeGenerator.java index 7e95f1e78..16ee156d4 100644 --- a/src/main/java/org/scijava/script/CodeGenerator.java +++ b/src/main/java/org/scijava/script/CodeGenerator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/CodeGeneratorJava.java b/src/main/java/org/scijava/script/CodeGeneratorJava.java index 7f75c39fd..7f022c097 100644 --- a/src/main/java/org/scijava/script/CodeGeneratorJava.java +++ b/src/main/java/org/scijava/script/CodeGeneratorJava.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultAutoCompleter.java b/src/main/java/org/scijava/script/DefaultAutoCompleter.java index 95bcc94c0..f4fcf2f75 100644 --- a/src/main/java/org/scijava/script/DefaultAutoCompleter.java +++ b/src/main/java/org/scijava/script/DefaultAutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptHeaderService.java b/src/main/java/org/scijava/script/DefaultScriptHeaderService.java index 39941978e..f81c1cdaa 100644 --- a/src/main/java/org/scijava/script/DefaultScriptHeaderService.java +++ b/src/main/java/org/scijava/script/DefaultScriptHeaderService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java index 2e51a6322..c365ae33f 100644 --- a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java +++ b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptService.java b/src/main/java/org/scijava/script/DefaultScriptService.java index 188123998..e7fcc6e73 100644 --- a/src/main/java/org/scijava/script/DefaultScriptService.java +++ b/src/main/java/org/scijava/script/DefaultScriptService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/InvocationObject.java b/src/main/java/org/scijava/script/InvocationObject.java index a7f373a7c..e4de7ae54 100644 --- a/src/main/java/org/scijava/script/InvocationObject.java +++ b/src/main/java/org/scijava/script/InvocationObject.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ParameterObject.java b/src/main/java/org/scijava/script/ParameterObject.java index 184fb8209..6b883fe95 100644 --- a/src/main/java/org/scijava/script/ParameterObject.java +++ b/src/main/java/org/scijava/script/ParameterObject.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptFinder.java b/src/main/java/org/scijava/script/ScriptFinder.java index 13f3fb37a..ea438791e 100644 --- a/src/main/java/org/scijava/script/ScriptFinder.java +++ b/src/main/java/org/scijava/script/ScriptFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptHeader.java b/src/main/java/org/scijava/script/ScriptHeader.java index 57ca01749..3fef71dbf 100644 --- a/src/main/java/org/scijava/script/ScriptHeader.java +++ b/src/main/java/org/scijava/script/ScriptHeader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptHeaderService.java b/src/main/java/org/scijava/script/ScriptHeaderService.java index 692869a8f..20ea362fa 100644 --- a/src/main/java/org/scijava/script/ScriptHeaderService.java +++ b/src/main/java/org/scijava/script/ScriptHeaderService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptInfo.java b/src/main/java/org/scijava/script/ScriptInfo.java index 02b6c46cf..cd664397d 100644 --- a/src/main/java/org/scijava/script/ScriptInfo.java +++ b/src/main/java/org/scijava/script/ScriptInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptInterpreter.java b/src/main/java/org/scijava/script/ScriptInterpreter.java index df59b6a36..098ca57c8 100644 --- a/src/main/java/org/scijava/script/ScriptInterpreter.java +++ b/src/main/java/org/scijava/script/ScriptInterpreter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptLanguage.java b/src/main/java/org/scijava/script/ScriptLanguage.java index e8c1be0cc..5c532bd38 100644 --- a/src/main/java/org/scijava/script/ScriptLanguage.java +++ b/src/main/java/org/scijava/script/ScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptLanguageIndex.java b/src/main/java/org/scijava/script/ScriptLanguageIndex.java index 728c20831..05bdddadd 100644 --- a/src/main/java/org/scijava/script/ScriptLanguageIndex.java +++ b/src/main/java/org/scijava/script/ScriptLanguageIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptModule.java b/src/main/java/org/scijava/script/ScriptModule.java index f05cbc7ed..da4b10d9c 100644 --- a/src/main/java/org/scijava/script/ScriptModule.java +++ b/src/main/java/org/scijava/script/ScriptModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptREPL.java b/src/main/java/org/scijava/script/ScriptREPL.java index 9c5be1528..8c4944766 100644 --- a/src/main/java/org/scijava/script/ScriptREPL.java +++ b/src/main/java/org/scijava/script/ScriptREPL.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptService.java b/src/main/java/org/scijava/script/ScriptService.java index 602883be0..f8764d7da 100644 --- a/src/main/java/org/scijava/script/ScriptService.java +++ b/src/main/java/org/scijava/script/ScriptService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/console/RunScriptArgument.java b/src/main/java/org/scijava/script/console/RunScriptArgument.java index 8389d55f6..145ea53ea 100644 --- a/src/main/java/org/scijava/script/console/RunScriptArgument.java +++ b/src/main/java/org/scijava/script/console/RunScriptArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/io/ScriptIOPlugin.java b/src/main/java/org/scijava/script/io/ScriptIOPlugin.java index da60b2357..208ac521d 100644 --- a/src/main/java/org/scijava/script/io/ScriptIOPlugin.java +++ b/src/main/java/org/scijava/script/io/ScriptIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java b/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java index 3ad01f908..ebdf8483b 100644 --- a/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java +++ b/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java b/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java index 231ef68c7..dfc68ca99 100644 --- a/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java b/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java index 70e696f16..446f633a2 100644 --- a/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptCallback.java b/src/main/java/org/scijava/script/process/ScriptCallback.java index 32ad3cebf..b458da421 100644 --- a/src/main/java/org/scijava/script/process/ScriptCallback.java +++ b/src/main/java/org/scijava/script/process/ScriptCallback.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java b/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java index cdf39b128..dc6ae85c1 100644 --- a/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptProcessor.java b/src/main/java/org/scijava/script/process/ScriptProcessor.java index e4d86a36e..36d053963 100644 --- a/src/main/java/org/scijava/script/process/ScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptProcessorService.java b/src/main/java/org/scijava/script/process/ScriptProcessorService.java index 458613b45..1ce80c5af 100644 --- a/src/main/java/org/scijava/script/process/ScriptProcessorService.java +++ b/src/main/java/org/scijava/script/process/ScriptProcessorService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java b/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java index 5951b6dbb..db05e71b9 100644 --- a/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/run/ScriptCodeRunner.java b/src/main/java/org/scijava/script/run/ScriptCodeRunner.java index ac6535c89..5c8e47659 100644 --- a/src/main/java/org/scijava/script/run/ScriptCodeRunner.java +++ b/src/main/java/org/scijava/script/run/ScriptCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/AbstractService.java b/src/main/java/org/scijava/service/AbstractService.java index 39062d6a8..bf20248a4 100644 --- a/src/main/java/org/scijava/service/AbstractService.java +++ b/src/main/java/org/scijava/service/AbstractService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/SciJavaService.java b/src/main/java/org/scijava/service/SciJavaService.java index afcad184a..fc0e005b0 100644 --- a/src/main/java/org/scijava/service/SciJavaService.java +++ b/src/main/java/org/scijava/service/SciJavaService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/Service.java b/src/main/java/org/scijava/service/Service.java index c11d3c2a8..f078de931 100644 --- a/src/main/java/org/scijava/service/Service.java +++ b/src/main/java/org/scijava/service/Service.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/ServiceHelper.java b/src/main/java/org/scijava/service/ServiceHelper.java index 0e8db19d6..4f1031efa 100644 --- a/src/main/java/org/scijava/service/ServiceHelper.java +++ b/src/main/java/org/scijava/service/ServiceHelper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/ServiceIndex.java b/src/main/java/org/scijava/service/ServiceIndex.java index 9632da00d..24d693aa9 100644 --- a/src/main/java/org/scijava/service/ServiceIndex.java +++ b/src/main/java/org/scijava/service/ServiceIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java b/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java index 0a9e58c27..bb5fd2258 100644 --- a/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java +++ b/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/startup/DefaultStartupService.java b/src/main/java/org/scijava/startup/DefaultStartupService.java index 4104c3d19..197cf4774 100644 --- a/src/main/java/org/scijava/startup/DefaultStartupService.java +++ b/src/main/java/org/scijava/startup/DefaultStartupService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/startup/StartupService.java b/src/main/java/org/scijava/startup/StartupService.java index 1dc08a2ee..0f100ff8a 100644 --- a/src/main/java/org/scijava/startup/StartupService.java +++ b/src/main/java/org/scijava/startup/StartupService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/DefaultTask.java b/src/main/java/org/scijava/task/DefaultTask.java index 44f1c3b30..94d817c53 100644 --- a/src/main/java/org/scijava/task/DefaultTask.java +++ b/src/main/java/org/scijava/task/DefaultTask.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/DefaultTaskService.java b/src/main/java/org/scijava/task/DefaultTaskService.java index 09375262a..f550585c9 100644 --- a/src/main/java/org/scijava/task/DefaultTaskService.java +++ b/src/main/java/org/scijava/task/DefaultTaskService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/Task.java b/src/main/java/org/scijava/task/Task.java index 7e6b66062..be1197d77 100644 --- a/src/main/java/org/scijava/task/Task.java +++ b/src/main/java/org/scijava/task/Task.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/TaskService.java b/src/main/java/org/scijava/task/TaskService.java index 887acf804..3cacfac9b 100644 --- a/src/main/java/org/scijava/task/TaskService.java +++ b/src/main/java/org/scijava/task/TaskService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/event/TaskEvent.java b/src/main/java/org/scijava/task/event/TaskEvent.java index 79d55f7d2..097c9346c 100644 --- a/src/main/java/org/scijava/task/event/TaskEvent.java +++ b/src/main/java/org/scijava/task/event/TaskEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/test/TestUtils.java b/src/main/java/org/scijava/test/TestUtils.java index 7f9c63075..54c3061e7 100644 --- a/src/main/java/org/scijava/test/TestUtils.java +++ b/src/main/java/org/scijava/test/TestUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/AbstractTextFormat.java b/src/main/java/org/scijava/text/AbstractTextFormat.java index 72654f649..55ab02b6b 100644 --- a/src/main/java/org/scijava/text/AbstractTextFormat.java +++ b/src/main/java/org/scijava/text/AbstractTextFormat.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/DefaultTextService.java b/src/main/java/org/scijava/text/DefaultTextService.java index 63c56cb9d..5836c4e19 100644 --- a/src/main/java/org/scijava/text/DefaultTextService.java +++ b/src/main/java/org/scijava/text/DefaultTextService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/TextFormat.java b/src/main/java/org/scijava/text/TextFormat.java index 01002be53..076039e9a 100644 --- a/src/main/java/org/scijava/text/TextFormat.java +++ b/src/main/java/org/scijava/text/TextFormat.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/TextService.java b/src/main/java/org/scijava/text/TextService.java index 8f640ba5f..c8c2219a0 100644 --- a/src/main/java/org/scijava/text/TextService.java +++ b/src/main/java/org/scijava/text/TextService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/DefaultTextIOService.java b/src/main/java/org/scijava/text/io/DefaultTextIOService.java index b1c9ad530..cba64c9bf 100644 --- a/src/main/java/org/scijava/text/io/DefaultTextIOService.java +++ b/src/main/java/org/scijava/text/io/DefaultTextIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/TextIOPlugin.java b/src/main/java/org/scijava/text/io/TextIOPlugin.java index 04018a44f..d5ce2850a 100644 --- a/src/main/java/org/scijava/text/io/TextIOPlugin.java +++ b/src/main/java/org/scijava/text/io/TextIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/TextIOService.java b/src/main/java/org/scijava/text/io/TextIOService.java index 42e36e64a..12f629b91 100644 --- a/src/main/java/org/scijava/text/io/TextIOService.java +++ b/src/main/java/org/scijava/text/io/TextIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/thread/DefaultThreadService.java b/src/main/java/org/scijava/thread/DefaultThreadService.java index 3262ee21d..f46952d98 100644 --- a/src/main/java/org/scijava/thread/DefaultThreadService.java +++ b/src/main/java/org/scijava/thread/DefaultThreadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/thread/ThreadService.java b/src/main/java/org/scijava/thread/ThreadService.java index afddb6f8f..0d272b87d 100644 --- a/src/main/java/org/scijava/thread/ThreadService.java +++ b/src/main/java/org/scijava/thread/ThreadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/AbstractTool.java b/src/main/java/org/scijava/tool/AbstractTool.java index 054fd1a8b..95f89ccc4 100644 --- a/src/main/java/org/scijava/tool/AbstractTool.java +++ b/src/main/java/org/scijava/tool/AbstractTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/CustomDrawnTool.java b/src/main/java/org/scijava/tool/CustomDrawnTool.java index 3a3905780..1ec0e78ff 100644 --- a/src/main/java/org/scijava/tool/CustomDrawnTool.java +++ b/src/main/java/org/scijava/tool/CustomDrawnTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/DefaultToolService.java b/src/main/java/org/scijava/tool/DefaultToolService.java index d78e1a53a..4f2e8d168 100644 --- a/src/main/java/org/scijava/tool/DefaultToolService.java +++ b/src/main/java/org/scijava/tool/DefaultToolService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/DummyTool.java b/src/main/java/org/scijava/tool/DummyTool.java index baef6dfe3..d155ef30a 100644 --- a/src/main/java/org/scijava/tool/DummyTool.java +++ b/src/main/java/org/scijava/tool/DummyTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/IconDrawer.java b/src/main/java/org/scijava/tool/IconDrawer.java index 0d1b45824..e3f108a4d 100644 --- a/src/main/java/org/scijava/tool/IconDrawer.java +++ b/src/main/java/org/scijava/tool/IconDrawer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/IconService.java b/src/main/java/org/scijava/tool/IconService.java index 43ac9f66f..67ddf9033 100644 --- a/src/main/java/org/scijava/tool/IconService.java +++ b/src/main/java/org/scijava/tool/IconService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/Tool.java b/src/main/java/org/scijava/tool/Tool.java index cadfcf115..e345c253f 100644 --- a/src/main/java/org/scijava/tool/Tool.java +++ b/src/main/java/org/scijava/tool/Tool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/ToolService.java b/src/main/java/org/scijava/tool/ToolService.java index a254a91e3..0a84ae96b 100644 --- a/src/main/java/org/scijava/tool/ToolService.java +++ b/src/main/java/org/scijava/tool/ToolService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java b/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java index 5142bbe18..9bdb75a60 100644 --- a/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java b/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java index 7503eed17..a197eca41 100644 --- a/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolEvent.java b/src/main/java/org/scijava/tool/event/ToolEvent.java index 6c6f1f185..c4c058393 100644 --- a/src/main/java/org/scijava/tool/event/ToolEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ARGBPlane.java b/src/main/java/org/scijava/ui/ARGBPlane.java index 5d7678f61..4c9b60709 100644 --- a/src/main/java/org/scijava/ui/ARGBPlane.java +++ b/src/main/java/org/scijava/ui/ARGBPlane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java b/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java index 9d12ab82f..f3db6253a 100644 --- a/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java +++ b/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractUIInputWidget.java b/src/main/java/org/scijava/ui/AbstractUIInputWidget.java index 394ec8829..a5e1ec829 100644 --- a/src/main/java/org/scijava/ui/AbstractUIInputWidget.java +++ b/src/main/java/org/scijava/ui/AbstractUIInputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractUserInterface.java b/src/main/java/org/scijava/ui/AbstractUserInterface.java index 0c3e22da5..decf671af 100644 --- a/src/main/java/org/scijava/ui/AbstractUserInterface.java +++ b/src/main/java/org/scijava/ui/AbstractUserInterface.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ApplicationFrame.java b/src/main/java/org/scijava/ui/ApplicationFrame.java index dbda0cc80..f4ecf39ea 100644 --- a/src/main/java/org/scijava/ui/ApplicationFrame.java +++ b/src/main/java/org/scijava/ui/ApplicationFrame.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/Arrangeable.java b/src/main/java/org/scijava/ui/Arrangeable.java index fb5a06dff..ad95bb784 100644 --- a/src/main/java/org/scijava/ui/Arrangeable.java +++ b/src/main/java/org/scijava/ui/Arrangeable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/CloseConfirmable.java b/src/main/java/org/scijava/ui/CloseConfirmable.java index 56450088f..c92b2a9f3 100644 --- a/src/main/java/org/scijava/ui/CloseConfirmable.java +++ b/src/main/java/org/scijava/ui/CloseConfirmable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/DefaultUIService.java b/src/main/java/org/scijava/ui/DefaultUIService.java index d26cbd5d7..7fdb36a70 100644 --- a/src/main/java/org/scijava/ui/DefaultUIService.java +++ b/src/main/java/org/scijava/ui/DefaultUIService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/Desktop.java b/src/main/java/org/scijava/ui/Desktop.java index bfca746d9..114b512cc 100644 --- a/src/main/java/org/scijava/ui/Desktop.java +++ b/src/main/java/org/scijava/ui/Desktop.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/DialogPrompt.java b/src/main/java/org/scijava/ui/DialogPrompt.java index 26c0ede95..f21ab726e 100644 --- a/src/main/java/org/scijava/ui/DialogPrompt.java +++ b/src/main/java/org/scijava/ui/DialogPrompt.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/FileListPreprocessor.java b/src/main/java/org/scijava/ui/FileListPreprocessor.java index 13d8feb68..a8feefe5d 100644 --- a/src/main/java/org/scijava/ui/FileListPreprocessor.java +++ b/src/main/java/org/scijava/ui/FileListPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/FilePreprocessor.java b/src/main/java/org/scijava/ui/FilePreprocessor.java index d03e43bc4..44eff1194 100644 --- a/src/main/java/org/scijava/ui/FilePreprocessor.java +++ b/src/main/java/org/scijava/ui/FilePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/StatusBar.java b/src/main/java/org/scijava/ui/StatusBar.java index 9b6b71377..cfef18eff 100644 --- a/src/main/java/org/scijava/ui/StatusBar.java +++ b/src/main/java/org/scijava/ui/StatusBar.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/SystemClipboard.java b/src/main/java/org/scijava/ui/SystemClipboard.java index 8eb4e8bf6..421aa24c6 100644 --- a/src/main/java/org/scijava/ui/SystemClipboard.java +++ b/src/main/java/org/scijava/ui/SystemClipboard.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ToolBar.java b/src/main/java/org/scijava/ui/ToolBar.java index 95a137aa5..c294cdb23 100644 --- a/src/main/java/org/scijava/ui/ToolBar.java +++ b/src/main/java/org/scijava/ui/ToolBar.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UIPreprocessor.java b/src/main/java/org/scijava/ui/UIPreprocessor.java index 87a755a14..b22a20a6f 100644 --- a/src/main/java/org/scijava/ui/UIPreprocessor.java +++ b/src/main/java/org/scijava/ui/UIPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UIService.java b/src/main/java/org/scijava/ui/UIService.java index d3111bb3e..20a9d8bfe 100644 --- a/src/main/java/org/scijava/ui/UIService.java +++ b/src/main/java/org/scijava/ui/UIService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UserInterface.java b/src/main/java/org/scijava/ui/UserInterface.java index 162532dac..a0588256c 100644 --- a/src/main/java/org/scijava/ui/UserInterface.java +++ b/src/main/java/org/scijava/ui/UserInterface.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/AbstractConsolePane.java b/src/main/java/org/scijava/ui/console/AbstractConsolePane.java index db4817ceb..0512d725d 100644 --- a/src/main/java/org/scijava/ui/console/AbstractConsolePane.java +++ b/src/main/java/org/scijava/ui/console/AbstractConsolePane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/ConsolePane.java b/src/main/java/org/scijava/ui/console/ConsolePane.java index 7145ed54a..02e2b5b24 100644 --- a/src/main/java/org/scijava/ui/console/ConsolePane.java +++ b/src/main/java/org/scijava/ui/console/ConsolePane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/HeadlessArgument.java b/src/main/java/org/scijava/ui/console/HeadlessArgument.java index 3a10f459d..dca137c3b 100644 --- a/src/main/java/org/scijava/ui/console/HeadlessArgument.java +++ b/src/main/java/org/scijava/ui/console/HeadlessArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/ShowUIArgument.java b/src/main/java/org/scijava/ui/console/ShowUIArgument.java index 9d0c1161b..10fd2e6b7 100644 --- a/src/main/java/org/scijava/ui/console/ShowUIArgument.java +++ b/src/main/java/org/scijava/ui/console/ShowUIArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/UIArgument.java b/src/main/java/org/scijava/ui/console/UIArgument.java index 0deeba42b..05bee6855 100644 --- a/src/main/java/org/scijava/ui/console/UIArgument.java +++ b/src/main/java/org/scijava/ui/console/UIArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java index 09e3efb79..e098a2367 100644 --- a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java index 05d350bd7..d578688ad 100644 --- a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java index 0529ea7c5..9634c477a 100644 --- a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java index 524f5a887..3bc3de22e 100644 --- a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java +++ b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropData.java b/src/main/java/org/scijava/ui/dnd/DragAndDropData.java index d5924bbbc..a4cd7a258 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java index 4f7d47043..a81e25f6c 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropService.java b/src/main/java/org/scijava/ui/dnd/DragAndDropService.java index a7b394407..0d2b3ae38 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropService.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java index 11aa98108..e8f6090c2 100644 --- a/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java index 9ca0833ca..d36a10797 100644 --- a/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/MIMEType.java b/src/main/java/org/scijava/ui/dnd/MIMEType.java index c5fd7ec61..037e3916a 100644 --- a/src/main/java/org/scijava/ui/dnd/MIMEType.java +++ b/src/main/java/org/scijava/ui/dnd/MIMEType.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java index a798ff7ec..af9f53015 100644 --- a/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java index 20c240ead..e460f58b7 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java index f219555ab..3b85bb254 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java index fbe9b6ce1..c51a4b3c4 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java index f0376b017..4545f24e2 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DropEvent.java b/src/main/java/org/scijava/ui/dnd/event/DropEvent.java index 0fd7677e6..49331480c 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DropEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DropEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/event/UIEvent.java b/src/main/java/org/scijava/ui/event/UIEvent.java index 0f4e3a9b0..d2b7fd7b8 100644 --- a/src/main/java/org/scijava/ui/event/UIEvent.java +++ b/src/main/java/org/scijava/ui/event/UIEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/event/UIShownEvent.java b/src/main/java/org/scijava/ui/event/UIShownEvent.java index d7b893f3c..23f55be2d 100644 --- a/src/main/java/org/scijava/ui/event/UIShownEvent.java +++ b/src/main/java/org/scijava/ui/event/UIShownEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java b/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java index 3352913e3..df5e0cc93 100644 --- a/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java +++ b/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headless/HeadlessUI.java b/src/main/java/org/scijava/ui/headless/HeadlessUI.java index c8aceb5ae..3f658df97 100644 --- a/src/main/java/org/scijava/ui/headless/HeadlessUI.java +++ b/src/main/java/org/scijava/ui/headless/HeadlessUI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java b/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java index 96f51ff72..257753e9d 100644 --- a/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java +++ b/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java index 35cefdadc..ab552f6d0 100644 --- a/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayPanel.java b/src/main/java/org/scijava/ui/viewer/DisplayPanel.java index f438822c0..0ab9b1df1 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayPanel.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayViewer.java b/src/main/java/org/scijava/ui/viewer/DisplayViewer.java index 657e860b5..d8ea0193a 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayWindow.java b/src/main/java/org/scijava/ui/viewer/DisplayWindow.java index d9d4945c4..55b3b842c 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayWindow.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayWindow.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java index 2b6e93004..ac0c67d16 100644 --- a/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java b/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java index 3f0ba3fec..683fdbd26 100644 --- a/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java +++ b/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java index 302a6f41a..517bdb9cf 100644 --- a/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/AbstractPrimitiveArray.java b/src/main/java/org/scijava/util/AbstractPrimitiveArray.java index 735f286b0..28bfefc67 100644 --- a/src/main/java/org/scijava/util/AbstractPrimitiveArray.java +++ b/src/main/java/org/scijava/util/AbstractPrimitiveArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/AppUtils.java b/src/main/java/org/scijava/util/AppUtils.java index 31456cb10..48519a328 100644 --- a/src/main/java/org/scijava/util/AppUtils.java +++ b/src/main/java/org/scijava/util/AppUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ArrayUtils.java b/src/main/java/org/scijava/util/ArrayUtils.java index c6487c5cf..d25c2ffa0 100644 --- a/src/main/java/org/scijava/util/ArrayUtils.java +++ b/src/main/java/org/scijava/util/ArrayUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/BoolArray.java b/src/main/java/org/scijava/util/BoolArray.java index 72e192bbe..3edf088a8 100644 --- a/src/main/java/org/scijava/util/BoolArray.java +++ b/src/main/java/org/scijava/util/BoolArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ByteArray.java b/src/main/java/org/scijava/util/ByteArray.java index f1e831c0e..07e724fb1 100644 --- a/src/main/java/org/scijava/util/ByteArray.java +++ b/src/main/java/org/scijava/util/ByteArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Bytes.java b/src/main/java/org/scijava/util/Bytes.java index fbce5e167..ac6637797 100644 --- a/src/main/java/org/scijava/util/Bytes.java +++ b/src/main/java/org/scijava/util/Bytes.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CharArray.java b/src/main/java/org/scijava/util/CharArray.java index bfe0ae73e..1550ec875 100644 --- a/src/main/java/org/scijava/util/CharArray.java +++ b/src/main/java/org/scijava/util/CharArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CheckSezpoz.java b/src/main/java/org/scijava/util/CheckSezpoz.java index 459260f05..7f5643b76 100644 --- a/src/main/java/org/scijava/util/CheckSezpoz.java +++ b/src/main/java/org/scijava/util/CheckSezpoz.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ClassUtils.java b/src/main/java/org/scijava/util/ClassUtils.java index d9d3b2f67..5543ce7bb 100644 --- a/src/main/java/org/scijava/util/ClassUtils.java +++ b/src/main/java/org/scijava/util/ClassUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ColorRGB.java b/src/main/java/org/scijava/util/ColorRGB.java index 129eaf5f4..4e10cd8c4 100644 --- a/src/main/java/org/scijava/util/ColorRGB.java +++ b/src/main/java/org/scijava/util/ColorRGB.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ColorRGBA.java b/src/main/java/org/scijava/util/ColorRGBA.java index b7c55622b..fb89ccb72 100644 --- a/src/main/java/org/scijava/util/ColorRGBA.java +++ b/src/main/java/org/scijava/util/ColorRGBA.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Colors.java b/src/main/java/org/scijava/util/Colors.java index f32b4fad9..cc115dc75 100644 --- a/src/main/java/org/scijava/util/Colors.java +++ b/src/main/java/org/scijava/util/Colors.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CombineAnnotations.java b/src/main/java/org/scijava/util/CombineAnnotations.java index 002659f4a..993a03445 100644 --- a/src/main/java/org/scijava/util/CombineAnnotations.java +++ b/src/main/java/org/scijava/util/CombineAnnotations.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Combiner.java b/src/main/java/org/scijava/util/Combiner.java index e4babbe96..feb0b1774 100644 --- a/src/main/java/org/scijava/util/Combiner.java +++ b/src/main/java/org/scijava/util/Combiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ConversionUtils.java b/src/main/java/org/scijava/util/ConversionUtils.java index 99b30254c..8e762c083 100644 --- a/src/main/java/org/scijava/util/ConversionUtils.java +++ b/src/main/java/org/scijava/util/ConversionUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DebugUtils.java b/src/main/java/org/scijava/util/DebugUtils.java index 4e88f180b..06c26b168 100644 --- a/src/main/java/org/scijava/util/DebugUtils.java +++ b/src/main/java/org/scijava/util/DebugUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DefaultTreeNode.java b/src/main/java/org/scijava/util/DefaultTreeNode.java index db60c7673..1d1231702 100644 --- a/src/main/java/org/scijava/util/DefaultTreeNode.java +++ b/src/main/java/org/scijava/util/DefaultTreeNode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DigestUtils.java b/src/main/java/org/scijava/util/DigestUtils.java index b78af02ae..92472445f 100644 --- a/src/main/java/org/scijava/util/DigestUtils.java +++ b/src/main/java/org/scijava/util/DigestUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DoubleArray.java b/src/main/java/org/scijava/util/DoubleArray.java index 928d62af6..bf76fdb7b 100644 --- a/src/main/java/org/scijava/util/DoubleArray.java +++ b/src/main/java/org/scijava/util/DoubleArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/FileUtils.java b/src/main/java/org/scijava/util/FileUtils.java index 3a3efd896..e9424cef0 100644 --- a/src/main/java/org/scijava/util/FileUtils.java +++ b/src/main/java/org/scijava/util/FileUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/FloatArray.java b/src/main/java/org/scijava/util/FloatArray.java index f232814d6..593d22131 100644 --- a/src/main/java/org/scijava/util/FloatArray.java +++ b/src/main/java/org/scijava/util/FloatArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/GenericUtils.java b/src/main/java/org/scijava/util/GenericUtils.java index fd5d3e9a7..978af3f54 100644 --- a/src/main/java/org/scijava/util/GenericUtils.java +++ b/src/main/java/org/scijava/util/GenericUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntArray.java b/src/main/java/org/scijava/util/IntArray.java index 6d0086a17..66de4c87e 100644 --- a/src/main/java/org/scijava/util/IntArray.java +++ b/src/main/java/org/scijava/util/IntArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntCoords.java b/src/main/java/org/scijava/util/IntCoords.java index 80d18eafc..bc689e341 100644 --- a/src/main/java/org/scijava/util/IntCoords.java +++ b/src/main/java/org/scijava/util/IntCoords.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntRect.java b/src/main/java/org/scijava/util/IntRect.java index 508fc5eeb..9791697e3 100644 --- a/src/main/java/org/scijava/util/IntRect.java +++ b/src/main/java/org/scijava/util/IntRect.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IteratorPlus.java b/src/main/java/org/scijava/util/IteratorPlus.java index 990246fd9..da8bae3db 100644 --- a/src/main/java/org/scijava/util/IteratorPlus.java +++ b/src/main/java/org/scijava/util/IteratorPlus.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LastRecentlyUsed.java b/src/main/java/org/scijava/util/LastRecentlyUsed.java index 84ea1ecb8..5bbe3cacc 100644 --- a/src/main/java/org/scijava/util/LastRecentlyUsed.java +++ b/src/main/java/org/scijava/util/LastRecentlyUsed.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LineOutputStream.java b/src/main/java/org/scijava/util/LineOutputStream.java index 38b014a14..c37318242 100644 --- a/src/main/java/org/scijava/util/LineOutputStream.java +++ b/src/main/java/org/scijava/util/LineOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ListUtils.java b/src/main/java/org/scijava/util/ListUtils.java index 2d433e667..f868a9af2 100644 --- a/src/main/java/org/scijava/util/ListUtils.java +++ b/src/main/java/org/scijava/util/ListUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LongArray.java b/src/main/java/org/scijava/util/LongArray.java index 61ffed4a9..f190a2049 100644 --- a/src/main/java/org/scijava/util/LongArray.java +++ b/src/main/java/org/scijava/util/LongArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Manifest.java b/src/main/java/org/scijava/util/Manifest.java index 807eaa05f..f57983e31 100644 --- a/src/main/java/org/scijava/util/Manifest.java +++ b/src/main/java/org/scijava/util/Manifest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MersenneTwisterFast.java b/src/main/java/org/scijava/util/MersenneTwisterFast.java index 2abb4d206..bf176347b 100644 --- a/src/main/java/org/scijava/util/MersenneTwisterFast.java +++ b/src/main/java/org/scijava/util/MersenneTwisterFast.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MetaInfCombiner.java b/src/main/java/org/scijava/util/MetaInfCombiner.java index 745c39195..6380901ad 100644 --- a/src/main/java/org/scijava/util/MetaInfCombiner.java +++ b/src/main/java/org/scijava/util/MetaInfCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MirrorWebsite.java b/src/main/java/org/scijava/util/MirrorWebsite.java index 5df62bb10..fff9366d3 100644 --- a/src/main/java/org/scijava/util/MirrorWebsite.java +++ b/src/main/java/org/scijava/util/MirrorWebsite.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MiscUtils.java b/src/main/java/org/scijava/util/MiscUtils.java index 492e2150e..3c0f5b0be 100644 --- a/src/main/java/org/scijava/util/MiscUtils.java +++ b/src/main/java/org/scijava/util/MiscUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/NumberUtils.java b/src/main/java/org/scijava/util/NumberUtils.java index 9b3ad2488..704e0bc8c 100644 --- a/src/main/java/org/scijava/util/NumberUtils.java +++ b/src/main/java/org/scijava/util/NumberUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ObjectArray.java b/src/main/java/org/scijava/util/ObjectArray.java index 2564da853..bb238b288 100644 --- a/src/main/java/org/scijava/util/ObjectArray.java +++ b/src/main/java/org/scijava/util/ObjectArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/POM.java b/src/main/java/org/scijava/util/POM.java index 2a9c979b7..ea0feacbc 100644 --- a/src/main/java/org/scijava/util/POM.java +++ b/src/main/java/org/scijava/util/POM.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/PlatformUtils.java b/src/main/java/org/scijava/util/PlatformUtils.java index d1b82104d..21ffc6475 100644 --- a/src/main/java/org/scijava/util/PlatformUtils.java +++ b/src/main/java/org/scijava/util/PlatformUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Prefs.java b/src/main/java/org/scijava/util/Prefs.java index f946b587f..8519017c4 100644 --- a/src/main/java/org/scijava/util/Prefs.java +++ b/src/main/java/org/scijava/util/Prefs.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/PrimitiveArray.java b/src/main/java/org/scijava/util/PrimitiveArray.java index 8e72eb8ec..addc4d016 100644 --- a/src/main/java/org/scijava/util/PrimitiveArray.java +++ b/src/main/java/org/scijava/util/PrimitiveArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ProcessUtils.java b/src/main/java/org/scijava/util/ProcessUtils.java index 698b1ae78..cf8914033 100644 --- a/src/main/java/org/scijava/util/ProcessUtils.java +++ b/src/main/java/org/scijava/util/ProcessUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Query.java b/src/main/java/org/scijava/util/Query.java index 2973c004e..c8b6d525b 100644 --- a/src/main/java/org/scijava/util/Query.java +++ b/src/main/java/org/scijava/util/Query.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReadInto.java b/src/main/java/org/scijava/util/ReadInto.java index 5e822926b..37daf4857 100644 --- a/src/main/java/org/scijava/util/ReadInto.java +++ b/src/main/java/org/scijava/util/ReadInto.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/RealCoords.java b/src/main/java/org/scijava/util/RealCoords.java index d55f0cdfe..dbb39a44e 100644 --- a/src/main/java/org/scijava/util/RealCoords.java +++ b/src/main/java/org/scijava/util/RealCoords.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/RealRect.java b/src/main/java/org/scijava/util/RealRect.java index c58fbb7a8..7f6867df6 100644 --- a/src/main/java/org/scijava/util/RealRect.java +++ b/src/main/java/org/scijava/util/RealRect.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReflectException.java b/src/main/java/org/scijava/util/ReflectException.java index 2096b73cf..701e8362e 100644 --- a/src/main/java/org/scijava/util/ReflectException.java +++ b/src/main/java/org/scijava/util/ReflectException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReflectedUniverse.java b/src/main/java/org/scijava/util/ReflectedUniverse.java index 53c0e0ab7..4c9fd953f 100644 --- a/src/main/java/org/scijava/util/ReflectedUniverse.java +++ b/src/main/java/org/scijava/util/ReflectedUniverse.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ServiceCombiner.java b/src/main/java/org/scijava/util/ServiceCombiner.java index 65bf24190..e976f6846 100644 --- a/src/main/java/org/scijava/util/ServiceCombiner.java +++ b/src/main/java/org/scijava/util/ServiceCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ShortArray.java b/src/main/java/org/scijava/util/ShortArray.java index 50ca80a10..8a3985006 100644 --- a/src/main/java/org/scijava/util/ShortArray.java +++ b/src/main/java/org/scijava/util/ShortArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Sizable.java b/src/main/java/org/scijava/util/Sizable.java index b4939d7c8..c1172b1dc 100644 --- a/src/main/java/org/scijava/util/Sizable.java +++ b/src/main/java/org/scijava/util/Sizable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/SizableArrayList.java b/src/main/java/org/scijava/util/SizableArrayList.java index 163ae5939..b132a87f7 100644 --- a/src/main/java/org/scijava/util/SizableArrayList.java +++ b/src/main/java/org/scijava/util/SizableArrayList.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/StringMaker.java b/src/main/java/org/scijava/util/StringMaker.java index 97af599da..ac4db3873 100644 --- a/src/main/java/org/scijava/util/StringMaker.java +++ b/src/main/java/org/scijava/util/StringMaker.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/StringUtils.java b/src/main/java/org/scijava/util/StringUtils.java index 6516777b2..0fdba3900 100644 --- a/src/main/java/org/scijava/util/StringUtils.java +++ b/src/main/java/org/scijava/util/StringUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Timing.java b/src/main/java/org/scijava/util/Timing.java index d533840f6..1bf79ddd4 100644 --- a/src/main/java/org/scijava/util/Timing.java +++ b/src/main/java/org/scijava/util/Timing.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/TreeNode.java b/src/main/java/org/scijava/util/TreeNode.java index a0ed8a293..833832642 100644 --- a/src/main/java/org/scijava/util/TreeNode.java +++ b/src/main/java/org/scijava/util/TreeNode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/TunePlayer.java b/src/main/java/org/scijava/util/TunePlayer.java index a59e2019b..f12969725 100644 --- a/src/main/java/org/scijava/util/TunePlayer.java +++ b/src/main/java/org/scijava/util/TunePlayer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Types.java b/src/main/java/org/scijava/util/Types.java index 9ded87575..12f46115c 100644 --- a/src/main/java/org/scijava/util/Types.java +++ b/src/main/java/org/scijava/util/Types.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/UnitUtils.java b/src/main/java/org/scijava/util/UnitUtils.java index 1d45f7aac..6f1848da9 100644 --- a/src/main/java/org/scijava/util/UnitUtils.java +++ b/src/main/java/org/scijava/util/UnitUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/VersionUtils.java b/src/main/java/org/scijava/util/VersionUtils.java index 994a4aa71..2bbb2e25d 100644 --- a/src/main/java/org/scijava/util/VersionUtils.java +++ b/src/main/java/org/scijava/util/VersionUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/XML.java b/src/main/java/org/scijava/util/XML.java index e1b570d37..aac4a396b 100644 --- a/src/main/java/org/scijava/util/XML.java +++ b/src/main/java/org/scijava/util/XML.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/DefaultWelcomeService.java b/src/main/java/org/scijava/welcome/DefaultWelcomeService.java index 186b28260..bc7bdd726 100644 --- a/src/main/java/org/scijava/welcome/DefaultWelcomeService.java +++ b/src/main/java/org/scijava/welcome/DefaultWelcomeService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/WelcomeService.java b/src/main/java/org/scijava/welcome/WelcomeService.java index c7a1ec948..68da22375 100644 --- a/src/main/java/org/scijava/welcome/WelcomeService.java +++ b/src/main/java/org/scijava/welcome/WelcomeService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/event/WelcomeEvent.java b/src/main/java/org/scijava/welcome/event/WelcomeEvent.java index 8ea1f3424..90b70c8d6 100644 --- a/src/main/java/org/scijava/welcome/event/WelcomeEvent.java +++ b/src/main/java/org/scijava/welcome/event/WelcomeEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputHarvester.java b/src/main/java/org/scijava/widget/AbstractInputHarvester.java index 1f65ae1d5..9a82ea33f 100644 --- a/src/main/java/org/scijava/widget/AbstractInputHarvester.java +++ b/src/main/java/org/scijava/widget/AbstractInputHarvester.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputPanel.java b/src/main/java/org/scijava/widget/AbstractInputPanel.java index 2a8bb49a5..0efb95586 100644 --- a/src/main/java/org/scijava/widget/AbstractInputPanel.java +++ b/src/main/java/org/scijava/widget/AbstractInputPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputWidget.java b/src/main/java/org/scijava/widget/AbstractInputWidget.java index f527847b0..9c6aede1e 100644 --- a/src/main/java/org/scijava/widget/AbstractInputWidget.java +++ b/src/main/java/org/scijava/widget/AbstractInputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/Button.java b/src/main/java/org/scijava/widget/Button.java index 286cd1fb4..e9e73f59a 100644 --- a/src/main/java/org/scijava/widget/Button.java +++ b/src/main/java/org/scijava/widget/Button.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ButtonWidget.java b/src/main/java/org/scijava/widget/ButtonWidget.java index c869fc13e..9c278c243 100644 --- a/src/main/java/org/scijava/widget/ButtonWidget.java +++ b/src/main/java/org/scijava/widget/ButtonWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ChoiceWidget.java b/src/main/java/org/scijava/widget/ChoiceWidget.java index b900ac0ba..6ca640cb9 100644 --- a/src/main/java/org/scijava/widget/ChoiceWidget.java +++ b/src/main/java/org/scijava/widget/ChoiceWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ColorWidget.java b/src/main/java/org/scijava/widget/ColorWidget.java index 84284a9dd..17de750c9 100644 --- a/src/main/java/org/scijava/widget/ColorWidget.java +++ b/src/main/java/org/scijava/widget/ColorWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DateWidget.java b/src/main/java/org/scijava/widget/DateWidget.java index d05049bf7..8a7db46cf 100644 --- a/src/main/java/org/scijava/widget/DateWidget.java +++ b/src/main/java/org/scijava/widget/DateWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DefaultWidgetModel.java b/src/main/java/org/scijava/widget/DefaultWidgetModel.java index 229195289..ea878b162 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetModel.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetModel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DefaultWidgetService.java b/src/main/java/org/scijava/widget/DefaultWidgetService.java index 2606eed13..19111288c 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetService.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/FileListWidget.java b/src/main/java/org/scijava/widget/FileListWidget.java index d74ea12f5..f99c66ee2 100644 --- a/src/main/java/org/scijava/widget/FileListWidget.java +++ b/src/main/java/org/scijava/widget/FileListWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/FileWidget.java b/src/main/java/org/scijava/widget/FileWidget.java index dc70e0ce1..da4632c79 100644 --- a/src/main/java/org/scijava/widget/FileWidget.java +++ b/src/main/java/org/scijava/widget/FileWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputHarvester.java b/src/main/java/org/scijava/widget/InputHarvester.java index 08b1a9fe3..25ce4c5e8 100644 --- a/src/main/java/org/scijava/widget/InputHarvester.java +++ b/src/main/java/org/scijava/widget/InputHarvester.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputPanel.java b/src/main/java/org/scijava/widget/InputPanel.java index 0813ee375..664ade0ab 100644 --- a/src/main/java/org/scijava/widget/InputPanel.java +++ b/src/main/java/org/scijava/widget/InputPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputWidget.java b/src/main/java/org/scijava/widget/InputWidget.java index 43d931c01..bdcb27c2d 100644 --- a/src/main/java/org/scijava/widget/InputWidget.java +++ b/src/main/java/org/scijava/widget/InputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/MessageWidget.java b/src/main/java/org/scijava/widget/MessageWidget.java index 4092544eb..117b08aeb 100644 --- a/src/main/java/org/scijava/widget/MessageWidget.java +++ b/src/main/java/org/scijava/widget/MessageWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/NumberWidget.java b/src/main/java/org/scijava/widget/NumberWidget.java index 886d423ea..b6b81e6c9 100644 --- a/src/main/java/org/scijava/widget/NumberWidget.java +++ b/src/main/java/org/scijava/widget/NumberWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ObjectWidget.java b/src/main/java/org/scijava/widget/ObjectWidget.java index 2870ff270..839b5272b 100644 --- a/src/main/java/org/scijava/widget/ObjectWidget.java +++ b/src/main/java/org/scijava/widget/ObjectWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/TextWidget.java b/src/main/java/org/scijava/widget/TextWidget.java index 384523125..34dd871bf 100644 --- a/src/main/java/org/scijava/widget/TextWidget.java +++ b/src/main/java/org/scijava/widget/TextWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ToggleWidget.java b/src/main/java/org/scijava/widget/ToggleWidget.java index bdb87913a..829dd0c94 100644 --- a/src/main/java/org/scijava/widget/ToggleWidget.java +++ b/src/main/java/org/scijava/widget/ToggleWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/UIComponent.java b/src/main/java/org/scijava/widget/UIComponent.java index 54e38acb9..943daa7ee 100644 --- a/src/main/java/org/scijava/widget/UIComponent.java +++ b/src/main/java/org/scijava/widget/UIComponent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetModel.java b/src/main/java/org/scijava/widget/WidgetModel.java index 83e8a2f9f..97ccad278 100644 --- a/src/main/java/org/scijava/widget/WidgetModel.java +++ b/src/main/java/org/scijava/widget/WidgetModel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetService.java b/src/main/java/org/scijava/widget/WidgetService.java index ef74c794a..8f02d6603 100644 --- a/src/main/java/org/scijava/widget/WidgetService.java +++ b/src/main/java/org/scijava/widget/WidgetService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetStyle.java b/src/main/java/org/scijava/widget/WidgetStyle.java index ec5e1c466..9dedf5aaf 100644 --- a/src/main/java/org/scijava/widget/WidgetStyle.java +++ b/src/main/java/org/scijava/widget/WidgetStyle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextCreationTest.java b/src/test/java/org/scijava/ContextCreationTest.java index b00b19dfb..b177a75c7 100644 --- a/src/test/java/org/scijava/ContextCreationTest.java +++ b/src/test/java/org/scijava/ContextCreationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextInjectionTest.java b/src/test/java/org/scijava/ContextInjectionTest.java index b5b958a4e..bff5bf657 100644 --- a/src/test/java/org/scijava/ContextInjectionTest.java +++ b/src/test/java/org/scijava/ContextInjectionTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/SciJavaTest.java b/src/test/java/org/scijava/SciJavaTest.java index 7e1f2866a..c8a0fd499 100644 --- a/src/test/java/org/scijava/SciJavaTest.java +++ b/src/test/java/org/scijava/SciJavaTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedA.java b/src/test/java/org/scijava/annotations/AnnotatedA.java index 1226a7e2b..9e1ca7982 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedA.java +++ b/src/test/java/org/scijava/annotations/AnnotatedA.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedB.java b/src/test/java/org/scijava/annotations/AnnotatedB.java index 7993d867a..41047039a 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedB.java +++ b/src/test/java/org/scijava/annotations/AnnotatedB.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedC.java b/src/test/java/org/scijava/annotations/AnnotatedC.java index 5e50040a2..b2221e5bd 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedC.java +++ b/src/test/java/org/scijava/annotations/AnnotatedC.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedD.java b/src/test/java/org/scijava/annotations/AnnotatedD.java index 7049ea841..4c534202a 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedD.java +++ b/src/test/java/org/scijava/annotations/AnnotatedD.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java b/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java index 41e9a3849..c431acec2 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java +++ b/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Complex.java b/src/test/java/org/scijava/annotations/Complex.java index 4d3b2ae4a..c5f1b24bb 100644 --- a/src/test/java/org/scijava/annotations/Complex.java +++ b/src/test/java/org/scijava/annotations/Complex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java b/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java index 894dc5aa7..6ba1f5cde 100644 --- a/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java +++ b/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/EclipseHelperTest.java b/src/test/java/org/scijava/annotations/EclipseHelperTest.java index cffbc9228..9a809785b 100644 --- a/src/test/java/org/scijava/annotations/EclipseHelperTest.java +++ b/src/test/java/org/scijava/annotations/EclipseHelperTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Fruit.java b/src/test/java/org/scijava/annotations/Fruit.java index 28f04a12c..547d39793 100644 --- a/src/test/java/org/scijava/annotations/Fruit.java +++ b/src/test/java/org/scijava/annotations/Fruit.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/LegacyTest.java b/src/test/java/org/scijava/annotations/LegacyTest.java index c12e8930c..47336653e 100644 --- a/src/test/java/org/scijava/annotations/LegacyTest.java +++ b/src/test/java/org/scijava/annotations/LegacyTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Simple.java b/src/test/java/org/scijava/annotations/Simple.java index 2a0b751e3..9641955f1 100644 --- a/src/test/java/org/scijava/annotations/Simple.java +++ b/src/test/java/org/scijava/annotations/Simple.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/app/StatusServiceTest.java b/src/test/java/org/scijava/app/StatusServiceTest.java index 5dde120ff..b1d4feb43 100644 --- a/src/test/java/org/scijava/app/StatusServiceTest.java +++ b/src/test/java/org/scijava/app/StatusServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandArrayConverterTest.java b/src/test/java/org/scijava/command/CommandArrayConverterTest.java index 26dfebfc9..406f5f604 100644 --- a/src/test/java/org/scijava/command/CommandArrayConverterTest.java +++ b/src/test/java/org/scijava/command/CommandArrayConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandInfoTest.java b/src/test/java/org/scijava/command/CommandInfoTest.java index d7830f59e..8de905e99 100644 --- a/src/test/java/org/scijava/command/CommandInfoTest.java +++ b/src/test/java/org/scijava/command/CommandInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandModuleTest.java b/src/test/java/org/scijava/command/CommandModuleTest.java index 372ca5267..bbdb25270 100644 --- a/src/test/java/org/scijava/command/CommandModuleTest.java +++ b/src/test/java/org/scijava/command/CommandModuleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandServiceTest.java b/src/test/java/org/scijava/command/CommandServiceTest.java index a66fe78e3..e13622351 100644 --- a/src/test/java/org/scijava/command/CommandServiceTest.java +++ b/src/test/java/org/scijava/command/CommandServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/InputsTest.java b/src/test/java/org/scijava/command/InputsTest.java index a5387d6b9..2c6556644 100644 --- a/src/test/java/org/scijava/command/InputsTest.java +++ b/src/test/java/org/scijava/command/InputsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/InvalidCommandTest.java b/src/test/java/org/scijava/command/InvalidCommandTest.java index 3d5e11649..b0d311083 100644 --- a/src/test/java/org/scijava/command/InvalidCommandTest.java +++ b/src/test/java/org/scijava/command/InvalidCommandTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java b/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java index afde6646f..557de6a28 100644 --- a/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java +++ b/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/console/ConsoleServiceTest.java b/src/test/java/org/scijava/console/ConsoleServiceTest.java index 9bdb66ba4..432feb8e0 100644 --- a/src/test/java/org/scijava/console/ConsoleServiceTest.java +++ b/src/test/java/org/scijava/console/ConsoleServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java b/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java index 830ad7047..c7c0a9185 100644 --- a/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java +++ b/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java b/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java index 1ab9f17d4..7922b3cb6 100644 --- a/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java +++ b/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java index 17ad68a4e..36a78a824 100644 --- a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java +++ b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java index a345e9cbd..ee40655af 100644 --- a/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java index 28ea79d65..504165eca 100644 --- a/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java index fed7c84ce..5fe0aeda9 100644 --- a/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java b/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java index 3b33abecb..1e577f141 100644 --- a/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java b/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java index 4395c5789..3f0c755de 100644 --- a/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java b/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java index 61724ec62..890953eed 100644 --- a/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToLongConverterTest.java b/src/test/java/org/scijava/convert/ByteToLongConverterTest.java index 00866555b..0feab666a 100644 --- a/src/test/java/org/scijava/convert/ByteToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToShortConverterTest.java b/src/test/java/org/scijava/convert/ByteToShortConverterTest.java index 2c307dcce..cec43a6e4 100644 --- a/src/test/java/org/scijava/convert/ByteToShortConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToShortConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ConvertServiceTest.java b/src/test/java/org/scijava/convert/ConvertServiceTest.java index 59aaa2835..5c15ae934 100644 --- a/src/test/java/org/scijava/convert/ConvertServiceTest.java +++ b/src/test/java/org/scijava/convert/ConvertServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ConverterTest.java b/src/test/java/org/scijava/convert/ConverterTest.java index dd96e6191..873be832a 100644 --- a/src/test/java/org/scijava/convert/ConverterTest.java +++ b/src/test/java/org/scijava/convert/ConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DelegateConverterTest.java b/src/test/java/org/scijava/convert/DelegateConverterTest.java index 045eabd6a..00bd9baae 100644 --- a/src/test/java/org/scijava/convert/DelegateConverterTest.java +++ b/src/test/java/org/scijava/convert/DelegateConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java index ed092262e..57c4e8cba 100644 --- a/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FileListConverterTest.java b/src/test/java/org/scijava/convert/FileListConverterTest.java index 632e82f4a..cd6b011e6 100644 --- a/src/test/java/org/scijava/convert/FileListConverterTest.java +++ b/src/test/java/org/scijava/convert/FileListConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FileToPathConversionTest.java b/src/test/java/org/scijava/convert/FileToPathConversionTest.java index 6dcd81d1b..3b6f554c1 100644 --- a/src/test/java/org/scijava/convert/FileToPathConversionTest.java +++ b/src/test/java/org/scijava/convert/FileToPathConversionTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java index 0be67f354..db194c80b 100644 --- a/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java b/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java index 245ba6233..cbb142ed8 100644 --- a/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java index ffe7dc17b..4d59c5a23 100644 --- a/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java index 76690b449..e75975687 100644 --- a/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java b/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java index 9f4555224..79f4e4b5f 100644 --- a/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java b/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java index 1552f8da7..bf8057129 100644 --- a/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java index 929eb9bf7..3c3989bb8 100644 --- a/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java index 69fcb27bc..3483ab5a3 100644 --- a/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java index fb8dfae28..cfc350b18 100644 --- a/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java index d0c4d67ee..ef713a05c 100644 --- a/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java b/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java index a7befa860..aadd59fbb 100644 --- a/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java b/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java index 2ce0c775b..0cbeb21fd 100644 --- a/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java b/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java index cb8505498..d74f7d81f 100644 --- a/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToLongConverterTest.java b/src/test/java/org/scijava/convert/ShortToLongConverterTest.java index b9ca04268..8f8d6543e 100644 --- a/src/test/java/org/scijava/convert/ShortToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java index 8234adae7..5e970dfb1 100644 --- a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java index b2778d128..879e9ffc8 100644 --- a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/display/DisplayTest.java b/src/test/java/org/scijava/display/DisplayTest.java index bb862450c..c8502c237 100644 --- a/src/test/java/org/scijava/display/DisplayTest.java +++ b/src/test/java/org/scijava/display/DisplayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/download/DownloadServiceTest.java b/src/test/java/org/scijava/download/DownloadServiceTest.java index adf5fad02..722a3325c 100644 --- a/src/test/java/org/scijava/download/DownloadServiceTest.java +++ b/src/test/java/org/scijava/download/DownloadServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/event/EventServiceTest.java b/src/test/java/org/scijava/event/EventServiceTest.java index c1e6e74e3..7d80cd56d 100644 --- a/src/test/java/org/scijava/event/EventServiceTest.java +++ b/src/test/java/org/scijava/event/EventServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/ByteArrayByteBankTest.java b/src/test/java/org/scijava/io/ByteArrayByteBankTest.java index e7ee584eb..a8c43184c 100644 --- a/src/test/java/org/scijava/io/ByteArrayByteBankTest.java +++ b/src/test/java/org/scijava/io/ByteArrayByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/ByteBankTest.java b/src/test/java/org/scijava/io/ByteBankTest.java index 2c69cd595..7861b3920 100644 --- a/src/test/java/org/scijava/io/ByteBankTest.java +++ b/src/test/java/org/scijava/io/ByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/IOServiceTest.java b/src/test/java/org/scijava/io/IOServiceTest.java index 68ceb121a..a109c85e8 100644 --- a/src/test/java/org/scijava/io/IOServiceTest.java +++ b/src/test/java/org/scijava/io/IOServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/TypedIOServiceTest.java b/src/test/java/org/scijava/io/TypedIOServiceTest.java index 8e100352c..b17bca169 100644 --- a/src/test/java/org/scijava/io/TypedIOServiceTest.java +++ b/src/test/java/org/scijava/io/TypedIOServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/event/DataEventTest.java b/src/test/java/org/scijava/io/event/DataEventTest.java index 477f6be79..6ceb42e2e 100644 --- a/src/test/java/org/scijava/io/event/DataEventTest.java +++ b/src/test/java/org/scijava/io/event/DataEventTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/BytesHandleTest.java b/src/test/java/org/scijava/io/handle/BytesHandleTest.java index 9e023e1be..865cd327f 100644 --- a/src/test/java/org/scijava/io/handle/BytesHandleTest.java +++ b/src/test/java/org/scijava/io/handle/BytesHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java b/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java index abc9d99a8..7115af445 100644 --- a/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java +++ b/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandleTest.java b/src/test/java/org/scijava/io/handle/DataHandleTest.java index d62bdca7f..15730d404 100644 --- a/src/test/java/org/scijava/io/handle/DataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/DataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandlesTest.java b/src/test/java/org/scijava/io/handle/DataHandlesTest.java index 7aa81bfb1..9a91d56c0 100644 --- a/src/test/java/org/scijava/io/handle/DataHandlesTest.java +++ b/src/test/java/org/scijava/io/handle/DataHandlesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/FileHandleTest.java b/src/test/java/org/scijava/io/handle/FileHandleTest.java index 8b405416c..d690ed710 100644 --- a/src/test/java/org/scijava/io/handle/FileHandleTest.java +++ b/src/test/java/org/scijava/io/handle/FileHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java index 13a93571e..f7cb24182 100644 --- a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java +++ b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java index bd1a9ed14..61c7c9b41 100644 --- a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java b/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java index b9295187e..fd813e326 100644 --- a/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/BytesLocationTest.java b/src/test/java/org/scijava/io/location/BytesLocationTest.java index f7f26c67e..e2900a9c6 100644 --- a/src/test/java/org/scijava/io/location/BytesLocationTest.java +++ b/src/test/java/org/scijava/io/location/BytesLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/FileLocationResolverTest.java b/src/test/java/org/scijava/io/location/FileLocationResolverTest.java index f3326660a..62def039e 100644 --- a/src/test/java/org/scijava/io/location/FileLocationResolverTest.java +++ b/src/test/java/org/scijava/io/location/FileLocationResolverTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/FileLocationTest.java b/src/test/java/org/scijava/io/location/FileLocationTest.java index cb7562977..cf98dcfa1 100644 --- a/src/test/java/org/scijava/io/location/FileLocationTest.java +++ b/src/test/java/org/scijava/io/location/FileLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/LocationServiceTest.java b/src/test/java/org/scijava/io/location/LocationServiceTest.java index feb628fa4..ade1122ba 100644 --- a/src/test/java/org/scijava/io/location/LocationServiceTest.java +++ b/src/test/java/org/scijava/io/location/LocationServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/URILocationTest.java b/src/test/java/org/scijava/io/location/URILocationTest.java index 08c886467..6e23d6fd9 100644 --- a/src/test/java/org/scijava/io/location/URILocationTest.java +++ b/src/test/java/org/scijava/io/location/URILocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/URLLocationTest.java b/src/test/java/org/scijava/io/location/URLLocationTest.java index 9b939f4a1..3f15988c0 100644 --- a/src/test/java/org/scijava/io/location/URLLocationTest.java +++ b/src/test/java/org/scijava/io/location/URLLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java b/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java index 90919ed48..13c3c0a6b 100644 --- a/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java +++ b/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/CallingClassUtilsTest.java b/src/test/java/org/scijava/log/CallingClassUtilsTest.java index a5893c905..e8b2d8ed5 100644 --- a/src/test/java/org/scijava/log/CallingClassUtilsTest.java +++ b/src/test/java/org/scijava/log/CallingClassUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/DefaultLoggerTest.java b/src/test/java/org/scijava/log/DefaultLoggerTest.java index 865e306aa..c8143017e 100644 --- a/src/test/java/org/scijava/log/DefaultLoggerTest.java +++ b/src/test/java/org/scijava/log/DefaultLoggerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogMessageTest.java b/src/test/java/org/scijava/log/LogMessageTest.java index 733e28ff5..20cbe8d76 100644 --- a/src/test/java/org/scijava/log/LogMessageTest.java +++ b/src/test/java/org/scijava/log/LogMessageTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogServiceTest.java b/src/test/java/org/scijava/log/LogServiceTest.java index fccbc18fb..9ab4f15bd 100644 --- a/src/test/java/org/scijava/log/LogServiceTest.java +++ b/src/test/java/org/scijava/log/LogServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogSourceTest.java b/src/test/java/org/scijava/log/LogSourceTest.java index 848a5e17d..65d5813f4 100644 --- a/src/test/java/org/scijava/log/LogSourceTest.java +++ b/src/test/java/org/scijava/log/LogSourceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/StderrLogServiceTest.java b/src/test/java/org/scijava/log/StderrLogServiceTest.java index 00d3a698b..b28503b32 100644 --- a/src/test/java/org/scijava/log/StderrLogServiceTest.java +++ b/src/test/java/org/scijava/log/StderrLogServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/TestLogListener.java b/src/test/java/org/scijava/log/TestLogListener.java index ef6224cfa..ef92de0d5 100644 --- a/src/test/java/org/scijava/log/TestLogListener.java +++ b/src/test/java/org/scijava/log/TestLogListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/main/MainServiceTest.java b/src/test/java/org/scijava/main/MainServiceTest.java index e96794ed8..8152f13c6 100644 --- a/src/test/java/org/scijava/main/MainServiceTest.java +++ b/src/test/java/org/scijava/main/MainServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java b/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java index eaf05da9b..03872538f 100644 --- a/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java +++ b/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/menu/MenuServiceTest.java b/src/test/java/org/scijava/menu/MenuServiceTest.java index d3c7428d5..604db06c3 100644 --- a/src/test/java/org/scijava/menu/MenuServiceTest.java +++ b/src/test/java/org/scijava/menu/MenuServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/menu/ShadowMenuTest.java b/src/test/java/org/scijava/menu/ShadowMenuTest.java index f24093192..3c8ff6874 100644 --- a/src/test/java/org/scijava/menu/ShadowMenuTest.java +++ b/src/test/java/org/scijava/menu/ShadowMenuTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/ModuleServiceTest.java b/src/test/java/org/scijava/module/ModuleServiceTest.java index 2bd1fcb4b..b9e6ab4f5 100644 --- a/src/test/java/org/scijava/module/ModuleServiceTest.java +++ b/src/test/java/org/scijava/module/ModuleServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java b/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java index a0dd141ff..40461b497 100644 --- a/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java +++ b/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java b/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java index 3425c654b..b5db1288c 100644 --- a/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java +++ b/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/NamedObjectIndexTest.java b/src/test/java/org/scijava/object/NamedObjectIndexTest.java index ad5fd4aa7..0e8e510f8 100644 --- a/src/test/java/org/scijava/object/NamedObjectIndexTest.java +++ b/src/test/java/org/scijava/object/NamedObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/ObjectIndexTest.java b/src/test/java/org/scijava/object/ObjectIndexTest.java index e81c87e1f..00be93314 100644 --- a/src/test/java/org/scijava/object/ObjectIndexTest.java +++ b/src/test/java/org/scijava/object/ObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/ObjectServiceTest.java b/src/test/java/org/scijava/object/ObjectServiceTest.java index 321a402cb..7e179c0bf 100644 --- a/src/test/java/org/scijava/object/ObjectServiceTest.java +++ b/src/test/java/org/scijava/object/ObjectServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/SortedObjectIndexTest.java b/src/test/java/org/scijava/object/SortedObjectIndexTest.java index 61894ab78..86c38ecfd 100644 --- a/src/test/java/org/scijava/object/SortedObjectIndexTest.java +++ b/src/test/java/org/scijava/object/SortedObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/options/OptionsTest.java b/src/test/java/org/scijava/options/OptionsTest.java index 3ed1d5f08..eb144eebc 100644 --- a/src/test/java/org/scijava/options/OptionsTest.java +++ b/src/test/java/org/scijava/options/OptionsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/parse/ParseServiceTest.java b/src/test/java/org/scijava/parse/ParseServiceTest.java index a5053766c..f09d33308 100644 --- a/src/test/java/org/scijava/parse/ParseServiceTest.java +++ b/src/test/java/org/scijava/parse/ParseServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginFinderTest.java b/src/test/java/org/scijava/plugin/PluginFinderTest.java index 004165143..32514f731 100644 --- a/src/test/java/org/scijava/plugin/PluginFinderTest.java +++ b/src/test/java/org/scijava/plugin/PluginFinderTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginIndexTest.java b/src/test/java/org/scijava/plugin/PluginIndexTest.java index 485484287..6452fffba 100644 --- a/src/test/java/org/scijava/plugin/PluginIndexTest.java +++ b/src/test/java/org/scijava/plugin/PluginIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginInfoTest.java b/src/test/java/org/scijava/plugin/PluginInfoTest.java index c7e2fbea5..49c7fa8bf 100644 --- a/src/test/java/org/scijava/plugin/PluginInfoTest.java +++ b/src/test/java/org/scijava/plugin/PluginInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/SingletonServiceTest.java b/src/test/java/org/scijava/plugin/SingletonServiceTest.java index a4eabeec7..ca6e5a331 100644 --- a/src/test/java/org/scijava/plugin/SingletonServiceTest.java +++ b/src/test/java/org/scijava/plugin/SingletonServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/prefs/PrefServiceTest.java b/src/test/java/org/scijava/prefs/PrefServiceTest.java index 1f2ee361a..ff5de6fde 100644 --- a/src/test/java/org/scijava/prefs/PrefServiceTest.java +++ b/src/test/java/org/scijava/prefs/PrefServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/run/RunServiceTest.java b/src/test/java/org/scijava/run/RunServiceTest.java index 5b0189b7b..f7e908154 100644 --- a/src/test/java/org/scijava/run/RunServiceTest.java +++ b/src/test/java/org/scijava/run/RunServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java b/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java index 42d0a0707..9b8415054 100644 --- a/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java +++ b/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptEngineTest.java b/src/test/java/org/scijava/script/ScriptEngineTest.java index 62914f64a..b10c6d3e8 100644 --- a/src/test/java/org/scijava/script/ScriptEngineTest.java +++ b/src/test/java/org/scijava/script/ScriptEngineTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptFinderTest.java b/src/test/java/org/scijava/script/ScriptFinderTest.java index 5c77988a6..f3301fec1 100644 --- a/src/test/java/org/scijava/script/ScriptFinderTest.java +++ b/src/test/java/org/scijava/script/ScriptFinderTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptInfoTest.java b/src/test/java/org/scijava/script/ScriptInfoTest.java index 53691a948..06231bb0e 100644 --- a/src/test/java/org/scijava/script/ScriptInfoTest.java +++ b/src/test/java/org/scijava/script/ScriptInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptServiceTest.java b/src/test/java/org/scijava/script/ScriptServiceTest.java index f3dda2de3..b548ea74a 100644 --- a/src/test/java/org/scijava/script/ScriptServiceTest.java +++ b/src/test/java/org/scijava/script/ScriptServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java b/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java index 3256d6062..dbc1e0674 100644 --- a/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java +++ b/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/service/ServiceIndexTest.java b/src/test/java/org/scijava/service/ServiceIndexTest.java index af260c4ca..44dc0c11e 100644 --- a/src/test/java/org/scijava/service/ServiceIndexTest.java +++ b/src/test/java/org/scijava/service/ServiceIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/task/TaskEventTest.java b/src/test/java/org/scijava/task/TaskEventTest.java index fadecc683..9360fc6ad 100644 --- a/src/test/java/org/scijava/task/TaskEventTest.java +++ b/src/test/java/org/scijava/task/TaskEventTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/task/TaskServiceTest.java b/src/test/java/org/scijava/task/TaskServiceTest.java index 7f6705495..5f64642c0 100644 --- a/src/test/java/org/scijava/task/TaskServiceTest.java +++ b/src/test/java/org/scijava/task/TaskServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/test/AbstractSciJavaTest.java b/src/test/java/org/scijava/test/AbstractSciJavaTest.java index ae0e45338..b11a6e1d6 100644 --- a/src/test/java/org/scijava/test/AbstractSciJavaTest.java +++ b/src/test/java/org/scijava/test/AbstractSciJavaTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/test/TestUtilsTest.java b/src/test/java/org/scijava/test/TestUtilsTest.java index 31eee18d4..fd25f1cff 100644 --- a/src/test/java/org/scijava/test/TestUtilsTest.java +++ b/src/test/java/org/scijava/test/TestUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/text/TextServiceTest.java b/src/test/java/org/scijava/text/TextServiceTest.java index 974e0cbac..aa4b714c2 100644 --- a/src/test/java/org/scijava/text/TextServiceTest.java +++ b/src/test/java/org/scijava/text/TextServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/thread/ThreadServiceTest.java b/src/test/java/org/scijava/thread/ThreadServiceTest.java index 0e92db904..918dc33ea 100644 --- a/src/test/java/org/scijava/thread/ThreadServiceTest.java +++ b/src/test/java/org/scijava/thread/ThreadServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ui/UIServiceTest.java b/src/test/java/org/scijava/ui/UIServiceTest.java index 815b186d4..b68068186 100644 --- a/src/test/java/org/scijava/ui/UIServiceTest.java +++ b/src/test/java/org/scijava/ui/UIServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/AppUtilsTest.java b/src/test/java/org/scijava/util/AppUtilsTest.java index ddf392bec..7018581b2 100644 --- a/src/test/java/org/scijava/util/AppUtilsTest.java +++ b/src/test/java/org/scijava/util/AppUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ArrayUtilsTest.java b/src/test/java/org/scijava/util/ArrayUtilsTest.java index c31e809a1..befbf0697 100644 --- a/src/test/java/org/scijava/util/ArrayUtilsTest.java +++ b/src/test/java/org/scijava/util/ArrayUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/BoolArrayTest.java b/src/test/java/org/scijava/util/BoolArrayTest.java index 51c5f6b4c..c578dd824 100644 --- a/src/test/java/org/scijava/util/BoolArrayTest.java +++ b/src/test/java/org/scijava/util/BoolArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ByteArrayTest.java b/src/test/java/org/scijava/util/ByteArrayTest.java index 31287b2a6..f4fa06ec5 100644 --- a/src/test/java/org/scijava/util/ByteArrayTest.java +++ b/src/test/java/org/scijava/util/ByteArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/CharArrayTest.java b/src/test/java/org/scijava/util/CharArrayTest.java index 343a64b80..2063c0a88 100644 --- a/src/test/java/org/scijava/util/CharArrayTest.java +++ b/src/test/java/org/scijava/util/CharArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ClassUtilsTest.java b/src/test/java/org/scijava/util/ClassUtilsTest.java index 35e9c134e..11b469757 100644 --- a/src/test/java/org/scijava/util/ClassUtilsTest.java +++ b/src/test/java/org/scijava/util/ClassUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ColorRGBTest.java b/src/test/java/org/scijava/util/ColorRGBTest.java index 4f3f68323..e461780a5 100644 --- a/src/test/java/org/scijava/util/ColorRGBTest.java +++ b/src/test/java/org/scijava/util/ColorRGBTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ConversionUtilsTest.java b/src/test/java/org/scijava/util/ConversionUtilsTest.java index ac0abeaa9..ee5b548d9 100644 --- a/src/test/java/org/scijava/util/ConversionUtilsTest.java +++ b/src/test/java/org/scijava/util/ConversionUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/DigestUtilsTest.java b/src/test/java/org/scijava/util/DigestUtilsTest.java index 657ee757d..8f145181a 100644 --- a/src/test/java/org/scijava/util/DigestUtilsTest.java +++ b/src/test/java/org/scijava/util/DigestUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/DoubleArrayTest.java b/src/test/java/org/scijava/util/DoubleArrayTest.java index 093adb0a8..8f8c4aece 100644 --- a/src/test/java/org/scijava/util/DoubleArrayTest.java +++ b/src/test/java/org/scijava/util/DoubleArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/FileUtilsTest.java b/src/test/java/org/scijava/util/FileUtilsTest.java index 51f6286af..ebea6008c 100644 --- a/src/test/java/org/scijava/util/FileUtilsTest.java +++ b/src/test/java/org/scijava/util/FileUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/FloatArrayTest.java b/src/test/java/org/scijava/util/FloatArrayTest.java index b5bc6801e..cfa9d7f24 100644 --- a/src/test/java/org/scijava/util/FloatArrayTest.java +++ b/src/test/java/org/scijava/util/FloatArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/GenericArrayTypesTest.java b/src/test/java/org/scijava/util/GenericArrayTypesTest.java index 73e6046df..651b6b437 100644 --- a/src/test/java/org/scijava/util/GenericArrayTypesTest.java +++ b/src/test/java/org/scijava/util/GenericArrayTypesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/IntArrayTest.java b/src/test/java/org/scijava/util/IntArrayTest.java index 33b515224..449621017 100644 --- a/src/test/java/org/scijava/util/IntArrayTest.java +++ b/src/test/java/org/scijava/util/IntArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/LastRecentlyUsedTest.java b/src/test/java/org/scijava/util/LastRecentlyUsedTest.java index 2d17082ba..a543f9830 100644 --- a/src/test/java/org/scijava/util/LastRecentlyUsedTest.java +++ b/src/test/java/org/scijava/util/LastRecentlyUsedTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/LongArrayTest.java b/src/test/java/org/scijava/util/LongArrayTest.java index 81f41c692..04401d197 100644 --- a/src/test/java/org/scijava/util/LongArrayTest.java +++ b/src/test/java/org/scijava/util/LongArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/NumberUtilsTest.java b/src/test/java/org/scijava/util/NumberUtilsTest.java index c838ccc89..2180767af 100644 --- a/src/test/java/org/scijava/util/NumberUtilsTest.java +++ b/src/test/java/org/scijava/util/NumberUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ObjectArrayTest.java b/src/test/java/org/scijava/util/ObjectArrayTest.java index bb654fa0f..8bf3cae7e 100644 --- a/src/test/java/org/scijava/util/ObjectArrayTest.java +++ b/src/test/java/org/scijava/util/ObjectArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/POMTest.java b/src/test/java/org/scijava/util/POMTest.java index dad7a7aa7..b24fee5dc 100644 --- a/src/test/java/org/scijava/util/POMTest.java +++ b/src/test/java/org/scijava/util/POMTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/PrimitiveArrayTest.java b/src/test/java/org/scijava/util/PrimitiveArrayTest.java index 747b0fdac..cb76fac7c 100644 --- a/src/test/java/org/scijava/util/PrimitiveArrayTest.java +++ b/src/test/java/org/scijava/util/PrimitiveArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ProcessUtilsTest.java b/src/test/java/org/scijava/util/ProcessUtilsTest.java index 2b717cb92..8b19a7cf7 100644 --- a/src/test/java/org/scijava/util/ProcessUtilsTest.java +++ b/src/test/java/org/scijava/util/ProcessUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ShortArrayTest.java b/src/test/java/org/scijava/util/ShortArrayTest.java index e4d3f7ed6..cad66c41d 100644 --- a/src/test/java/org/scijava/util/ShortArrayTest.java +++ b/src/test/java/org/scijava/util/ShortArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/StringUtilsTest.java b/src/test/java/org/scijava/util/StringUtilsTest.java index 4fac7e5e7..30f99e02f 100644 --- a/src/test/java/org/scijava/util/StringUtilsTest.java +++ b/src/test/java/org/scijava/util/StringUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/TypesTest.java b/src/test/java/org/scijava/util/TypesTest.java index 21fce520d..4edebf7ff 100644 --- a/src/test/java/org/scijava/util/TypesTest.java +++ b/src/test/java/org/scijava/util/TypesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/UnitUtilsTest.java b/src/test/java/org/scijava/util/UnitUtilsTest.java index e095f60a0..bfc2aa681 100644 --- a/src/test/java/org/scijava/util/UnitUtilsTest.java +++ b/src/test/java/org/scijava/util/UnitUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/VersionUtilsTest.java b/src/test/java/org/scijava/util/VersionUtilsTest.java index 7b0844225..a924049f8 100644 --- a/src/test/java/org/scijava/util/VersionUtilsTest.java +++ b/src/test/java/org/scijava/util/VersionUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/widget/WidgetStyleTest.java b/src/test/java/org/scijava/widget/WidgetStyleTest.java index 321342736..78f9c203d 100644 --- a/src/test/java/org/scijava/widget/WidgetStyleTest.java +++ b/src/test/java/org/scijava/widget/WidgetStyleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2022 SciJava developers. + * Copyright (C) 2009 - 2023 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: From fe8297f49a35a286792a30519955acfa03882be2 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 24 Jan 2023 09:03:59 -0600 Subject: [PATCH 056/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a7fe0d700..0cb3c152b 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.90.1-SNAPSHOT + 2.90.2-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From e8f6a8eda29211cd2701ca60429a40b1c05951a1 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 1 Feb 2023 10:29:28 -0600 Subject: [PATCH 057/185] Improve UIService headless mode and fix test After much hand-wringing, @hinerm and I gave up and decided to call java.awt.GraphicsEnvironment.isHeadless() to make sure the UIService reports the correct headless status. Otherwise, testing becomes very tricky with more edge cases, and more importantly, the UIService.isHeadless() method does not behave as one might expect. --- .../java/org/scijava/ui/DefaultUIService.java | 7 ++-- src/main/java/org/scijava/ui/UIService.java | 10 ++++- .../java/org/scijava/ui/UIServiceTest.java | 40 ++++++++++++++----- 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/scijava/ui/DefaultUIService.java b/src/main/java/org/scijava/ui/DefaultUIService.java index 7fdb36a70..4750f31ef 100644 --- a/src/main/java/org/scijava/ui/DefaultUIService.java +++ b/src/main/java/org/scijava/ui/DefaultUIService.java @@ -29,6 +29,7 @@ package org.scijava.ui; +import java.awt.GraphicsEnvironment; import java.io.File; import java.io.FileFilter; import java.util.ArrayList; @@ -191,9 +192,9 @@ public void setHeadless(final boolean headless) { @Override public boolean isHeadless() { - // NB: We do not use java.awt.GraphicsEnvironment.isHeadless() - // because scijava-common eschews java.awt.* classes when possible. - return forceHeadless || Boolean.getBoolean("java.awt.headless"); + return forceHeadless || + Boolean.getBoolean("java.awt.headless") || + GraphicsEnvironment.isHeadless(); } @Override diff --git a/src/main/java/org/scijava/ui/UIService.java b/src/main/java/org/scijava/ui/UIService.java index 20a9d8bfe..39563f8b4 100644 --- a/src/main/java/org/scijava/ui/UIService.java +++ b/src/main/java/org/scijava/ui/UIService.java @@ -119,7 +119,15 @@ public interface UIService extends SciJavaService { */ void setHeadless(boolean isHeadless); - /** Gets whether the UI is running in headless mode (no UI). */ + /** + * Gets whether the UI is running in headless mode (no UI). + *

    + * More precisely: returns true when {@code java.awt.headless} system + * property is set, and/or {@link java.awt.GraphicsEnvironment.isHeadless()} + * returns true, and/or {@link #setHeadless(boolean)} was called with {@code + * true} to force headless behavior in an otherwise headful environment. + *

    + */ boolean isHeadless(); /** diff --git a/src/test/java/org/scijava/ui/UIServiceTest.java b/src/test/java/org/scijava/ui/UIServiceTest.java index b68068186..89def4290 100644 --- a/src/test/java/org/scijava/ui/UIServiceTest.java +++ b/src/test/java/org/scijava/ui/UIServiceTest.java @@ -31,6 +31,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import java.util.List; @@ -79,19 +80,40 @@ public void testAvailableUIs() { @Test public void testHeadlessUI() { + // If true here, before we messed with it, the assumption is that we are + // in a truly headless environment, not just forced via setHeadless(true). + boolean reallyHeadless = uiService.isHeadless(); + final MockUserInterface mockUI = new MockUserInterface(); uiService.setDefaultUI(mockUI); // test non-headless behavior - uiService.setHeadless(false); - assertFalse(uiService.isHeadless()); - assertTrue(uiService.getDefaultUI() instanceof MockUserInterface); - - // test headless behavior - uiService.setHeadless(true); - assertTrue(uiService.isHeadless()); - assertTrue("UIService should return HeadlessUI when running \"headless\"", - uiService.getDefaultUI() instanceof HeadlessUI); + if (reallyHeadless) { + // This environment is truly headless, and + // we should not be able to override it. + uiService.setHeadless(false); + assertTrue(uiService.isHeadless()); + assertTrue("UIService should return HeadlessUI when running \"headless\"", + uiService.getDefaultUI() instanceof HeadlessUI); + } + else { + // This environment is not headless! We can test more things. + assertSame("UIService default UI override failed", + mockUI, uiService.getDefaultUI()); + + // This environment isn't headless now; + // let's test overriding it to be so. + uiService.setHeadless(true); + assertTrue(uiService.isHeadless()); + assertTrue("UIService should return HeadlessUI when running \"headless\"", + uiService.getDefaultUI() instanceof HeadlessUI); + + // Now we put it back! + uiService.setHeadless(false); + assertFalse(uiService.isHeadless()); + assertSame("UIService default UI override was not restored", + mockUI, uiService.getDefaultUI()); + } } private static final class MockUserInterface extends AbstractUserInterface { From e9a41a4c917dddf2e8d9fadc4c3dbed48dd91d76 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 1 Feb 2023 13:04:18 -0600 Subject: [PATCH 058/185] StringToArrayConverterTest: avoid needless objects We can use the array classes directly, rather than reflectively instantiating and then throwing away array instances. --- .../convert/StringToArrayConverterTest.java | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java index 5e970dfb1..6947a2976 100644 --- a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -69,32 +69,31 @@ public void tearDown() { */ @Test public void testArrayConversion() { - // Component types for array conversions + // Array types for array conversions List> classes = Arrays.asList( // - byte.class, // - Byte.class, // - short.class, // - Short.class, // - int.class, // - Integer.class, // - long.class, // - Long.class, // - float.class, // - Float.class, // - double.class, // - Double.class // + byte[].class, // + Byte[].class, // + short[].class, // + Short[].class, // + int[].class, // + Integer[].class, // + long[].class, // + Long[].class, // + float[].class, // + Float[].class, // + double[].class, // + Double[].class // ); // String input String s = "{0, 1, 2}"; - for (Class c : classes) { - // Make the array class - Class arrayClass = Array.newInstance(c, 0).getClass(); + for (Class arrayClass : classes) { // Ensure our Converter can do the conversion Assert.assertTrue(converter.canConvert(s, arrayClass)); // Do the conversion Object converted = converter.convert(s, arrayClass); // Ensure the output is the expected type Assert.assertEquals(arrayClass, converted.getClass()); + Class c = arrayClass.getComponentType(); for (int i = 0; i < 3; i++) { // Ensure element correctness Object expected = convertService.convert(i, c); From 3be2646d6abf8bf0ac063dd3de4244c4bf814f34 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 1 Feb 2023 13:52:28 -0600 Subject: [PATCH 059/185] ConversionUtilsTest: rewrite testBadObjectElements This test is no longer applicable, at least with the current conversion logic that now handles arrays and collections as of #449 et al. There is a substantial discrepancy right now between what DefaultConverter reports as convertible via canConvert versus what it actually *does* support converting via the convert methods. But that's an issue for another day! --- .../org/scijava/util/ConversionUtilsTest.java | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/test/java/org/scijava/util/ConversionUtilsTest.java b/src/test/java/org/scijava/util/ConversionUtilsTest.java index ee5b548d9..0549e637c 100644 --- a/src/test/java/org/scijava/util/ConversionUtilsTest.java +++ b/src/test/java/org/scijava/util/ConversionUtilsTest.java @@ -29,6 +29,7 @@ package org.scijava.util; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; @@ -43,7 +44,6 @@ import java.util.Set; import org.junit.Test; -import org.scijava.util.Types; /** * Tests {@link ConversionUtils}. @@ -254,23 +254,37 @@ class Struct { * and a collection. */ @Test - public void testBadObjectElements() { + public void testIncompatibleCollections() { class Struct { private Double[] doubleArray; - private List stringList; - @SuppressWarnings("unused") - private Set nestedArray; + private List numberList; + private Set setOfIntegerArrays; } final Struct struct = new Struct(); - // Test abnormal behavior for an object array - setFieldValue(struct, "doubleArray", "not a double array"); - assertEquals(null, struct.doubleArray); + // NB: DefaultConverter converts non-collection/array objects to + // collection/array objects, even if some or all of the constituent elements + // cannot be converted to the array/collection component/element type. - // Test abnormal behavior for a list - setFieldValue(struct, "nestedArray", "definitely not a set of char arrays"); - assertNull(struct.stringList); + // Test object to incompatible array type + setFieldValue(struct, "doubleArray", "not a double array"); + assertArrayEquals(new Double[] {null}, struct.doubleArray); + + // Test object to incompatible List type + setFieldValue(struct, "numberList", "not actually a list of numbers"); + List expectedList = Arrays.asList((Number) null); + assertEquals(expectedList, struct.numberList); + + // Test object to incompatible Set type + setFieldValue(struct, "setOfIntegerArrays", // + "definitely not a set of Integer[]"); + assertNotNull(struct.setOfIntegerArrays); + assertEquals(1, struct.setOfIntegerArrays.size()); + Integer[] singleton = struct.setOfIntegerArrays.iterator().next(); + assertNotNull(singleton); + assertEquals(1, singleton.length); + assertNull(singleton[0]); } /** From 4e40e04189cafcfad4c66357cbad17727dbf6325 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 1 Feb 2023 15:03:50 -0600 Subject: [PATCH 060/185] Add unit tests for DefaultConverter Many do not pass yet, and are commented out. But it's a start. See #450. --- .../scijava/convert/DefaultConverterTest.java | 268 ++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 src/test/java/org/scijava/convert/DefaultConverterTest.java diff --git a/src/test/java/org/scijava/convert/DefaultConverterTest.java b/src/test/java/org/scijava/convert/DefaultConverterTest.java new file mode 100644 index 000000000..599da290b --- /dev/null +++ b/src/test/java/org/scijava/convert/DefaultConverterTest.java @@ -0,0 +1,268 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2023 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ +package org.scijava.convert; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + +import java.lang.reflect.Type; +import java.util.Collection; +import java.util.List; +import java.util.Set; + +import org.junit.Before; +import org.junit.Test; + +/** + * Tests {@link DefaultConverter}. + * + * @author Curtis Rueden + * */ +public class DefaultConverterTest { + private DefaultConverter converter; + + @Before + public void setUp() { + converter = new DefaultConverter(); + } + + // NB: The commented out tests do not currently pass, but many should. + // See: https://github.com/scijava/scijava-common/issues/450 + + @Test + public void testObjectToObjectArray() { + Object o = new Object(); +// assertTrue(converter.canConvert(o, Object[].class)); + Object[] result = converter.convert(o, Object[].class); + assertNotNull(result); + assertEquals(1, result.length); +// assertSame(o, result[0]); + } + + @Test + public void testIntToObjectArray() { + int v = 1; +// assertTrue(converter.canConvert(v, Object[].class)); + Object[] result = converter.convert(v, Object[].class); + assertNotNull(result); + assertEquals(1, result.length); +// assertSame(v, result[0]); + } + + @Test + public void testIntToPrimitiveIntArray() { + int v = 2; +// assertTrue(converter.canConvert(v, int[].class)); + int[] result = converter.convert(v, int[].class); + assertNotNull(result); + assertEquals(1, result.length); + assertSame(v, result[0]); + } + + @Test + public void testIntToBoxedIntegerArray() { + int v = 3; +// assertTrue(converter.canConvert(v, Integer[].class)); + Integer[] result = converter.convert(v, Integer[].class); + assertNotNull(result); + assertEquals(1, result.length); + assertSame(v, result[0]); + } + + @Test + public void testByteToPrimitiveDoubleArray() { + byte v = 4; +// assertTrue(converter.canConvert(v, double[].class)); + double[] result = converter.convert(v, double[].class); + assertNotNull(result); + assertEquals(1, result.length); + assertEquals(v, result[0], 0.0); + } + + @Test + public void testByteToBoxedDoubleArray() { + byte v = 4; +// assertTrue(converter.canConvert(v, Double[].class)); + Double[] result = converter.convert(v, Double[].class); + assertNotNull(result); + assertEquals(1, result.length); + assertEquals(v, result[0], 0.0); + } + + @Test + public void testStringToObjectArray() { + String s = "Pumpernickel"; +// assertTrue(converter.canConvert(s, Object[].class)); + Object[] result = converter.convert(s, Object[].class); + assertNotNull(result); + assertEquals(1, result.length); +// assertSame(s, result[0]); + } + + @Test + public void testStringToStringArray() { + String s = "smorgasbord"; +// assertTrue(converter.canConvert(s, String[].class)); + String[] result = converter.convert(s, String[].class); + assertNotNull(result); + assertEquals(1, result.length); + assertSame(s, result[0]); + } + + @Test + public void testObjectToCollection() throws NoSuchFieldException { + class Struct { + private Collection collectionOfObjects; + private List listOfObjects; + private List listOfStrings; + private List listOfDoubles; + private Set setOfObjects; + } + + Type collectionOfObjectsType = Struct.class.getDeclaredField("collectionOfObjects").getGenericType(); + Type listOfObjectsType = Struct.class.getDeclaredField("listOfObjects").getGenericType(); + Type listOfStringsType = Struct.class.getDeclaredField("listOfStrings").getGenericType(); + Type listOfDoublesType = Struct.class.getDeclaredField("listOfDoubles").getGenericType(); + Type setOfObjectsType = Struct.class.getDeclaredField("setOfObjects").getGenericType(); + + Object o = new Object(); +// assertTrue(converter.canConvert(o, collectionOfObjectsType)); + assertTrue(converter.canConvert(o, listOfObjectsType)); + assertTrue(converter.canConvert(o, listOfStringsType)); + assertTrue(converter.canConvert(o, listOfDoublesType)); + assertTrue(converter.canConvert(o, setOfObjectsType)); + +// assertCollection(o, converter.convert(o, collectionOfObjectsType), Collection.class); +// assertCollection(o, converter.convert(o, listOfObjectsType), List.class); +// assertCollection(o, converter.convert(o, listOfStringsType), List.class); +// assertCollection(o, converter.convert(o, listOfDoublesType), List.class); +// assertCollection(o, converter.convert(o, setOfObjectsType), Set.class); + + String s = "Thingamawhatsit"; +// assertTrue(converter.canConvert(s, collectionOfObjectsType)); + assertTrue(converter.canConvert(s, listOfObjectsType)); + assertTrue(converter.canConvert(s, listOfStringsType)); + assertTrue(converter.canConvert(s, listOfDoublesType)); + assertTrue(converter.canConvert(s, setOfObjectsType)); + +// assertCollection(s, converter.convert(s, collectionOfObjectsType), Collection.class); +// assertCollection(s, converter.convert(s, listOfObjectsType), List.class); + assertCollection(s, converter.convert(s, listOfStringsType), List.class); +// assertCollection(s, converter.convert(s, listOfDoublesType), List.class); +// assertCollection(s, converter.convert(s, setOfObjectsType), Set.class); + + // TODO: Test more things, covering the equivalent of all *To*Array above. + } + + @Test + public void testNumberToNumber() { + double d = -5.6; + assertTrue(converter.canConvert(d, int.class)); + assertEquals(-5, converter.convert(d, int.class), 0.0); + // TODO: Test many more combinations of numeric types. + } + + @Test + public void testObjectToString() { + Object friendly = new Object() { + @Override + public String toString() { return "Hello"; } + }; + assertTrue(converter.canConvert(friendly, String.class)); + assertEquals("Hello", converter.convert(friendly, String.class)); + } + + @Test + public void testStringToCharacter() { + String plan = "Step 0: there is no plan"; + + assertTrue(converter.canConvert(plan, char.class)); + assertEquals('S', (char) converter.convert(plan, char.class)); + + assertTrue(converter.canConvert(plan, Character.class)); + assertEquals(new Character('S'), converter.convert(plan, Character.class)); + } + + @Test + public void testStringToCharacterArray() { + String plan = "Step 0: there is no plan"; + +// assertTrue(converter.canConvert(plan, char[].class)); +// assertArrayEquals(plan.toCharArray(), converter.convert(plan, char[].class)); + // TODO: Test Character[] also. + } + + private enum Gem { + RUBY, DIAMOND, EMERALD; + } + + @Test + public void testStringToEnum() { + assertTrue(converter.canConvert("RUBY", Gem.class)); + assertTrue(converter.canConvert("DIAMOND", Gem.class)); + assertTrue(converter.canConvert("EMERALD", Gem.class)); + assertTrue(converter.canConvert("QUARTZ", Gem.class)); + assertEquals(Gem.RUBY, converter.convert("RUBY", Gem.class)); + assertEquals(Gem.DIAMOND, converter.convert("DIAMOND", Gem.class)); + assertEquals(Gem.EMERALD, converter.convert("EMERALD", Gem.class)); + assertNull(converter.convert("QUARTZ", Gem.class)); + } + + public static class StringWrapper { + public String s; + @SuppressWarnings("unused") + public StringWrapper(String s) { this.s = s; } + } + + @Test + public void testConstructorConversion() { + String s = "Juggernaut"; + assertTrue(converter.canConvert(s, StringWrapper.class)); + assertFalse(converter.canConvert(7, StringWrapper.class)); + StringWrapper sw = converter.convert(s, StringWrapper.class); + assertNotNull(sw); + assertSame(s, sw.s); + } + + // -- Helper methods -- + + private static void assertCollection(Object o, Object collection, + Class collectionClass) + { + assertNotNull(collection); + assertTrue(collectionClass.isInstance(collection)); + assertEquals(1, ((Collection) collection).size()); + assertSame(o, ((Collection) collection).iterator().next()); + } + +} From 8932051e3c276fc1811b62975d0f6d6934339dd1 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 1 Feb 2023 15:40:33 -0600 Subject: [PATCH 061/185] ConversionUtilsTest: make comparison more granular --- src/test/java/org/scijava/util/ConversionUtilsTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/scijava/util/ConversionUtilsTest.java b/src/test/java/org/scijava/util/ConversionUtilsTest.java index 0549e637c..3df7223ee 100644 --- a/src/test/java/org/scijava/util/ConversionUtilsTest.java +++ b/src/test/java/org/scijava/util/ConversionUtilsTest.java @@ -29,7 +29,6 @@ package org.scijava.util; -import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; @@ -269,7 +268,9 @@ class Struct { // Test object to incompatible array type setFieldValue(struct, "doubleArray", "not a double array"); - assertArrayEquals(new Double[] {null}, struct.doubleArray); + assertNotNull(struct.doubleArray); + assertEquals(1, struct.doubleArray.length); + assertNull(struct.doubleArray[0]); // Test object to incompatible List type setFieldValue(struct, "numberList", "not actually a list of numbers"); From 9934d04b5186445a676fe3378eb1c2c3c6747be5 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 2 Feb 2023 14:47:01 -0600 Subject: [PATCH 062/185] DefaultConverter: fix null primitive values bug If the destination type is a primitive, we cannot return null. We must return the designated null-like value for that type instead. --- src/main/java/org/scijava/convert/DefaultConverter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index 5553fca8f..001948004 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -185,7 +185,7 @@ public T convert(final Object src, final Class dest) { catch (final Exception exc) { // TODO: Best not to catch blanket Exceptions here. // no known way to convert - return null; + return Types.nullValue(dest); } } From aa38136478f611f554a4babc8aead007df483813 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 2 Feb 2023 14:50:21 -0600 Subject: [PATCH 063/185] Rewrite the *other* testBadObjectElements Hooray for copy-pasted code. See 3be2646d6abf8bf0ac063dd3de4244c4bf814f34. --- .../scijava/convert/ConvertServiceTest.java | 43 +++++++++++++------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/src/test/java/org/scijava/convert/ConvertServiceTest.java b/src/test/java/org/scijava/convert/ConvertServiceTest.java index 5c15ae934..7e214a00c 100644 --- a/src/test/java/org/scijava/convert/ConvertServiceTest.java +++ b/src/test/java/org/scijava/convert/ConvertServiceTest.java @@ -37,10 +37,10 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import java.lang.reflect.Field; import java.lang.reflect.Type; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -68,7 +68,6 @@ import org.scijava.util.ClassUtils; import org.scijava.util.DoubleArray; import org.scijava.util.FloatArray; -import org.scijava.util.GenericUtils; import org.scijava.util.IntArray; import org.scijava.util.LongArray; import org.scijava.util.PrimitiveArray; @@ -467,7 +466,9 @@ class Struct { final Struct struct = new Struct(); setFieldValue(struct, "intArray", "not an int array"); - assertEquals(null, struct.intArray); + assertNotNull(struct.intArray); + assertEquals(1, struct.intArray.length); + assertSame(0, struct.intArray[0]); } /** @@ -475,23 +476,39 @@ class Struct { * and a collection. */ @Test - public void testBadObjectElements() { + public void testIncompatibleCollections() { class Struct { private Double[] doubleArray; - private List stringList; - @SuppressWarnings("unused") - private Set nestedArray; + private List numberList; + private Set setOfIntegerArrays; } final Struct struct = new Struct(); - // Test abnormal behavior for an object array - setFieldValue(struct, "doubleArray", "not a double array"); - assertEquals(null, struct.doubleArray); + // NB: DefaultConverter converts non-collection/array objects to + // collection/array objects, even if some or all of the constituent elements + // cannot be converted to the array/collection component/element type. - // Test abnormal behavior for a list - setFieldValue(struct, "nestedArray", "definitely not a set of char arrays"); - assertNull(struct.stringList); + // Test object to incompatible array type + setFieldValue(struct, "doubleArray", "not a double array"); + assertNotNull(struct.doubleArray); + assertEquals(1, struct.doubleArray.length); + assertNull(struct.doubleArray[0]); + + // Test object to incompatible List type + setFieldValue(struct, "numberList", "not actually a list of numbers"); + List expectedList = Arrays.asList((Number) null); + assertEquals(expectedList, struct.numberList); + + // Test object to incompatible Set type + setFieldValue(struct, "setOfIntegerArrays", // + "definitely not a set of Integer[]"); + assertNotNull(struct.setOfIntegerArrays); + assertEquals(1, struct.setOfIntegerArrays.size()); + Integer[] singleton = struct.setOfIntegerArrays.iterator().next(); + assertNotNull(singleton); + assertEquals(1, singleton.length); + assertNull(singleton[0]); } /** From b483075adc2e6fcfbb5d849cc5c03c4f7a36db68 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 2 Feb 2023 14:51:16 -0600 Subject: [PATCH 064/185] ConversionUtils: remove unused import --- src/main/java/org/scijava/util/ConversionUtils.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/scijava/util/ConversionUtils.java b/src/main/java/org/scijava/util/ConversionUtils.java index 8e762c083..9d8dd1083 100644 --- a/src/main/java/org/scijava/util/ConversionUtils.java +++ b/src/main/java/org/scijava/util/ConversionUtils.java @@ -35,7 +35,6 @@ import org.scijava.convert.ConvertService; import org.scijava.convert.Converter; import org.scijava.convert.DefaultConverter; -import org.scijava.util.Types; /** @deprecated use {@link ConvertService} and {@link Types} */ @Deprecated From 30e52caf05b4e17adf9053a7fc3f3a6f32800b8c Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 2 Feb 2023 14:51:22 -0600 Subject: [PATCH 065/185] Stop assigning ConversionUtils delegates This logic is inherently unsound, because it pollutes static state. It changes the behavior of the ConversionUtils methods depending on whether a SciJava Context with a ConvertService has ever been instantiated, and depending on the available Converter plugins. With this logic removed, all tests now pass, and pass more consistently, wheras before, the ConversionUtilsTest would have all passing tests when run standalone, and failing test(s) when run as part of the suite. I'm aware that this change may break some things downstream. But because no unit tests exist here in scijava-common to catch those theoretical cases, we will just have to give it a try by making a release, and then address any issues arising afterward. --- .../scijava/convert/AbstractConvertService.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/scijava/convert/AbstractConvertService.java b/src/main/java/org/scijava/convert/AbstractConvertService.java index e9cd189e7..748c0c1a1 100644 --- a/src/main/java/org/scijava/convert/AbstractConvertService.java +++ b/src/main/java/org/scijava/convert/AbstractConvertService.java @@ -36,16 +36,16 @@ import java.util.Set; import org.scijava.plugin.AbstractHandlerService; -import org.scijava.util.ConversionUtils; /** - * Abstract superclass for {@link ConvertService} implementations. Sets this - * service as the active delegate service in {@link ConversionUtils}. + * Abstract superclass for {@link ConvertService} implementations. * * @author Mark Hiner */ -public abstract class AbstractConvertService extends AbstractHandlerService> - implements ConvertService { +public abstract class AbstractConvertService // + extends AbstractHandlerService> // + implements ConvertService +{ // -- ConversionService methods -- @SuppressWarnings({ "unchecked", "rawtypes" }) @@ -159,13 +159,6 @@ public Collection> getCompatibleOutputClasses(final Class source) { return compatibleClasses; } - // -- Service methods -- - - @Override - public void initialize() { - ConversionUtils.setDelegateService(this, getPriority()); - } - // -- Helper methods -- /** From 3cfcbb71f12741a560c8b58ec8b6172ad1a28459 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 2 Feb 2023 15:00:29 -0600 Subject: [PATCH 066/185] UIService: fix javadoc syntax error --- src/main/java/org/scijava/ui/UIService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/ui/UIService.java b/src/main/java/org/scijava/ui/UIService.java index 39563f8b4..53debcf43 100644 --- a/src/main/java/org/scijava/ui/UIService.java +++ b/src/main/java/org/scijava/ui/UIService.java @@ -106,7 +106,7 @@ public interface UIService extends SciJavaService { *

    * Note that if the system itself is headless—which can be detected via * the {@code java.awt.headless} system property or by calling - * {@code java.awt.GraphicsEnvironment.isHeadless()}—then calling + * {@link java.awt.GraphicsEnvironment#isHeadless()}—then calling * {@code setHeadless(false)} will have no effect; the system will still be * headless, and {@link #isHeadless()} will still return true. *

    @@ -123,7 +123,7 @@ public interface UIService extends SciJavaService { * Gets whether the UI is running in headless mode (no UI). *

    * More precisely: returns true when {@code java.awt.headless} system - * property is set, and/or {@link java.awt.GraphicsEnvironment.isHeadless()} + * property is set, and/or {@link java.awt.GraphicsEnvironment#isHeadless()} * returns true, and/or {@link #setHeadless(boolean)} was called with {@code * true} to force headless behavior in an otherwise headful environment. *

    From 0a7ad5ad3619cf7c82e25494c0f4e52b85c18806 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 2 Feb 2023 15:06:57 -0600 Subject: [PATCH 067/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0cb3c152b..e1829da67 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.90.2-SNAPSHOT + 2.90.3-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 10d8be7ecb76fd4e4fd4b601a9609ed4faf30d44 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 15 Feb 2023 11:19:35 -0600 Subject: [PATCH 068/185] ScriptModule: guard against null conditions If a language isn't available to run the given script, say so. --- src/main/java/org/scijava/script/ScriptModule.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/script/ScriptModule.java b/src/main/java/org/scijava/script/ScriptModule.java index da4b10d9c..824e47e67 100644 --- a/src/main/java/org/scijava/script/ScriptModule.java +++ b/src/main/java/org/scijava/script/ScriptModule.java @@ -102,7 +102,16 @@ public void setErrorWriter(final Writer error) { /** Gets the script engine used to execute the script. */ public ScriptEngine getEngine() { if (scriptEngine == null) { - scriptEngine = getInfo().getLanguage().getScriptEngine(); + final ScriptInfo scriptInfo = getInfo(); + if (scriptInfo == null) { + throw new IllegalArgumentException("Invalid script"); + } + final ScriptLanguage scriptLang = scriptInfo.getLanguage(); + if (scriptLang == null) { + throw new IllegalArgumentException( + "No compatible script language available"); + } + scriptEngine = scriptLang.getScriptEngine(); } return scriptEngine; } From bdd6b1a9dec8cc2f8b39fa21dd14b417f5a11b73 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 15 Feb 2023 11:29:26 -0600 Subject: [PATCH 069/185] Add a CLI entry point for SciJava scripts See #451. --- .../java/org/scijava/script/ScriptCLI.java | 169 ++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 src/main/java/org/scijava/script/ScriptCLI.java diff --git a/src/main/java/org/scijava/script/ScriptCLI.java b/src/main/java/org/scijava/script/ScriptCLI.java new file mode 100644 index 000000000..ab6383b19 --- /dev/null +++ b/src/main/java/org/scijava/script/ScriptCLI.java @@ -0,0 +1,169 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2023 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.script; + +import java.io.File; +import java.io.FileReader; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import org.scijava.Context; +import org.scijava.log.LogLevel; +import org.scijava.log.LogService; +import org.scijava.module.Module; + +/** + * A command-line entry point for running SciJava scripts. + * + * @author Curtis Rueden + */ +public class ScriptCLI { + + private static final String USAGE = "" + // + "Usage: " + ScriptCLI.class.getSimpleName() + // + " [-d] [-h] [-l language] [-o] [-r] /path/to/script [script-args]\n" + // + "\n" + // + "Options:\n" + // + " -d, --debug : enable debug-level log output\n" + // + " -h, --help : display this help message\n" + // + " -l, --language : specify language of script to execute\n" + // + " otherwise, inferred from script extension\n" + // + " -o, --print-outputs : print output values\n" + // + " -r, --print-return-value : print return value\n" + // + "\n" + // + "To read from stdin, use a dash (-) symbol for the script path.\n" + // + "\n" + // + "For script-args, give space-separated key=value pairs,\n" + // + "while will be passed in as SciJava script arguments."; + + public static void main(String... args) throws Exception { + final Map inputs = new HashMap<>(); + File file = null; + String language = null; + boolean printOutputs = false; + boolean printReturnValue = false; + boolean parsingOptions = true; + try (final Context context = new Context()) { + // Parse command-line arguments. + if (args.length == 0) args = new String[] {"-h"}; + for (int i = 0; i < args.length; i++) { + if (parsingOptions) { + // Parse options and filename. + if (args[i].equals("-d") || args[i].equals("--debug")) { + final LogService log = context.getService(LogService.class); + if (log != null) log.setLevel(LogLevel.DEBUG); + } + else if (args[i].equals("-h") || args[i].equals("--help")) { + System.err.println(USAGE); + System.exit(1); + } + else if (i < args.length - 1 && // + args[i].equals("-l") || args[i].equals("--language")) + { + language = args[++i]; + } + else if (args[i].equals("-o") || args[i].equals("--print-outputs")) { + printOutputs = true; + } + else if (args[i].equals("-r") || args[i].equals("--print-return-value")) { + printReturnValue = true; + } + else if (args[i].equals("-")) { + // read from stdin + parsingOptions = false; + } + else if (i < args.length - 1 && args[i].equals("--")) { + // argument after the -- separator must be the filename. + file = new File(args[++i]); + parsingOptions = false; + } + else if (new File(args[i]).exists()) { + file = new File(args[i]); + parsingOptions = false; + } + else { + System.err.println("Invalid argument: " + args[i]); + System.exit(2); + } + } + else { + // Parse script arguments. + final int equals = args[i].indexOf("="); + if (equals < 0) { + System.err.println("Invalid argument: " + args[i]); + System.exit(3); + } + final String key = args[i].substring(0, equals); + final String val = args[i].substring(equals + 1); + inputs.put(key, val); + } + } + + final ScriptService ss = context.getService(ScriptService.class); + if (ss == null) { + System.err.println("Error: No script service available."); + System.exit(4); + } + if (file == null && language == null) { + System.err.println("Error: Must specify language when using stdin."); + System.exit(5); + } + + final Module m; + if (language == null) { + m = ss.run(file, true, inputs).get(); + } + else { + ScriptLanguage lang = ss.getLanguageByName(language); + if (lang == null) lang = ss.getLanguageByExtension(language); + if (lang == null) { + System.err.println("Error: Unsupported language: " + language); + System.exit(6); + } + final Reader reader = file == null ? // + new InputStreamReader(System.in) : // + new FileReader(file); + m = ss.run("." + language, reader, true, inputs).get(); + } + if (printOutputs) { + for (Entry output : m.getOutputs().entrySet()) { + System.out.println(output.getKey() + " = " + output.getValue()); + } + } + if (printReturnValue && m instanceof ScriptModule) { + System.out.println(((ScriptModule) m).getReturnValue()); + } + } + System.exit(0); + } +} From fae4829ccdf9f5c3a83cf82029b5347de2aa1e69 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 22 Feb 2023 14:00:34 -0600 Subject: [PATCH 070/185] LastRecentlyUsed: fix bug in replace function Closes #453. --- src/main/java/org/scijava/util/LastRecentlyUsed.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/util/LastRecentlyUsed.java b/src/main/java/org/scijava/util/LastRecentlyUsed.java index 5bbe3cacc..2e485bf22 100644 --- a/src/main/java/org/scijava/util/LastRecentlyUsed.java +++ b/src/main/java/org/scijava/util/LastRecentlyUsed.java @@ -143,7 +143,7 @@ public boolean replace(final int index, T newValue) { throw new IllegalArgumentException("No current entry at position " + index); } - if (newValue.equals(previous)) return false; + if (newValue.equals(previousValue)) return false; map.remove(previousValue); map.put(newValue, index); entries[index] = newValue; From f6856fd34f8d77ac26293b874db5b788af62d8d5 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 23 Feb 2023 15:23:30 -0600 Subject: [PATCH 071/185] POM: bump minor version digit The ScriptCLI class is new public API. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e1829da67..ba2c4afa9 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.90.3-SNAPSHOT + 2.91.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From a23583a92e8fd460c8f39f91a295ea421b2d0230 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 28 Feb 2023 15:06:44 -0600 Subject: [PATCH 072/185] Fix many conversion-related issues * Refactor DefaultConverter, fixing many bugs, and updating unit tests accordingly. * Uncomment tests in DefaultConverterTest, which now pass. * Undeprecate canConvert methods with Class src. There is no replacement when an object of the source type is not available. * Make ConversionUtils better match ConvertService. It now uses the list of built-in converters that are part of SciJava Common, in the same order they are used as Converter plugins. * Clean up conversion-related classes: * Add missing final keywords, fix warnings, and clean up style. * Update javadoc comments to be more accurate in more places. * Fix NullConverter to take precedence iff src and/or dest is null. --- .../convert/ArrayToStringConverter.java | 67 +++--- .../org/scijava/convert/CastingConverter.java | 28 +-- .../convert/DefaultConvertService.java | 2 +- .../org/scijava/convert/DefaultConverter.java | 219 +++++++----------- .../scijava/convert/FileListConverters.java | 9 +- .../scijava/convert/FileToPathConverter.java | 2 +- .../org/scijava/convert/NullConverter.java | 33 +-- .../convert/NumberToNumberConverter.java | 10 +- .../scijava/convert/PathToFileConverter.java | 4 +- .../convert/PrimitiveArrayUnwrapper.java | 2 +- .../java/org/scijava/util/ArrayUtils.java | 2 +- .../org/scijava/util/ConversionUtils.java | 80 +++++-- .../java/org/scijava/util/ObjectArray.java | 2 - .../scijava/convert/ConvertServiceTest.java | 51 ++-- .../org/scijava/convert/ConverterTest.java | 3 +- .../scijava/convert/DefaultConverterTest.java | 81 ++++--- .../org/scijava/util/ConversionUtilsTest.java | 27 ++- 17 files changed, 310 insertions(+), 312 deletions(-) diff --git a/src/main/java/org/scijava/convert/ArrayToStringConverter.java b/src/main/java/org/scijava/convert/ArrayToStringConverter.java index 820f818cf..c9dc10014 100644 --- a/src/main/java/org/scijava/convert/ArrayToStringConverter.java +++ b/src/main/java/org/scijava/convert/ArrayToStringConverter.java @@ -37,12 +37,11 @@ import org.scijava.plugin.Parameter; import org.scijava.plugin.Plugin; import org.scijava.util.ArrayUtils; -import org.scijava.util.Types; /** - * A {@link Converter} that specializes in converting - * n-dimensional arrays into {@link String}s. This {@link Converter} can convert any array whose - * component types can be converted into {@link String}s. By default, this + * A {@link Converter} that specializes in converting n-dimensional arrays into + * {@link String}s. This {@link Converter} can convert any array whose component + * types can be converted into {@link String}s. By default, this * {@link Converter} delimits the array elements with commas. * * @author Gabriel Selzer @@ -53,39 +52,39 @@ public class ArrayToStringConverter extends AbstractConverter { @Parameter(required = false) private ConvertService convertService; - @Override public boolean canConvert(final Class src, final Class dest) { - if (src == null) return false; - final Class saneSrc = Types.box(src); - final Class saneDest = Types.box(dest); - return saneSrc.isArray() && saneDest == String.class; + @Override + public boolean canConvert(final Class src, final Class dest) { + return src != null && src.isArray() && dest == String.class; } - @Override public boolean canConvert(final Object src, final Class dest) { - if (convertService == null) return false; + @Override + public boolean canConvert(final Object src, final Class dest) { + if (convertService == null || src == null) return false; if (!canConvert(src.getClass(), dest)) return false; if (Array.getLength(src) == 0) return true; return convertService.supports(Array.get(src, 0), dest); } @Override - public Object convert(Object src, Type dest) { + public Object convert(Object src, final Type dest) { // Preprocess the "string-likes" - if (src.getClass().equals(String[].class) || // - src.getClass().equals(Character[].class) || // - src.getClass().equals(char[].class)) // + final Class srcClass = src.getClass(); + if (srcClass == String[].class || // + srcClass == Character[].class || // + srcClass == char[].class) // { src = preprocessCharacters(src); } // Convert each element to Strings - String elementString = ArrayUtils.toCollection(src).stream() // + final String elementString = ArrayUtils.toCollection(src).stream() // .map(object -> convertService.convert(object, String.class)) // .collect(Collectors.joining(", ")); return "{" + elementString + "}"; } private String[] preprocessStrings(final Object src) { - int numElements = Array.getLength(src); - String[] processed = new String[numElements]; + final int numElements = Array.getLength(src); + final String[] processed = new String[numElements]; for (int i = 0; i < numElements; i++) { processed[i] = preprocessString(Array.get(src, i)); } @@ -93,37 +92,37 @@ private String[] preprocessStrings(final Object src) { } private String preprocessString(final Object o) { - String s; - if (o == null) { - return null; - } else { - s = o.toString(); - s = s.replace("\\", "\\\\"); - s = s.replace("\"", "\\\""); - } + if (o == null) return null; + String s = o.toString(); + s = s.replace("\\", "\\\\"); + s = s.replace("\"", "\\\""); return "\"" + s + "\""; } private String[] preprocessCharacters(Object src) { - String[] processed = new String[Array.getLength(src)]; + final String[] processed = new String[Array.getLength(src)]; for (int i = 0; i < processed.length; i++) { - Object value = Array.get(src, i); + final Object value = Array.get(src, i); processed[i] = value == null ? null : value.toString(); } return preprocessStrings(processed); } - @SuppressWarnings("unchecked") @Override - public T convert(Object src, Class dest) { - return (T) convert(src, (Type) dest); + @Override + public T convert(final Object src, final Class dest) { + final Type destType = dest; + @SuppressWarnings("unchecked") + final T converted = (T) convert(src, destType); + return converted; } - @Override public Class getOutputType() { + @Override + public Class getOutputType() { return String.class; } - @Override public Class getInputType() { + @Override + public Class getInputType() { return Object.class; } - } diff --git a/src/main/java/org/scijava/convert/CastingConverter.java b/src/main/java/org/scijava/convert/CastingConverter.java index f1d67493e..fbd62a7bc 100644 --- a/src/main/java/org/scijava/convert/CastingConverter.java +++ b/src/main/java/org/scijava/convert/CastingConverter.java @@ -28,6 +28,8 @@ */ package org.scijava.convert; +import java.lang.reflect.Type; + import org.scijava.Priority; import org.scijava.plugin.Plugin; import org.scijava.util.Types; @@ -37,7 +39,7 @@ * * @author Mark Hiner */ -@Plugin(type = Converter.class, priority = Priority.EXTREMELY_HIGH) +@Plugin(type = Converter.class, priority = Priority.EXTREMELY_HIGH - 1) public class CastingConverter extends AbstractConverter { @Override @@ -46,25 +48,23 @@ public boolean canConvert(final Object src, final Class dest) { } @Override - public boolean canConvert(final Class src, final Class dest) { + public boolean canConvert(final Class src, final Type dest) { // OK if the existing object can be casted return dest != null && Types.isAssignable(src, dest); } - @SuppressWarnings("unchecked") + @Override + public boolean canConvert(final Class src, final Class dest) { + // NB: Invert functional flow from Converter interface: + // Converter: canConvert(Class, Type) -> canConvert(Class, Class) + // becomes: canConvert(Class, Class) -> canConvert(Class, Type) + final Type destType = dest; + return canConvert(src, destType); + } + @Override public T convert(final Object src, final Class dest) { - // NB: Regardless of whether the destination type is an array or - // collection, we still want to cast directly if doing so is possible. - // But note that in general, this check does not detect cases of - // incompatible generic parameter types. If this limitation becomes a - // problem in the future we can extend the logic here to provide - // additional signatures of canCast which operate on Types in general - // rather than only Classes. However, the logic could become complex - // very quickly in various subclassing cases, generic parameters - // resolved vs. propagated, etc. - final Class c = Types.raw(dest); - return (T) Types.cast(src, c); + return Types.cast(src, dest); } @Override diff --git a/src/main/java/org/scijava/convert/DefaultConvertService.java b/src/main/java/org/scijava/convert/DefaultConvertService.java index c642be048..f36d9fd9e 100644 --- a/src/main/java/org/scijava/convert/DefaultConvertService.java +++ b/src/main/java/org/scijava/convert/DefaultConvertService.java @@ -40,5 +40,5 @@ @Plugin(type = Service.class) public class DefaultConvertService extends AbstractConvertService { - // Trivial implementation + // NB: No implementation needed. } diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index 001948004..00d4e1a50 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -31,19 +31,21 @@ import java.lang.reflect.Array; import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; -import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collection; -import java.util.HashSet; +import java.util.Deque; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Queue; import java.util.Set; import org.scijava.Priority; import org.scijava.plugin.Plugin; import org.scijava.util.ArrayUtils; -import org.scijava.util.ConversionUtils; import org.scijava.util.Types; /** @@ -73,6 +75,11 @@ public class DefaultConverter extends AbstractConverter { @Override public Object convert(final Object src, final Type dest) { + // special case: CharSequence -> char[] + // otherwise, String -> char[] ends up length 1 with first char only + if (src instanceof CharSequence && dest == char[].class) { + return ((CharSequence) src).toString().toCharArray(); + } // Handle array types, including generic array types. final Type componentType = Types.component(dest); @@ -81,66 +88,34 @@ public Object convert(final Object src, final Type dest) { return convertToArray(src, Types.raw(componentType)); } - // Handle parameterized collection types. - if (dest instanceof ParameterizedType && isCollection(dest)) { - return convertToCollection(src, (ParameterizedType) dest); + // Handle collection types, either raw or parameterized. + Class cClass = collectionClass(dest); + if (cClass != null) { + Type elementType = Types.param(dest, Collection.class, 0); + if (elementType == null) elementType = Object.class; // raw collection + final Object collection = convertToCollection(src, cClass, elementType); + if (collection != null) return collection; + // NB: If this conversion failed, it might still succeed later + // when looking for a wrapping constructor. So let's keep going. + // In particular, see ConvertServiceTest#testConvertSubclass(). } - // This wasn't a collection or array, so convert it as a single element. - return convert(src, Types.raw(dest)); - } + // Ensure type is a well-behaved class, rather than a primitive type. + final Class destClass = Types.raw(dest); + final Class saneDest = Types.box(destClass); - @Override - public T convert(final Object src, final Class dest) { - // ensure type is well-behaved, rather than a primitive type - final Class saneDest = Types.box(dest); - - // Handle array types - if (isArray(dest)) { - @SuppressWarnings("unchecked") - T array = (T) convertToArray(src, Types.raw(Types.component(dest))); - return array; - } + // Object is already the requested type. + if (Types.isInstance(src, saneDest)) return src; // special case for conversion from number to number if (src instanceof Number) { final Number number = (Number) src; - if (saneDest == Byte.class) { - final Byte result = number.byteValue(); - @SuppressWarnings("unchecked") - final T typedResult = (T) result; - return typedResult; - } - if (saneDest == Double.class) { - final Double result = number.doubleValue(); - @SuppressWarnings("unchecked") - final T typedResult = (T) result; - return typedResult; - } - if (saneDest == Float.class) { - final Float result = number.floatValue(); - @SuppressWarnings("unchecked") - final T typedResult = (T) result; - return typedResult; - } - if (saneDest == Integer.class) { - final Integer result = number.intValue(); - @SuppressWarnings("unchecked") - final T typedResult = (T) result; - return typedResult; - } - if (saneDest == Long.class) { - final Long result = number.longValue(); - @SuppressWarnings("unchecked") - final T typedResult = (T) result; - return typedResult; - } - if (saneDest == Short.class) { - final Short result = number.shortValue(); - @SuppressWarnings("unchecked") - final T typedResult = (T) result; - return typedResult; - } + if (saneDest == Byte.class) return number.byteValue(); + if (saneDest == Double.class) return number.doubleValue(); + if (saneDest == Float.class) return number.floatValue(); + if (saneDest == Integer.class) return number.intValue(); + if (saneDest == Long.class) return number.longValue(); + if (saneDest == Short.class) return number.shortValue(); } // special cases for strings @@ -149,46 +124,55 @@ public T convert(final Object src, final Class dest) { final String s = (String) src; if (s.isEmpty()) { // return null for empty strings - return Types.nullValue(dest); + return Types.nullValue(saneDest); } // use first character when converting to Character if (saneDest == Character.class) { - final Character c = new Character(s.charAt(0)); - @SuppressWarnings("unchecked") - final T result = (T) c; - return result; + return new Character(s.charAt(0)); } // special case for conversion to enum - if (dest.isEnum()) { - final T result = ConversionUtils.convertToEnum(s, dest); - if (result != null) return result; + if (saneDest.isEnum()) { + try { + return Types.enumValue(s, saneDest); + } + catch (final IllegalArgumentException exc) { + // NB: No action needed. + } } } + if (saneDest == String.class) { // destination type is String; use Object.toString() method - final String sValue = src.toString(); - @SuppressWarnings("unchecked") - final T result = (T) sValue; - return result; + return src.toString(); } // wrap the original object with one of the new type, using a constructor try { final Constructor ctor = getConstructor(saneDest, src.getClass()); if (ctor == null) return null; - @SuppressWarnings("unchecked") - final T instance = (T) ctor.newInstance(src); - return instance; + return ctor.newInstance(src); } - catch (final Exception exc) { - // TODO: Best not to catch blanket Exceptions here. + catch (final InstantiationException | IllegalAccessException + | IllegalArgumentException | InvocationTargetException exc) + { // no known way to convert - return Types.nullValue(dest); + return Types.nullValue(destClass); } } + @Override + public T convert(final Object src, final Class dest) { + // NB: Invert functional flow from Converter interface: + // Converter: convert(Class, Type) calling convert(Class, Class) + // becomes: convert(Class, Class) calling convert(Class, Type) + final Type destType = dest; + @SuppressWarnings("unchecked") + final T result = (T) convert(src, destType); + return result; + } + @Override public Class getOutputType() { return Object.class; @@ -219,8 +203,10 @@ private boolean isArray(final Type type) { return Types.component(type) != null; } - private boolean isCollection(final Type type) { - return Types.isAssignable(Types.raw(type), Collection.class); + private Class collectionClass(final Type type) { + return Types.raws(type).stream() // + .filter(t -> Types.isAssignable(t, Collection.class)) // + .findFirst().orElse(null); } private Object @@ -244,34 +230,32 @@ private boolean isCollection(final Type type) { } private Object convertToCollection(final Object value, - final ParameterizedType pType) + final Class collectionType, final Type elementType) { - final Collection collection = createCollection(Types.raw(pType)); + final Collection collection = createCollection(collectionType); if (collection == null) return null; // Populate the collection. final Collection items = ArrayUtils.toCollection(value); - // TODO: The following can fail; e.g. "Foo extends ArrayList" - final Type collectionType = pType.getActualTypeArguments()[0]; for (final Object item : items) { - collection.add(convert(item, collectionType)); + collection.add(convert(item, elementType)); } return collection; } - private Collection createCollection(final Class type) { - // If we were given an interface or abstract class, and not a concrete - // class, we attempt to make default implementations. - if (type.isInterface() || Modifier.isAbstract(type.getModifiers())) { - // We don't have a concrete class. If it's a set or a list, we use - // the typical default implementation. Otherwise we won't convert. - if (Types.isAssignable(type, List.class)) return new ArrayList<>(); - if (Types.isAssignable(type, Set.class)) return new HashSet<>(); + private Collection createCollection(Class type) { + // Support conversion to common collection interface types. + if (type == Queue.class || type == Deque.class) type = ArrayDeque.class; + else if (type == Set.class) type = LinkedHashSet.class; + else if (type == List.class || type == Collection.class) type = ArrayList.class; + else if (type.isInterface() || Modifier.isAbstract(type.getModifiers())) { + // We were given an interface or abstract class, and not a concrete + // class, and we don't know what default implementation to use. return null; } - // Got a concrete type. Instantiate it. + // We now have a concrete type. Instantiate it. try { @SuppressWarnings("unchecked") final Collection c = (Collection) type.newInstance(); @@ -288,66 +272,37 @@ private Collection createCollection(final Class type) { // -- Deprecated API -- @Override - @Deprecated - public boolean canConvert(final Class src, final Type dest) { - - // Handle array types, including generic array types. - // The logic follows from the types that ArrayUtils.toCollection - // can convert - if (isArray(dest)){ - // toCollection handles any type of Collection - if (Collection.class.isAssignableFrom(src)) return true; - // toCollection handles any type of array - if (src.isArray()) return true; - // toCollection can wrap objects into a Singleton list, - // but we only want to wrap up a T if the dest type is a T[]. - return Types.isAssignable(src, Types.component(dest)); - } - - // Handle parameterized collection types. - if (dest instanceof ParameterizedType && isCollection(dest) && - createCollection(Types.raw(dest)) != null) - { - return true; - } - - return super.canConvert(src, dest); - } - - @Override - @Deprecated public boolean canConvert(final Class src, final Class dest) { + // OK for array and collection types. + if (isArray(dest)) return true; + Class cClass = collectionClass(dest); + if (cClass != null && createCollection(cClass) != null) return true; + // ensure type is well-behaved, rather than a primitive type final Class saneDest = Types.box(dest); // OK for numerical conversions if (Types.isAssignable(Types.box(src), Number.class) && // - (Types.isByte(dest) || Types.isDouble(dest) || Types.isFloat(dest) || - Types.isInteger(dest) || Types.isLong(dest) || Types.isShort(dest))) + (Types.isByte(saneDest) || Types.isDouble(saneDest) || // + Types.isFloat(saneDest) || Types.isInteger(saneDest) || // + Types.isLong(saneDest) || Types.isShort(saneDest))) { return true; } - + // OK if string if (saneDest == String.class) return true; - + if (Types.isAssignable(src, String.class)) { // OK if source type is string and destination type is character // (in this case, the first character of the string would be used) if (saneDest == Character.class) return true; - + // OK if source type is string and destination type is an enum if (dest.isEnum()) return true; } - + // OK if appropriate wrapper constructor exists - try { - return getConstructor(saneDest, src) != null; - } - catch (final Exception exc) { - // TODO: Best not to catch blanket Exceptions here. - // no known way to convert - return false; - } + return getConstructor(saneDest, src) != null; } } diff --git a/src/main/java/org/scijava/convert/FileListConverters.java b/src/main/java/org/scijava/convert/FileListConverters.java index 7c65900b2..d9cc1173f 100644 --- a/src/main/java/org/scijava/convert/FileListConverters.java +++ b/src/main/java/org/scijava/convert/FileListConverters.java @@ -35,7 +35,6 @@ import java.util.List; import java.util.stream.Collectors; -import org.scijava.Priority; import org.scijava.plugin.Plugin; import org.scijava.util.StringUtils; @@ -49,7 +48,7 @@ public class FileListConverters { // -- String to File (list) converters -- - @Plugin(type = Converter.class, priority = Priority.NORMAL) + @Plugin(type = Converter.class) public static class StringToFileConverter extends AbstractConverter { @@ -72,7 +71,7 @@ public Class getInputType() { } - @Plugin(type = Converter.class, priority = Priority.NORMAL) + @Plugin(type = Converter.class) public static class StringToFileArrayConverter extends AbstractConverter { @@ -104,7 +103,7 @@ public Class getInputType() { // -- File (list) to String converters -- - @Plugin(type = Converter.class, priority = Priority.NORMAL) + @Plugin(type = Converter.class) public static class FileToStringConverter extends AbstractConverter { @@ -127,7 +126,7 @@ public Class getInputType() { } - @Plugin(type = Converter.class, priority = Priority.NORMAL) + @Plugin(type = Converter.class) public static class FileArrayToStringConverter extends AbstractConverter { diff --git a/src/main/java/org/scijava/convert/FileToPathConverter.java b/src/main/java/org/scijava/convert/FileToPathConverter.java index 235c18661..70a295bdb 100644 --- a/src/main/java/org/scijava/convert/FileToPathConverter.java +++ b/src/main/java/org/scijava/convert/FileToPathConverter.java @@ -44,7 +44,7 @@ public class FileToPathConverter extends AbstractConverter { @SuppressWarnings("unchecked") @Override - public T convert(Object src, Class dest) { + public T convert(final Object src, final Class dest) { File f = (File) src; return (T) f.toPath(); } diff --git a/src/main/java/org/scijava/convert/NullConverter.java b/src/main/java/org/scijava/convert/NullConverter.java index f375f99ea..0ea6e9f97 100644 --- a/src/main/java/org/scijava/convert/NullConverter.java +++ b/src/main/java/org/scijava/convert/NullConverter.java @@ -36,54 +36,44 @@ import org.scijava.util.Types; /** - * {@link Converter} implementation for handling {@code null} values. Performs - * basic casting when given a {@code null} source and returns {@code null} - * directly when given a {@code null} destination. + * {@link Converter} implementation for handling {@code null} values. Returns + * {@code null} when given a {@code null} source or {@code null} destination. *

    - * By running at {@link Priority#FIRST}, other converters should - * not need to worry about {@code null} source or destination parameters. - *

    - *

    - * NB: if a {@link Class} source is queried for the {@link #canConvert}, - * this converter will always return false (as there is no way of knowing - * if the source object will be null or not). + * By running at {@link Priority#EXTREMELY_HIGH}, other converters should not + * need to worry about {@code null} source or destination parameters. *

    * * @author Mark Hiner */ -@Plugin(type = Converter.class, priority = Priority.FIRST) +@Plugin(type = Converter.class, priority = Priority.EXTREMELY_HIGH) public class NullConverter extends AbstractConverter { @Override - public boolean canConvert(final ConversionRequest request) { - if (request == null) return false; - return (request.destType() == null && request.destClass() == null) || - (request.sourceObject() == null && request.sourceClass() == null); + public boolean canConvert(final Object src, final Type dest) { + return src == null || dest == null; } @Override - public boolean canConvert(final Object src, final Type dest) { + public boolean canConvert(final Object src, final Class dest) { return src == null || dest == null; } @Override - public boolean canConvert(final Object src, final Class dest) { + public boolean canConvert(final Class src, final Type dest) { return src == null || dest == null; } @Override public boolean canConvert(final Class src, final Class dest) { - if (src == null) return false; - return dest == null; + return src == null || dest == null; } @Override public T convert(final Object src, final Class dest) { if (dest == null) return null; if (src == null) return Types.nullValue(dest); - throw new IllegalArgumentException("Attempting non-null conversion: " + - src + " > " + dest + " using NullConverter."); + src + " -> " + dest + " using NullConverter."); } @Override @@ -95,5 +85,4 @@ public Class getOutputType() { public Class getInputType() { return Object.class; } - } diff --git a/src/main/java/org/scijava/convert/NumberToNumberConverter.java b/src/main/java/org/scijava/convert/NumberToNumberConverter.java index 01d092acf..f99af2e1a 100644 --- a/src/main/java/org/scijava/convert/NumberToNumberConverter.java +++ b/src/main/java/org/scijava/convert/NumberToNumberConverter.java @@ -43,11 +43,11 @@ public abstract class NumberToNumberConverter T convert(final Object src, final Class dest) { - if (src == null || dest == null) throw new IllegalArgumentException( - "Null input"); + if (src == null || dest == null) // + throw new IllegalArgumentException("Null input"); if (!getInputType().isInstance(src)) { throw new IllegalArgumentException("Expected input of type " + - getInputType().getSimpleName() + ", but got " + + getInputType().getSimpleName() + ", but got " + // src.getClass().getSimpleName()); } if (Types.box(dest) != getOutputType()) { @@ -55,7 +55,9 @@ public T convert(final Object src, final Class dest) { "Expected output class of " + getOutputType().getSimpleName() + ", but got " + dest.getSimpleName()); } - return (T) convert((Number) src); + @SuppressWarnings("unchecked") + final T result = (T) convert((Number) src); + return result; } public abstract O convert(Number n); diff --git a/src/main/java/org/scijava/convert/PathToFileConverter.java b/src/main/java/org/scijava/convert/PathToFileConverter.java index d50b10a29..3b793ae8e 100644 --- a/src/main/java/org/scijava/convert/PathToFileConverter.java +++ b/src/main/java/org/scijava/convert/PathToFileConverter.java @@ -44,8 +44,8 @@ public class PathToFileConverter extends AbstractConverter { @SuppressWarnings("unchecked") @Override - public T convert(Object src, Class dest) { - Path p = (Path) src; + public T convert(final Object src, final Class dest) { + final Path p = (Path) src; return (T) p.toFile(); } diff --git a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java index ebc1a138a..5fb595290 100644 --- a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java +++ b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java @@ -41,7 +41,7 @@ public abstract class PrimitiveArrayUnwrapper T convert(Object src, Class dest) { + public T convert(final Object src, final Class dest) { final W primitiveArray = (W) src; return (T) primitiveArray.getArray(); diff --git a/src/main/java/org/scijava/util/ArrayUtils.java b/src/main/java/org/scijava/util/ArrayUtils.java index d25c2ffa0..6ce46c43e 100644 --- a/src/main/java/org/scijava/util/ArrayUtils.java +++ b/src/main/java/org/scijava/util/ArrayUtils.java @@ -88,7 +88,7 @@ public static T[] array(final T... values) { * object is an array type, a {@link PrimitiveArray} wrapper will be created. */ public static Collection toCollection(final Object value) { - // If the value is null or we we have a collection, just return it + // If the value is null or we have a collection, just return it if (value == null || Collection.class.isAssignableFrom(value.getClass())) { return (Collection) value; } diff --git a/src/main/java/org/scijava/util/ConversionUtils.java b/src/main/java/org/scijava/util/ConversionUtils.java index 9d8dd1083..b3662eaa2 100644 --- a/src/main/java/org/scijava/util/ConversionUtils.java +++ b/src/main/java/org/scijava/util/ConversionUtils.java @@ -30,21 +30,66 @@ package org.scijava.util; import java.lang.reflect.Type; +import java.util.Arrays; +import java.util.List; import org.scijava.convert.ConversionRequest; import org.scijava.convert.ConvertService; import org.scijava.convert.Converter; -import org.scijava.convert.DefaultConverter; /** @deprecated use {@link ConvertService} and {@link Types} */ @Deprecated public class ConversionUtils { - private static ConvertService convertService; - - private static Converter converterNoContext; - - private static double servicePriority = 0.0; + private static List> converters = Arrays.asList( + new org.scijava.convert.NullConverter(), + new org.scijava.convert.CastingConverter(), + new org.scijava.convert.ArrayConverters.BoolArrayUnwrapper(), + new org.scijava.convert.ArrayConverters.BoolArrayWrapper(), + new org.scijava.convert.ArrayConverters.ByteArrayUnwrapper(), + new org.scijava.convert.ArrayConverters.ByteArrayWrapper(), + new org.scijava.convert.ArrayConverters.CharArrayUnwrapper(), + new org.scijava.convert.ArrayConverters.CharArrayWrapper(), + new org.scijava.convert.ArrayConverters.DoubleArrayUnwrapper(), + new org.scijava.convert.ArrayConverters.DoubleArrayWrapper(), + new org.scijava.convert.ArrayConverters.FloatArrayUnwrapper(), + new org.scijava.convert.ArrayConverters.FloatArrayWrapper(), + new org.scijava.convert.ArrayConverters.IntArrayUnwrapper(), + new org.scijava.convert.ArrayConverters.IntArrayWrapper(), + new org.scijava.convert.ArrayConverters.LongArrayUnwrapper(), + new org.scijava.convert.ArrayConverters.LongArrayWrapper(), + new org.scijava.convert.ArrayConverters.ShortArrayUnwrapper(), + new org.scijava.convert.ArrayConverters.ShortArrayWrapper(), + new org.scijava.convert.FileListConverters.FileArrayToStringConverter(), + new org.scijava.convert.FileListConverters.FileToStringConverter(), + new org.scijava.convert.FileListConverters.StringToFileArrayConverter(), + new org.scijava.convert.FileListConverters.StringToFileConverter(), + new org.scijava.convert.NumberConverters.BigIntegerToBigDecimalConverter(), + new org.scijava.convert.NumberConverters.ByteToBigDecimalConverter(), + new org.scijava.convert.NumberConverters.ByteToBigIntegerConverter(), + new org.scijava.convert.NumberConverters.ByteToDoubleConverter(), + new org.scijava.convert.NumberConverters.ByteToFloatConverter(), + new org.scijava.convert.NumberConverters.ByteToIntegerConverter(), + new org.scijava.convert.NumberConverters.ByteToLongConverter(), + new org.scijava.convert.NumberConverters.ByteToShortConverter(), + new org.scijava.convert.NumberConverters.DoubleToBigDecimalConverter(), + new org.scijava.convert.NumberConverters.FloatToBigDecimalConverter(), + new org.scijava.convert.NumberConverters.FloatToDoubleConverter(), + new org.scijava.convert.NumberConverters.IntegerToBigDecimalConverter(), + new org.scijava.convert.NumberConverters.IntegerToBigIntegerConverter(), + new org.scijava.convert.NumberConverters.IntegerToDoubleConverter(), + new org.scijava.convert.NumberConverters.IntegerToLongConverter(), + new org.scijava.convert.NumberConverters.LongToBigDecimalConverter(), + new org.scijava.convert.NumberConverters.LongToBigIntegerConverter(), + new org.scijava.convert.NumberConverters.ShortToBigDecimalConverter(), + new org.scijava.convert.NumberConverters.ShortToBigIntegerConverter(), + new org.scijava.convert.NumberConverters.ShortToDoubleConverter(), + new org.scijava.convert.NumberConverters.ShortToFloatConverter(), + new org.scijava.convert.NumberConverters.ShortToIntegerConverter(), + new org.scijava.convert.NumberConverters.ShortToLongConverter(), + new org.scijava.convert.StringToNumberConverter(), + new org.scijava.convert.DefaultConverter() + ); private ConversionUtils() { // prevent instantiation of utility class @@ -52,18 +97,13 @@ private ConversionUtils() { // -- ConvertService setter -- - /** - * Sets the {@link ConvertService} to use for handling conversion requests. - */ + /** @deprecated This method should not be used anymore. */ + @Deprecated + @SuppressWarnings("unused") public static void setDelegateService(final ConvertService convertService, final double priority) { - if (ConversionUtils.convertService == null || Double.compare(priority, - servicePriority) > 0) - { - ConversionUtils.convertService = convertService; - servicePriority = priority; - } + // NB: This method is now a no-op. } // -- Deprecated methods -- @@ -208,17 +248,11 @@ public static T getNullValue(final Class type) { // -- Helper methods -- /** - * Gets the {@link Converter} to use for the given conversion request. If the - * delegate {@link ConvertService} has not been explicitly set, then a - * {@link DefaultConverter} will be used. + * Gets the {@link Converter} to use for the given conversion request. * * @return The {@link Converter} to use for handling the given request. */ private static Converter handler(final ConversionRequest data) { - if (convertService != null) return convertService.getHandler(data); - - if (converterNoContext == null) converterNoContext = new DefaultConverter(); - - return converterNoContext; + return converters.stream().filter(c -> c.supports(data)).findFirst().orElse(null); } } diff --git a/src/main/java/org/scijava/util/ObjectArray.java b/src/main/java/org/scijava/util/ObjectArray.java index bb238b288..44e4dfce3 100644 --- a/src/main/java/org/scijava/util/ObjectArray.java +++ b/src/main/java/org/scijava/util/ObjectArray.java @@ -32,8 +32,6 @@ import java.util.Arrays; import java.util.Collection; -import org.scijava.util.Types; - /** * An extensible, generic array of {@code Object} elements. Note that this class * is a {@link PrimitiveArray} but of course Objects are not primitives. diff --git a/src/test/java/org/scijava/convert/ConvertServiceTest.java b/src/test/java/org/scijava/convert/ConvertServiceTest.java index 7e214a00c..e870723e8 100644 --- a/src/test/java/org/scijava/convert/ConvertServiceTest.java +++ b/src/test/java/org/scijava/convert/ConvertServiceTest.java @@ -35,7 +35,6 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; import java.lang.reflect.Type; import java.math.BigDecimal; @@ -86,6 +85,7 @@ public class ConvertServiceTest { @Before public void setUp() { + @SuppressWarnings("resource") final Context context = new Context(ConvertService.class); convertService = context.getService(ConvertService.class); } @@ -154,8 +154,14 @@ public void testArrays() { testIntechangeable(char[].class, CharArray.class); testIntechangeable(boolean[].class, BoolArray.class); - // Test that primitive [] can not be converted to mismatched PrimitiveArray - assertFalse(convertService.supports(int[].class, LongArray.class)); + // Test that primitive [] can be cross-converted to mismatched PrimitiveArray + assertTrue(convertService.supports(int[].class, LongArray.class)); + final LongArray crossConverted = // + convertService.convert(new int[] {2, 3, 5}, LongArray.class); + assertEquals(3, crossConverted.size()); + assertEquals(2L, (long) crossConverted.get(0)); + assertEquals(3L, (long) crossConverted.get(1)); + assertEquals(5L, (long) crossConverted.get(2)); // Test that lists can be converted to any primitive [] final List list = new ArrayList<>(); @@ -219,8 +225,10 @@ public void testCanConvert() { assertTrue(convertService.supports(HashSet.class, ArrayList.class)); assertTrue(convertService.supports(long.class, Date.class)); + // check conversion to collection type + assertTrue(convertService.supports(Collection.class, List.class)); + // check lack of conversion of various types w/o appropriate constructor - assertFalse(convertService.supports(Collection.class, List.class)); assertFalse(convertService.supports(int.class, Date.class)); } @@ -334,19 +342,11 @@ public void testConvertSubclass() { assertEquals("Bar", objectToHisList.get(1)); // ArrayList subclass to ArrayList subclass - // This surprisingly works due to type erasure... dangerous stuff. final NumberList hisToNumberList = convertService.convert(hisList, NumberList.class); assertEquals(2, hisToNumberList.size()); - assertEquals("Foo", hisToNumberList.get(0)); - assertEquals("Bar", hisToNumberList.get(1)); - try { - final Number n0 = hisToNumberList.get(0); - fail("expected ClassCastException but got: " + n0); - } - catch (final ClassCastException exc) { - // NB: Exception expected. - } + assertNull(hisToNumberList.get(0)); + assertNull(hisToNumberList.get(1)); } /** @@ -397,11 +397,15 @@ class Struct { assertEquals(123456789012.0, struct.myDoubles.get(0), 0.0); assertEquals(987654321098.0, struct.myDoubles.get(1), 0.0); - // Conversion to a list of strings (with no generic parameter) fails. + // Conversion to a list of strings (with no generic parameter) succeeds. setFieldValue(struct, "myStrings", longArray); - assertNull(struct.myStrings); + assertNotNull(struct.myStrings); + System.out.println(struct.myStrings); + assertEquals(2, struct.myStrings.size()); + assertEquals("123456789012", struct.myStrings.get(0)); + assertEquals("987654321098", struct.myStrings.get(1)); } /** @@ -460,7 +464,6 @@ class Struct { public void testBadPrimitiveArray() { class Struct { - @SuppressWarnings("unused") private int[] intArray; } final Struct struct = new Struct(); @@ -741,11 +744,8 @@ private List getValueList(final T... values) { * Helper class for testing conversion of one {@link ArrayList} subclass to * another. */ - public static class HisList extends ArrayList { - public HisList() { - super(); - } - public HisList(final Collection c) { + public static class HerList extends ArrayList { + public HerList(final Collection c) { super(c); } } @@ -754,8 +754,11 @@ public HisList(final Collection c) { * Helper class for testing conversion of one {@link ArrayList} subclass to * another. */ - public static class HerList extends ArrayList { - public HerList(final Collection c) { + public static class HisList extends ArrayList { + public HisList() { + super(); + } + public HisList(final Collection c) { super(c); } } diff --git a/src/test/java/org/scijava/convert/ConverterTest.java b/src/test/java/org/scijava/convert/ConverterTest.java index 873be832a..27ae140b3 100644 --- a/src/test/java/org/scijava/convert/ConverterTest.java +++ b/src/test/java/org/scijava/convert/ConverterTest.java @@ -57,13 +57,12 @@ public class ConverterTest { /** * Test case for the {@link NullConverter} */ - @SuppressWarnings("deprecation") @Test public void testNullConverter() { final NullConverter nc = new NullConverter(); assertFalse(nc.canConvert(Object.class, Object.class)); assertFalse(nc.canConvert(Object.class, (Type) Object.class)); - assertFalse(nc.canConvert((Class) null, Object.class)); + assertTrue(nc.canConvert((Class) null, Object.class)); assertTrue(nc.canConvert((Object) null, Object.class)); assertTrue(nc.canConvert((ConverterTest) null, ArrayList.class)); assertNull(nc.convert((Object) null, Object.class)); diff --git a/src/test/java/org/scijava/convert/DefaultConverterTest.java b/src/test/java/org/scijava/convert/DefaultConverterTest.java index 599da290b..06394fafe 100644 --- a/src/test/java/org/scijava/convert/DefaultConverterTest.java +++ b/src/test/java/org/scijava/convert/DefaultConverterTest.java @@ -28,6 +28,7 @@ */ package org.scijava.convert; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -56,33 +57,31 @@ public void setUp() { converter = new DefaultConverter(); } - // NB: The commented out tests do not currently pass, but many should. - // See: https://github.com/scijava/scijava-common/issues/450 - @Test public void testObjectToObjectArray() { Object o = new Object(); -// assertTrue(converter.canConvert(o, Object[].class)); + assertTrue(converter.canConvert(o, Object[].class)); Object[] result = converter.convert(o, Object[].class); assertNotNull(result); assertEquals(1, result.length); -// assertSame(o, result[0]); + assertSame(o, result[0]); } @Test public void testIntToObjectArray() { int v = 1; -// assertTrue(converter.canConvert(v, Object[].class)); + assertTrue(converter.canConvert(v, Object[].class)); Object[] result = converter.convert(v, Object[].class); assertNotNull(result); assertEquals(1, result.length); -// assertSame(v, result[0]); + assertSame(v, result[0]); } @Test public void testIntToPrimitiveIntArray() { int v = 2; -// assertTrue(converter.canConvert(v, int[].class)); + assertTrue(converter.supports(new ConversionRequest(v, int[].class))); + assertTrue(converter.canConvert(v, int[].class)); int[] result = converter.convert(v, int[].class); assertNotNull(result); assertEquals(1, result.length); @@ -92,7 +91,7 @@ public void testIntToPrimitiveIntArray() { @Test public void testIntToBoxedIntegerArray() { int v = 3; -// assertTrue(converter.canConvert(v, Integer[].class)); + assertTrue(converter.canConvert(v, Integer[].class)); Integer[] result = converter.convert(v, Integer[].class); assertNotNull(result); assertEquals(1, result.length); @@ -102,7 +101,7 @@ public void testIntToBoxedIntegerArray() { @Test public void testByteToPrimitiveDoubleArray() { byte v = 4; -// assertTrue(converter.canConvert(v, double[].class)); + assertTrue(converter.canConvert(v, double[].class)); double[] result = converter.convert(v, double[].class); assertNotNull(result); assertEquals(1, result.length); @@ -112,7 +111,7 @@ public void testByteToPrimitiveDoubleArray() { @Test public void testByteToBoxedDoubleArray() { byte v = 4; -// assertTrue(converter.canConvert(v, Double[].class)); + assertTrue(converter.canConvert(v, Double[].class)); Double[] result = converter.convert(v, Double[].class); assertNotNull(result); assertEquals(1, result.length); @@ -122,17 +121,17 @@ public void testByteToBoxedDoubleArray() { @Test public void testStringToObjectArray() { String s = "Pumpernickel"; -// assertTrue(converter.canConvert(s, Object[].class)); + assertTrue(converter.canConvert(s, Object[].class)); Object[] result = converter.convert(s, Object[].class); assertNotNull(result); assertEquals(1, result.length); -// assertSame(s, result[0]); + assertSame(s, result[0]); } @Test public void testStringToStringArray() { String s = "smorgasbord"; -// assertTrue(converter.canConvert(s, String[].class)); + assertTrue(converter.canConvert(s, String[].class)); String[] result = converter.convert(s, String[].class); assertNotNull(result); assertEquals(1, result.length); @@ -141,6 +140,7 @@ public void testStringToStringArray() { @Test public void testObjectToCollection() throws NoSuchFieldException { + @SuppressWarnings("unused") class Struct { private Collection collectionOfObjects; private List listOfObjects; @@ -148,7 +148,7 @@ class Struct { private List listOfDoubles; private Set setOfObjects; } - + Type collectionOfObjectsType = Struct.class.getDeclaredField("collectionOfObjects").getGenericType(); Type listOfObjectsType = Struct.class.getDeclaredField("listOfObjects").getGenericType(); Type listOfStringsType = Struct.class.getDeclaredField("listOfStrings").getGenericType(); @@ -156,30 +156,39 @@ class Struct { Type setOfObjectsType = Struct.class.getDeclaredField("setOfObjects").getGenericType(); Object o = new Object(); -// assertTrue(converter.canConvert(o, collectionOfObjectsType)); + + assertTrue(converter.canConvert(o, Collection.class)); + assertTrue(converter.canConvert(o, List.class)); + assertTrue(converter.canConvert(o, Set.class)); + + assertCollection(o, o, converter.convert(o, Collection.class), Collection.class); + assertCollection(o, o, converter.convert(o, List.class), List.class); + assertCollection(o, o, converter.convert(o, Set.class), Set.class); + + assertTrue(converter.canConvert(o, collectionOfObjectsType)); assertTrue(converter.canConvert(o, listOfObjectsType)); assertTrue(converter.canConvert(o, listOfStringsType)); assertTrue(converter.canConvert(o, listOfDoublesType)); assertTrue(converter.canConvert(o, setOfObjectsType)); -// assertCollection(o, converter.convert(o, collectionOfObjectsType), Collection.class); -// assertCollection(o, converter.convert(o, listOfObjectsType), List.class); -// assertCollection(o, converter.convert(o, listOfStringsType), List.class); -// assertCollection(o, converter.convert(o, listOfDoublesType), List.class); -// assertCollection(o, converter.convert(o, setOfObjectsType), Set.class); + assertCollection(o, o, converter.convert(o, collectionOfObjectsType), Collection.class); + assertCollection(o, o, converter.convert(o, listOfObjectsType), List.class); + assertCollection(o, o.toString(), converter.convert(o, listOfStringsType), List.class); + assertCollection(o, null, converter.convert(o, listOfDoublesType), List.class); + assertCollection(o, o, converter.convert(o, setOfObjectsType), Set.class); String s = "Thingamawhatsit"; -// assertTrue(converter.canConvert(s, collectionOfObjectsType)); + assertTrue(converter.canConvert(s, collectionOfObjectsType)); assertTrue(converter.canConvert(s, listOfObjectsType)); assertTrue(converter.canConvert(s, listOfStringsType)); assertTrue(converter.canConvert(s, listOfDoublesType)); assertTrue(converter.canConvert(s, setOfObjectsType)); -// assertCollection(s, converter.convert(s, collectionOfObjectsType), Collection.class); -// assertCollection(s, converter.convert(s, listOfObjectsType), List.class); - assertCollection(s, converter.convert(s, listOfStringsType), List.class); -// assertCollection(s, converter.convert(s, listOfDoublesType), List.class); -// assertCollection(s, converter.convert(s, setOfObjectsType), Set.class); + assertCollection(s, s, converter.convert(s, collectionOfObjectsType), Collection.class); + assertCollection(s, s, converter.convert(s, listOfObjectsType), List.class); + assertCollection(s, s, converter.convert(s, listOfStringsType), List.class); + assertCollection(s, null, converter.convert(s, listOfDoublesType), List.class); + assertCollection(s, s, converter.convert(s, setOfObjectsType), Set.class); // TODO: Test more things, covering the equivalent of all *To*Array above. } @@ -217,9 +226,11 @@ public void testStringToCharacter() { public void testStringToCharacterArray() { String plan = "Step 0: there is no plan"; -// assertTrue(converter.canConvert(plan, char[].class)); -// assertArrayEquals(plan.toCharArray(), converter.convert(plan, char[].class)); - // TODO: Test Character[] also. + assertTrue(converter.canConvert(plan, char[].class)); + final char[] converted = converter.convert(plan, char[].class); + assertArrayEquals(plan.toCharArray(), converted); + + // NB: Conversion to Character[] does not work the same way. } private enum Gem { @@ -240,7 +251,6 @@ public void testStringToEnum() { public static class StringWrapper { public String s; - @SuppressWarnings("unused") public StringWrapper(String s) { this.s = s; } } @@ -256,13 +266,14 @@ public void testConstructorConversion() { // -- Helper methods -- - private static void assertCollection(Object o, Object collection, - Class collectionClass) + private static void assertCollection(Object o, Object expected, + Object collection, Class collectionClass) { assertNotNull(collection); assertTrue(collectionClass.isInstance(collection)); assertEquals(1, ((Collection) collection).size()); - assertSame(o, ((Collection) collection).iterator().next()); + Object actual = ((Collection) collection).iterator().next(); + if (o == expected) assertSame(expected, actual); + else assertEquals(expected, actual); // o was converted to element type } - } diff --git a/src/test/java/org/scijava/util/ConversionUtilsTest.java b/src/test/java/org/scijava/util/ConversionUtilsTest.java index 3df7223ee..a6a49d3b3 100644 --- a/src/test/java/org/scijava/util/ConversionUtilsTest.java +++ b/src/test/java/org/scijava/util/ConversionUtilsTest.java @@ -177,11 +177,14 @@ class Struct { assertEquals(123456789012.0, struct.myDoubles.get(0), 0.0); assertEquals(987654321098.0, struct.myDoubles.get(1), 0.0); - // Conversion to a list of strings (with no generic parameter) fails. + // Conversion to a list of strings (with no generic parameter) succeeds. setFieldValue(struct, "myStrings", longArray); - assertNull(struct.myStrings); + assertNotNull(struct.myStrings); + assertEquals(2, struct.myStrings.size()); + assertEquals("123456789012", struct.myStrings.get(0)); + assertEquals("987654321098", struct.myStrings.get(1)); } /** @@ -239,7 +242,6 @@ class Struct { public void testBadPrimitiveArray() { class Struct { - @SuppressWarnings("unused") private int[] intArray; } final Struct struct = new Struct(); @@ -256,7 +258,8 @@ class Struct { public void testIncompatibleCollections() { class Struct { - private Double[] doubleArray; + private double[] primitiveDoubleArray; + private Double[] boxedDoubleArray; private List numberList; private Set setOfIntegerArrays; } @@ -266,11 +269,17 @@ class Struct { // collection/array objects, even if some or all of the constituent elements // cannot be converted to the array/collection component/element type. - // Test object to incompatible array type - setFieldValue(struct, "doubleArray", "not a double array"); - assertNotNull(struct.doubleArray); - assertEquals(1, struct.doubleArray.length); - assertNull(struct.doubleArray[0]); + // Test object to incompatible primitive array type + setFieldValue(struct, "primitiveDoubleArray", "not a double array"); + assertNotNull(struct.primitiveDoubleArray); + assertEquals(1, struct.primitiveDoubleArray.length); + assertEquals(0.0, struct.primitiveDoubleArray[0], 0.0); + + // Test object to incompatible non-primitive array type + setFieldValue(struct, "boxedDoubleArray", "not a double array"); + assertNotNull(struct.boxedDoubleArray); + assertEquals(1, struct.boxedDoubleArray.length); + assertNull(struct.boxedDoubleArray[0]); // Test object to incompatible List type setFieldValue(struct, "numberList", "not actually a list of numbers"); From 279415d7295c2518b4158316ab1d5d5591c0fbb2 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 28 Feb 2023 15:11:55 -0600 Subject: [PATCH 073/185] Push abstract class methods up to default methods Move abstract method implementations from AbstractConverter to Converter, and from AbstractConvertService to ConvertService. --- .../convert/AbstractConvertService.java | 130 +--------------- .../scijava/convert/AbstractConverter.java | 92 +---------- .../org/scijava/convert/ConvertService.java | 146 +++++++++++++----- .../java/org/scijava/convert/Converter.java | 146 ++++++++++++------ 4 files changed, 213 insertions(+), 301 deletions(-) diff --git a/src/main/java/org/scijava/convert/AbstractConvertService.java b/src/main/java/org/scijava/convert/AbstractConvertService.java index 748c0c1a1..15f7812c8 100644 --- a/src/main/java/org/scijava/convert/AbstractConvertService.java +++ b/src/main/java/org/scijava/convert/AbstractConvertService.java @@ -29,12 +29,6 @@ package org.scijava.convert; -import java.lang.reflect.Type; -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.Set; - import org.scijava.plugin.AbstractHandlerService; /** @@ -46,127 +40,5 @@ public abstract class AbstractConvertService // extends AbstractHandlerService> // implements ConvertService { - - // -- ConversionService methods -- - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public Class> getPluginType() { - return (Class) Converter.class; - } - - @Override - public Class getType() { - return ConversionRequest.class; - } - - @Override - public Converter getHandler(final Object src, final Class dest) { - return getHandler(new ConversionRequest(src, dest)); - } - - @Override - public Converter getHandler(final Class src, final Class dest) { - return getHandler(new ConversionRequest(src, dest)); - } - - @Override - public Converter getHandler(final Object src, final Type dest) { - return getHandler(new ConversionRequest(src, dest)); - } - - @Override - public Converter getHandler(final Class src, final Type dest) { - return getHandler(new ConversionRequest(src, dest)); - } - - @Override - public boolean supports(final Object src, final Class dest) { - return supports(new ConversionRequest(src, dest)); - } - - @Override - public boolean supports(final Class src, final Class dest) { - return supports(new ConversionRequest(src, dest)); - } - - @Override - public boolean supports(final Object src, final Type dest) { - return supports(new ConversionRequest(src, dest)); - } - - @Override - public boolean supports(final Class src, final Type dest) { - return supports(new ConversionRequest(src, dest)); - } - - @Override - public Collection getCompatibleInputs(final Class dest) { - final Set objects = new LinkedHashSet<>(); - - for (final Converter c : getInstances()) { - if (dest.isAssignableFrom(c.getOutputType())) { - c.populateInputCandidates(objects); - } - } - - return objects; - } - - @Override - public Object convert(final Object src, final Type dest) { - return convert(new ConversionRequest(src, dest)); - } - - @Override - public T convert(final Object src, final Class dest) { - // NB: repeated code with convert(ConversionRequest), because the - // handler's convert method respects the T provided - final Converter handler = getHandler(src, dest); - return handler == null ? null : handler.convert(src, dest); - } - - @Override - public Object convert(final ConversionRequest request) { - final Converter handler = getHandler(request); - return handler == null ? null : handler.convert(request); - } - - @Override - public Collection> getCompatibleInputClasses(final Class dest) { - final Set> compatibleClasses = new HashSet<>(); - - for (final Converter converter : getInstances()) { - addIfMatches(dest, converter.getOutputType(), converter.getInputType(), compatibleClasses); - } - - return compatibleClasses; - } - - @Override - public Collection> getCompatibleOutputClasses(final Class source) { - final Set> compatibleClasses = new HashSet<>(); - - for (final Converter converter : getInstances()) { - try { - addIfMatches(source, converter.getInputType(), converter.getOutputType(), compatibleClasses); - } - catch (final Throwable t) { - log().error("Malfunctioning converter plugin: " + // - converter.getClass().getName(), t); - } - } - - return compatibleClasses; - } - - // -- Helper methods -- - - /** - * Test two classes; if they match, a third class is added to the provided - * set of classes. - */ - private void addIfMatches(final Class c1, final Class c2, final Class toAdd, final Set> classes) { - if (c1 == c2) - classes.add(toAdd); - } + // NB: This layer remains merely for backwards compatibility. } diff --git a/src/main/java/org/scijava/convert/AbstractConverter.java b/src/main/java/org/scijava/convert/AbstractConverter.java index 244ca88bc..7a7a429f6 100644 --- a/src/main/java/org/scijava/convert/AbstractConverter.java +++ b/src/main/java/org/scijava/convert/AbstractConverter.java @@ -29,37 +29,17 @@ package org.scijava.convert; -import java.lang.reflect.Type; import java.util.Collection; import org.scijava.object.ObjectService; import org.scijava.plugin.AbstractHandlerPlugin; import org.scijava.plugin.Parameter; -import org.scijava.util.Types; /** * Abstract superclass for {@link Converter} plugins. Performs appropriate * dispatching of {@link #canConvert(ConversionRequest)} and * {@link #convert(ConversionRequest)} calls based on the actual state of the * given {@link ConversionRequest}. - *

    - * Note that the {@link #supports(ConversionRequest)} method is overridden as - * well, to delegate to the appropriate {@link #canConvert}. - *

    - *

    - * NB: by default, the {@link #populateInputCandidates(Collection)} method has a - * dummy implementation. Effectively, this is opt-in behavior. If a converter - * implementation would like to suggest candidates for conversion, this method - * can be overridden. - *

    - *

    - * NB: by default, the provied {@link #canConvert} methods will return - * {@code false} if the input is {@code null}. This allows {@link Converter} - * implementors to assume any input is non-{@code null} - but this behavior is - * overridden. Casting {@code null Object} inputs is handled by the - * {@link NullConverter}, while {@code null class} inputs are handled by the - * {@link DefaultConverter}. - *

    * * @author Mark Hiner */ @@ -72,59 +52,7 @@ public abstract class AbstractConverter extends @Parameter(required = false) private ObjectService objectService; - // -- ConversionHandler methods -- - - @Override - public boolean canConvert(final ConversionRequest request) { - Object src = request.sourceObject(); - if (src == null) { - Class srcClass = request.sourceClass(); - if (request.destType() != null) return canConvert(srcClass, request.destType()); - return canConvert(srcClass, request.destClass()); - } - - if (request.destType() != null) return canConvert(src, request.destType()); - return canConvert(src, request.destClass()); - } - - @Override - public boolean canConvert(final Object src, final Type dest) { - if (src == null) return false; - final Class srcClass = src.getClass(); - return canConvert(srcClass, dest); - } - - @Override - public boolean canConvert(final Object src, final Class dest) { - if (src == null) return false; - final Class srcClass = src.getClass(); - - return canConvert(srcClass, dest); - } - - @Override - public boolean canConvert(final Class src, final Class dest) { - if (src == null) return false; - final Class saneSrc = Types.box(src); - final Class saneDest = Types.box(dest); - return Types.isAssignable(saneSrc, getInputType()) && - Types.isAssignable(getOutputType(), saneDest); - } - - @Override - public Object convert(final Object src, final Type dest) { - final Class destClass = Types.raw(dest); - return convert(src, destClass); - } - - @Override - public Object convert(final ConversionRequest request) { - if (request.destType() != null) { - return convert(request.sourceObject(), request.destType()); - } - - return convert(request.sourceObject(), request.destClass()); - } + // -- Converter methods -- @Override public void populateInputCandidates(final Collection objects) { @@ -138,20 +66,8 @@ public void populateInputCandidates(final Collection objects) { @Override public boolean supports(final ConversionRequest request) { - return canConvert(request); - } - - @Override - public Class getType() { - return ConversionRequest.class; - } - - // -- Deprecated API -- - - @Override - @Deprecated - public boolean canConvert(final Class src, final Type dest) { - final Class destClass = Types.raw(dest); - return canConvert(src, destClass); + // NB: Overridden just for backwards compatibility, so that + // downstream classes which call super.supports do the right thing. + return Converter.super.supports(request); } } diff --git a/src/main/java/org/scijava/convert/ConvertService.java b/src/main/java/org/scijava/convert/ConvertService.java index 9c5976521..6bce9a48b 100644 --- a/src/main/java/org/scijava/convert/ConvertService.java +++ b/src/main/java/org/scijava/convert/ConvertService.java @@ -31,14 +31,17 @@ import java.lang.reflect.Type; import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; import org.scijava.plugin.HandlerService; import org.scijava.service.SciJavaService; /** - * Service for converting between types using an extensible plugin: - * {@link Converter}. Contains convenience signatures for the - * {@link #getHandler} and {@link #supports} methods to avoid the need to create + * Service for converting between types using an {@link Converter} plugins. + * Contains convenience signatures for the {@link #getHandler} and + * {@link #supports} methods to avoid the need to create * {@link ConversionRequest} objects. * * @see ConversionRequest @@ -51,83 +54,148 @@ public interface ConvertService extends /** * @see Converter#convert(Object, Type) */ - Object convert(Object src, Type dest); + default Object convert(final Object src, final Type dest) { + return convert(new ConversionRequest(src, dest)); + } /** * @see Converter#convert(Object, Class) */ - T convert(Object src, Class dest); + default T convert(final Object src, final Class dest) { + // NB: repeated code with convert(ConversionRequest), because the + // handler's convert method respects the T provided + final Converter handler = getHandler(src, dest); + return handler == null ? null : handler.convert(src, dest); + } /** * @see Converter#convert(ConversionRequest) */ - Object convert(ConversionRequest request); + default Object convert(final ConversionRequest request) { + final Converter handler = getHandler(request); + return handler == null ? null : handler.convert(request); + } /** * @see HandlerService#supports(Object) */ - Converter getHandler(Object src, Class dest); + default Converter getHandler(final Object src, final Type dest) { + return getHandler(new ConversionRequest(src, dest)); + } /** * @see HandlerService#supports(Object) */ - Converter getHandler(Object src, Type dest); + default Converter getHandler(final Object src, final Class dest) { + return getHandler(new ConversionRequest(src, dest)); + } /** - * @see HandlerService#supports(Object) + * @see HandlerService#getHandler(Object) */ - boolean supports(Object src, Class dest); + default Converter getHandler(final Class src, final Type dest) { + return getHandler(new ConversionRequest(src, dest)); + } /** - * @see HandlerService#supports(Object) + * @see HandlerService#getHandler(Object) */ - boolean supports(Object src, Type dest); + default Converter getHandler(final Class src, final Class dest) { + return getHandler(new ConversionRequest(src, dest)); + } /** - * @return A collection of instances that could be converted to the - * specified class. + * @see HandlerService#supports(Object) */ - Collection getCompatibleInputs(Class dest); + default boolean supports(final Object src, final Type dest) { + return supports(new ConversionRequest(src, dest)); + } /** - * @return A collection of all classes that could potentially be converted - * to the specified class. + * @see HandlerService#supports(Object) */ - Collection> getCompatibleInputClasses(Class dest); + default boolean supports(final Object src, final Class dest) { + return supports(new ConversionRequest(src, dest)); + } /** - * @return A collection of all classes that could potentially be converted - * from the specified class. + * @see HandlerService#supports(Object) */ - Collection> getCompatibleOutputClasses(Class dest); - - // -- Deprecated API -- + default boolean supports(final Class src, final Type dest) { + return supports(new ConversionRequest(src, dest)); + } /** - * @see HandlerService#getHandler(Object) - * @deprecated Use {@link #getHandler(Object, Class)} + * @see HandlerService#supports(Object) */ - @Deprecated - Converter getHandler(Class src, Class dest); + default boolean supports(final Class src, final Class dest) { + return supports(new ConversionRequest(src, dest)); + } /** - * @see HandlerService#getHandler(Object) - * @deprecated Use {@link #getHandler(Object, Type)} + * @return A collection of instances that could be converted to the + * specified class. */ - @Deprecated - Converter getHandler(Class src, Type dest); + default Collection getCompatibleInputs(final Class dest) { + final Set objects = new LinkedHashSet<>(); + + for (final Converter c : getInstances()) { + if (dest.isAssignableFrom(c.getOutputType())) { + c.populateInputCandidates(objects); + } + } + + return objects; + } /** - * @see HandlerService#supports(Object) - * @deprecated Use {@link #supports(Object, Class)} + * @return A collection of all classes that could potentially be converted + * to the specified class. */ - @Deprecated - boolean supports(Class src, Class dest); + default Collection> getCompatibleInputClasses(final Class dest) { + final Set> compatibleClasses = new HashSet<>(); + + for (final Converter converter : getInstances()) { + if (dest == converter.getOutputType()) // + compatibleClasses.add(converter.getInputType()); + } + + return compatibleClasses; + } /** - * @see HandlerService#supports(Object) - * @deprecated Use {@link #supports(Object, Type)} + * @return A collection of all classes that could potentially be converted + * from the specified class. */ - @Deprecated - boolean supports(Class src, Type dest); + default Collection> getCompatibleOutputClasses(final Class source) { + final Set> compatibleClasses = new HashSet<>(); + + for (final Converter converter : getInstances()) { + try { + if (source == converter.getInputType()) // + compatibleClasses.add(converter.getOutputType()); + } + catch (final Throwable t) { + log().error("Malfunctioning converter plugin: " + // + converter.getClass().getName(), t); + } + } + + return compatibleClasses; + } + + // -- PTService methods -- + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + default Class> getPluginType() { + return (Class) Converter.class; + } + + // -- Typed methods -- + + @Override + default Class getType() { + return ConversionRequest.class; + } } diff --git a/src/main/java/org/scijava/convert/Converter.java b/src/main/java/org/scijava/convert/Converter.java index 2654216ee..4280789ff 100644 --- a/src/main/java/org/scijava/convert/Converter.java +++ b/src/main/java/org/scijava/convert/Converter.java @@ -32,15 +32,24 @@ import java.lang.reflect.Type; import java.util.Collection; import java.util.List; +import java.util.Queue; import java.util.Set; import org.scijava.object.ObjectService; import org.scijava.plugin.HandlerPlugin; import org.scijava.plugin.Plugin; +import org.scijava.util.Types; /** * Extensible conversion {@link Plugin} for converting between classes and * types. + *

    + * NB: by default, the provided {@link #canConvert} methods will return + * {@code false} if the input is {@code null}. This allows {@link Converter} + * implementors to assume any input is non-{@code null}. Casting + * {@code null Object} inputs is handled by the {@link NullConverter}, while + * {@code null} class inputs are handled by the {@link DefaultConverter}. + *

    * * @see ConversionRequest * @author Mark Hiner @@ -55,41 +64,107 @@ public interface Converter extends HandlerPlugin { * * @see #convert(ConversionRequest) */ - boolean canConvert(ConversionRequest request); + default boolean canConvert(final ConversionRequest request) { + if (request == null) return false; + final Object src = request.sourceObject(); + final Type destType = request.destType(); + if (src != null && destType != null) { + return canConvert(src, destType); + } + if (src != null) { + return canConvert(src, request.destClass()); + } + if (destType != null) { + return canConvert(request.sourceClass(), destType); + } + return canConvert(request.sourceClass(), request.destClass()); + } /** * Checks whether the given object's type can be converted to the specified * type. + * + * @see #convert(Object, Type) + */ + default boolean canConvert(final Object src, final Type dest) { + if (src == null || dest == null) return false; + return canConvert(src.getClass(), dest); + } + + /** + * Checks whether the given object's type can be converted to the specified + * type. + * + * @see #convert(Object, Class) + */ + default boolean canConvert(final Object src, final Class dest) { + if (src == null) return false; + Class srcClass = src.getClass(); + return canConvert(srcClass, dest); + } + + /** + * Checks whether objects of the given class can be converted to the specified + * type. *

    * Note that this does not necessarily entail that - * {@link #convert(Object, Type)} on that specific object will succeed. For - * example: {@code canConvert("5.1", int.class)} will return {@code true} - * because a {@link String} can in general be converted to an {@code int}, but - * calling {@code convert("5.1", int.class)} will throw a + * {@link #convert(Object, Type)} on a specific object of the given source + * class will succeed. For example: + * {@code canConvert(String.class, List)} will return {@code true} + * because a {@link String} can in general be converted to an {@code Integer} + * and then wrapped into a {@code List}, but calling + * {@code convert("5.1", List)} will throw a * {@link NumberFormatException} when the conversion is actually attempted via * the {@link Integer#Integer(String)} constructor. *

    - * + * * @see #convert(Object, Type) */ - boolean canConvert(Object src, Type dest); + default boolean canConvert(final Class src, final Type dest) { + final Class destClass = Types.raw(dest); + return canConvert(src, destClass); + } /** - * Checks whether the given object's type can be converted to the specified + * Checks whether objects of the given class can be converted to the specified * type. *

    * Note that this does not necessarily entail that - * {@link #convert(Object, Class)} on that specific object will succeed. For - * example: {@code canConvert("5.1", int.class)} will return {@code true} + * {@link #convert(Object, Class)} on a specific object of the given source + * class will succeed. For example: + * {@code canConvert(String.class, int.class)} will return {@code true} * because a {@link String} can in general be converted to an {@code int}, but * calling {@code convert("5.1", int.class)} will throw a * {@link NumberFormatException} when the conversion is actually attempted via * the {@link Integer#Integer(String)} constructor. *

    + * + * @see #convert(Object, Class) + */ + default boolean canConvert(final Class src, final Class dest) { + if (src == null) return false; + final Class saneSrc = Types.box(src); + final Class saneDest = Types.box(dest); + return Types.isAssignable(saneSrc, getInputType()) && // + Types.isAssignable(getOutputType(), saneDest); + } + + /** + * Converts the given {@link ConversionRequest#sourceObject()} to the + * specified {@link ConversionRequest#destClass()} or + * {@link ConversionRequest#destType()}. * * @see #convert(Object, Class) + * @see #convert(Object, Type) + * @param request {@link ConversionRequest} to process. + * @return The conversion output */ - boolean canConvert(Object src, Class dest); + default Object convert(final ConversionRequest request) { + if (request.destType() != null) { + return convert(request.sourceObject(), request.destType()); + } + return convert(request.sourceObject(), request.destClass()); + } /** * As {@link #convert(Object, Class)} but capable of creating and populating @@ -102,14 +177,17 @@ public interface Converter extends HandlerPlugin { *

    * NB: This method should be capable of creating any array type, but if a * {@link Collection} interface or abstract class is provided we can only make - * a best guess as to what container type to instantiate. Defaults are - * provided for {@link Set} and {@link List} subclasses. + * a best guess as to what container type to instantiate; defaults are + * provided for {@link Set}, {@link Queue}, and {@link List}. *

    * * @param src The object to convert. * @param dest Type to which the object should be converted. */ - Object convert(Object src, Type dest); + default Object convert(final Object src, final Type dest) { + final Class destClass = Types.raw(dest); + return convert(src, destClass); + } /** * Converts the given object to an object of the specified type. The object is @@ -126,18 +204,6 @@ public interface Converter extends HandlerPlugin { */ T convert(Object src, Class dest); - /** - * Converts the given {@link ConversionRequest#sourceObject()} to the - * specified {@link ConversionRequest#destClass()} or - * {@link ConversionRequest#destType()}. - * - * @see #convert(Object, Class) - * @see #convert(Object, Type) - * @param request {@link ConversionRequest} to process. - * @return The conversion output - */ - Object convert(ConversionRequest request); - /** * Populates the given collection with objects which are known to exist, and * which are usable as inputs for this converter. @@ -170,25 +236,15 @@ public interface Converter extends HandlerPlugin { */ Class getInputType(); - // -- Deprecated API -- + // -- Typed methods -- - /** - * Checks whether objects of the given class can be converted to the specified - * type. - * - * @see #convert(Object, Type) - * @deprecated Use {@link #canConvert(Object, Type)} - */ - @Deprecated - boolean canConvert(Class src, Type dest); + @Override + default boolean supports(final ConversionRequest request) { + return canConvert(request); + } - /** - * Checks whether objects of the given class can be converted to the specified - * type. - * - * @see #convert(Object, Class) - * @deprecated Use {@link #canConvert(Object, Class)} - */ - @Deprecated - boolean canConvert(Class src, Class dest); + @Override + default Class getType() { + return ConversionRequest.class; + } } From ce135b7c9e3197a87423e9ef0e8fc58f5d400387 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 28 Feb 2023 15:06:44 -0600 Subject: [PATCH 074/185] StringToArrayConverter: fix decoding of parse tree And add test cases to StringToArrayConverterTest. This test now exercises all scenarios described in #450, validating the behavior we want the library to have. Closes #450. --- .../convert/StringToArrayConverter.java | 102 +++++++++-------- .../convert/ArrayToStringConverterTest.java | 34 +++--- .../convert/StringToArrayConverterTest.java | 103 +++++++++++++++--- 3 files changed, 162 insertions(+), 77 deletions(-) diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index 8e6ab7aa9..18c581b32 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -31,10 +31,15 @@ import java.lang.reflect.Array; import java.lang.reflect.Type; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; import org.scijava.Priority; +import org.scijava.parse.Item; import org.scijava.parse.Items; import org.scijava.parse.ParseService; +import org.scijava.parsington.Token; import org.scijava.plugin.Parameter; import org.scijava.plugin.Plugin; import org.scijava.util.Types; @@ -56,14 +61,6 @@ public class StringToArrayConverter extends AbstractConverter { @Parameter(required = false) private ParseService parseService; - @Override - public boolean canConvert(final Class src, final Class dest) { - if (src == null) return false; - final Class saneSrc = Types.box(src); - final Class saneDest = Types.box(dest); - return saneSrc == String.class && saneDest.isArray(); - } - @Override public boolean canConvert(final Object src, final Type dest) { return canConvert(src, Types.raw(dest)); @@ -76,46 +73,39 @@ public boolean canConvert(final Object src, final Class dest) { // First, ensure the base types conform if (!canConvert(src.getClass(), dest)) return false; // Then, ensure we can parse the string - Items tree; try { - tree = parseService.parse((String) src); + parseService.parse((String) src, false); } catch (final IllegalArgumentException e) { return false; } - // We can always convert empty arrays as we don't have to create Objects - if (tree.size() == 0) return true; - // Finally, ensure that we can convert the elements of the array. - // NB this check is merely a heuristic. In the case of a heterogeneous - // array, canConvert may falsely return positive, if later elements in the - // string-ified array cannot be converted into Objects. We make this - // compromise in the interest of speed, however, as ensuring correctness - // would require a premature conversion of the entire array. - Object testSrc = tree.get(0).value(); - Class testDest = unitComponentType(dest); - return convertService.supports(testSrc, testDest); + return true; } @Override - public Object convert(Object src, Type dest) { + public boolean canConvert(final Class src, final Class dest) { + return src == String.class && dest.isArray(); + } + + @Override + public Object convert(final Object src, final Type dest) { final Type componentType = Types.component(dest); if (componentType == null) { throw new IllegalArgumentException(dest + " is not an array type!"); } - try { - return convertToArray( // - parseService.parse((String) src), // - Types.raw(componentType)); - } - catch (final IllegalArgumentException e) { - return null; - } + final List items = parse((String) src); + return convertToArray(items, Types.raw(componentType)); } - @SuppressWarnings("unchecked") @Override - public T convert(Object src, Class dest) { - return (T) convert(src, (Type) dest); + public T convert(final Object src, final Class dest) { + // NB: Invert functional flow from Converter interface: + // Converter: convert(Object, Type) calling convert(Object, Class) + // becomes: convert(Object, Class) calling convert(Object, Type) + final Type destType = dest; + @SuppressWarnings("unchecked") + T result = (T) convert(src, destType); + return result; } @Override @@ -128,35 +118,53 @@ public Class getInputType() { return String.class; } - // -- HELPER METHODS -- // + // -- Helper methods -- /** - * Converts {@code src} into an array of component type {@code componentType} + * Converts {@code src} into an array of component type {@code componentType}. * * @param tree the {@link String} to convert * @param componentType the component type of the output array * @return an array of {@code componentType} whose elements were created from * {@code src} */ - private Object convertToArray(Items tree, final Class componentType) { + private Object convertToArray(final List tree, + final Class componentType) + { // Create the array final Object array = Array.newInstance(componentType, tree.size()); // Set each element of the array for (int i = 0; i < tree.size(); i++) { - Object element = convertService.convert(tree.get(i).value(), componentType); - Array.set(array, i, element); + Object element = tree.get(i); + final Object converted = convertService.convert(element, componentType); + Array.set(array, i, converted); } return array; } - /** - * Similar to {@link Class#getComponentType()}, but handles nested array types - * - * @param c the {@link Class} that may be an array class - * @return the unit component type of {@link Class} {@code c} - */ - private Class unitComponentType(Class c) { - if (!c.isArray()) return c; - return c.getComponentType(); + /** Parses a string to a list, using the {@link ParseService}. */ + private List parse(final String s) { + try { + Items items = parseService.parse(s, false); + return (List) unwrap(items); + } + catch (final IllegalArgumentException e) { + return null; + } + } + + private Object unwrap(final Object o) { + if (o instanceof Collection) { + return ((Collection) o).stream() // + .map(item -> unwrap(item)) // + .collect(Collectors.toList()); + } + if (o instanceof Item) { + return unwrap(((Item) o).value()); + } + if (o instanceof Token) { + return ((Token) o).getToken(); + } + return o; } } diff --git a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java index 36a78a824..17ec928f5 100644 --- a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java +++ b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java @@ -29,11 +29,15 @@ package org.scijava.convert; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import java.util.Arrays; import java.util.List; import org.junit.After; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.scijava.Context; @@ -86,11 +90,11 @@ public void testArrayConversion() { String sFloat = "{1.0, 2.0, 3.0}"; for (Object array : arrays) { // Ensure our Converter can do the conversion - Assert.assertTrue(converter.canConvert(array, String.class)); + assertTrue(converter.canConvert(array, String.class)); // Do the conversion String converted = converter.convert(array, String.class); // Ensure correctness - Assert.assertTrue(converted.equals(sInt) || converted.equals(sFloat)); + assertTrue(converted.equals(sInt) || converted.equals(sFloat)); } } @@ -101,10 +105,10 @@ public void testArrayConversion() { @Test public void test2DArrayConversion() { byte[][] arr = new byte[][] { new byte[] { 0, 1 }, new byte[] { 2, 3 } }; - Assert.assertTrue(converter.canConvert(arr, String.class)); + assertTrue(converter.canConvert(arr, String.class)); String actual = converter.convert(arr, String.class); String expected = "{{0, 1}, {2, 3}}"; - Assert.assertEquals(expected, actual); + assertEquals(expected, actual); } /** @@ -119,10 +123,10 @@ public void test3DArrayConversion() { for (int k = 0; k < 2; k++) arr[i][j][k] = (byte) (i + j + k); - Assert.assertTrue(converter.canConvert(arr, String.class)); + assertTrue(converter.canConvert(arr, String.class)); String actual = converter.convert(arr, String.class); String expected = "{{{0, 1}, {1, 2}}, {{1, 2}, {2, 3}}}"; - Assert.assertEquals(expected, actual); + assertEquals(expected, actual); } /** @@ -132,10 +136,10 @@ public void test3DArrayConversion() { @Test public void testEmptyArrayConversion() { byte[] arr = new byte[0]; - Assert.assertTrue(converter.canConvert(arr, String.class)); + assertTrue(converter.canConvert(arr, String.class)); String actual = converter.convert(arr, String.class); String expected = "{}"; - Assert.assertEquals(expected, actual); + assertEquals(expected, actual); } /** @@ -153,23 +157,21 @@ public void testCyclicConversion() { StringToArrayConverter c2 = new StringToArrayConverter(); context.inject(c2); byte[] actual = c2.convert(converted, byte[].class); - Assert.assertArrayEquals(expected, actual); + assertArrayEquals(expected, actual); } @Test public void testNullConversion() { - String[] s1 = {null}; - String[] s2 = {"null"}; - String[] expected = new String[] {null}; // Do the first conversion ArrayToStringConverter c1 = new ArrayToStringConverter(); context.inject(c1); - String converted = c1.convert(expected, String.class); + String converted = c1.convert(new String[] {null}, String.class); // Try to convert back StringToArrayConverter c2 = new StringToArrayConverter(); context.inject(c2); String[] actual = c2.convert(converted, String[].class); - // NB: we cannot recreate the original {null} state - Assert.assertNull(actual); + assertNotNull(actual); + assertEquals(1, actual.length); + assertEquals("null", actual[0]); } } diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java index 6947a2976..d9d912451 100644 --- a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -29,6 +29,13 @@ package org.scijava.convert; +import static org.junit.Assert.assertArrayEquals; + +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -36,10 +43,6 @@ import org.scijava.Context; import org.scijava.parse.ParseService; -import java.lang.reflect.Array; -import java.util.Arrays; -import java.util.List; - /** * Tests {@link StringToArrayConverter}. * @@ -144,16 +147,6 @@ public void testEmptyArrayConversion() { Assert.assertEquals(0, actual.length); } - /** - * Tests the ability of {@link StringToArrayConverter} in converting only - * arrays whose elements can be converted - */ - @Test - public void testInconvertibleArrayType() { - String s = "{ConverterA}"; - Assert.assertFalse(converter.canConvert(s, Converter[].class)); - } - /** * Tests the special case of {@link String}s */ @@ -194,5 +187,87 @@ public void testCharacterArrayConversion() { Assert.assertArrayEquals(expected, actual); } + @Test + public void testStringToDoubleArraySingleValue() { + assertArrayEquals(new double[] {5}, + converter.convert("5", double[].class), 0); + assertArrayEquals(new Double[] {6d}, + converter.convert("6", Double[].class)); + assertArrayEquals(new double[][] {{7}}, + converter.convert("7", double[][].class)); + assertArrayEquals(new Double[][] {{8d}}, + converter.convert("8", Double[][].class)); + assertArrayEquals(new double[] {0}, + converter.convert("spinach", double[].class), 0); + assertArrayEquals(new Double[] {null}, + converter.convert("kale", Double[].class)); + assertArrayEquals(new double[][] {{0}}, + converter.convert("broccoli", double[][].class)); + assertArrayEquals(new Double[][] {{null}}, + converter.convert("lettuce", Double[][].class)); + } + + @Test + public void testStringToDoubleArray1D() { + // all numbers + assertArrayEquals(new double[] {0, 1, 2, 3}, + converter.convert("{0, 1, 2, 3}", double[].class), 0); + assertArrayEquals(new Double[] {7d, 11d}, + converter.convert("{7, 11}", Double[].class)); + assertArrayEquals(new Double[] {0d, 1d, 2d, 3d}, + converter.convert("{0, 1, 2, 3}", Double[].class)); + + // mixed numbers/non-numbers + assertArrayEquals(new double[] {0, 1, 0, 3}, + converter.convert("{0, 1, kumquat, 3}", double[].class), 0); + assertArrayEquals(new Double[] {4d, null, 5d}, + converter.convert("{4, eggplant, 5}", Double[].class)); + + // all non-numbers + assertArrayEquals(new double[] {0, 0, 0}, + converter.convert("{uno, dos, tres}", double[].class), 0); + assertArrayEquals(new Double[] {null, null, null, null}, + converter.convert("{cuatro, cinco, seis, siete}", Double[].class)); + } + + @Test + public void testStringToDoubleArray2D() { + // all numbers + assertArrayEquals(new double[][] {{0, 1}, {2, 3, 4}}, + converter.convert("{{0, 1}, {2, 3, 4}}", double[][].class)); + assertArrayEquals(new Double[][] {{7d, 11d}, {13d, 17d, 19d}}, + converter.convert("{{7, 11}, {13, 17, 19}}", Double[][].class)); + assertArrayEquals(new Double[][] {{0d, 1d}, {2d, 3d}}, + converter.convert("{{0, 1}, {2, 3}}", Double[][].class)); + + // mixed numbers/non-numbers + assertArrayEquals(new double[][] {{0, 1}, {0, 3}}, + converter.convert("{{0, 1}, {kumquat, 3}}", double[][].class)); + assertArrayEquals(new Double[][] {{4d}, {null, 5d}, {null}}, + converter.convert("{{4}, {eggplant, 5}, {squash}}", Double[][].class)); + + // all non-numbers + assertArrayEquals(new double[][] {{0}, {0, 0}}, + converter.convert("{{uno}, {dos, tres}}", double[][].class)); + assertArrayEquals(new Double[][] {{null, null}, {null, null}}, + converter.convert("{{cuatro, cinco}, {seis, siete}}", Double[][].class)); + } + + @Test + public void testStringToDoubleArray3D() { + final Random r = new Random(0xDA7ABA5E); + final double[][][] ds = new double[r.nextInt(10)][][]; + for (int i=0; i Date: Wed, 1 Mar 2023 21:27:52 -0600 Subject: [PATCH 075/185] Be more permissive with CastingConverter casts --- .../org/scijava/convert/CastingConverter.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/scijava/convert/CastingConverter.java b/src/main/java/org/scijava/convert/CastingConverter.java index fbd62a7bc..e9455c214 100644 --- a/src/main/java/org/scijava/convert/CastingConverter.java +++ b/src/main/java/org/scijava/convert/CastingConverter.java @@ -49,17 +49,30 @@ public boolean canConvert(final Object src, final Class dest) { @Override public boolean canConvert(final Class src, final Type dest) { - // OK if the existing object can be casted - return dest != null && Types.isAssignable(src, dest); + // NB: You might think we want to use Types.isAssignable(src, dest) + // directly here. And you might be right. However, assignment involving + // generic types gets very tricky. If dest is e.g. a wildcard type such as + // "? extends Object", or a type variable such as "C extends Object", then + // no specific class will be assignable to it, because for that ? or C we + // do not know anything about the bound type other than that it's something + // that extends Object, so it could be anything, including things that + // aren't assignable from whatever src is. + // + // Unfortunately, when this casting conversion code was originally written, + // it did not have generics in mind, and calling code will pass in capture + // types (e.g. Type objects gleaned via ModuleItem#getGenericType()) + // expecting them to be convertible as long as dest's raw type(s) are + // compatible targets for src. + // + // And so for backwards compatibility, we continue to behave that way here. + + return dest != null && // + Types.raws(dest).stream().allMatch(c -> c.isAssignableFrom(src)); } @Override public boolean canConvert(final Class src, final Class dest) { - // NB: Invert functional flow from Converter interface: - // Converter: canConvert(Class, Type) -> canConvert(Class, Class) - // becomes: canConvert(Class, Class) -> canConvert(Class, Type) - final Type destType = dest; - return canConvert(src, destType); + return dest != null && dest.isAssignableFrom(src); } @Override From 3e0afe10014db09bd891c4290d994fbdf68f792f Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 2 Mar 2023 14:22:44 -0600 Subject: [PATCH 076/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ba2c4afa9..d76854b60 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.91.0-SNAPSHOT + 2.91.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 9bcf5279c1d4b2e48649d9c59210996f21a65da2 Mon Sep 17 00:00:00 2001 From: Elliott Magnuson Date: Mon, 13 Mar 2023 21:00:32 -0500 Subject: [PATCH 077/185] DefaultIOService: Add concrete methods to resolve Location --- .../java/org/scijava/io/DefaultIOService.java | 19 +++++++++++++++++++ src/main/java/org/scijava/io/IOService.java | 9 ++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/scijava/io/DefaultIOService.java b/src/main/java/org/scijava/io/DefaultIOService.java index fd0d46c01..32f5e5b27 100644 --- a/src/main/java/org/scijava/io/DefaultIOService.java +++ b/src/main/java/org/scijava/io/DefaultIOService.java @@ -61,6 +61,24 @@ public final class DefaultIOService @Parameter private LocationService locationService; + + @Override + public IOPlugin getOpener(final String source) throws IOException { + try { + return getOpener(locationService.resolve(source)); + } catch (URISyntaxException e) { + throw new IOException(e); + } + } + + @Override + public IOPlugin getSaver(D data, String destination) throws IOException { + try { + return getSaver(data, locationService.resolve(destination)); + } catch (URISyntaxException e) { + throw new IOException(e); + } + } @Override public Object open(final String source) throws IOException { @@ -112,4 +130,5 @@ public void save(final Object data, final Location destination) log.error("No Saver IOPlugin found for " + data.toString() + "."); } } + } diff --git a/src/main/java/org/scijava/io/IOService.java b/src/main/java/org/scijava/io/IOService.java index 9dc3c5364..72655ab39 100644 --- a/src/main/java/org/scijava/io/IOService.java +++ b/src/main/java/org/scijava/io/IOService.java @@ -31,7 +31,6 @@ import java.io.IOException; -import org.scijava.io.location.FileLocation; import org.scijava.io.location.Location; import org.scijava.plugin.HandlerService; import org.scijava.service.SciJavaService; @@ -49,9 +48,7 @@ public interface IOService extends HandlerService>, * Gets the most appropriate {@link IOPlugin} for opening data from the given * location. */ - default IOPlugin getOpener(final String source) { - return getOpener(new FileLocation(source)); - } + IOPlugin getOpener(final String source) throws IOException; /** * Gets the most appropriate {@link IOPlugin} for opening data from the given @@ -68,9 +65,7 @@ default IOPlugin getOpener(Location source) { * Gets the most appropriate {@link IOPlugin} for saving data to the given * location. */ - default IOPlugin getSaver(final D data, final String destination) { - return getSaver(data, new FileLocation(destination)); - } + IOPlugin getSaver(final D data, final String destination) throws IOException; /** * Gets the most appropriate {@link IOPlugin} for saving data to the given From ccf35cdbc8d795c097e554febfeb22a5520a2287 Mon Sep 17 00:00:00 2001 From: Elliott Magnuson Date: Thu, 23 Mar 2023 12:43:08 -0500 Subject: [PATCH 078/185] Gateway: add LocationService getter --- src/main/java/org/scijava/AbstractGateway.java | 6 ++++++ src/main/java/org/scijava/Gateway.java | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/org/scijava/AbstractGateway.java b/src/main/java/org/scijava/AbstractGateway.java index 9df93126c..766597967 100644 --- a/src/main/java/org/scijava/AbstractGateway.java +++ b/src/main/java/org/scijava/AbstractGateway.java @@ -42,6 +42,7 @@ import org.scijava.input.InputService; import org.scijava.io.IOService; import org.scijava.io.RecentFileService; +import org.scijava.io.location.LocationService; import org.scijava.log.LogService; import org.scijava.main.MainService; import org.scijava.menu.MenuService; @@ -190,6 +191,11 @@ public InputService input() { public IOService io() { return get(IOService.class); } + + @Override + public LocationService location() { + return get(LocationService.class); + } @Override public LogService log() { diff --git a/src/main/java/org/scijava/Gateway.java b/src/main/java/org/scijava/Gateway.java index 3d5897528..657a7faa4 100644 --- a/src/main/java/org/scijava/Gateway.java +++ b/src/main/java/org/scijava/Gateway.java @@ -40,6 +40,7 @@ import org.scijava.input.InputService; import org.scijava.io.IOService; import org.scijava.io.RecentFileService; +import org.scijava.io.location.LocationService; import org.scijava.log.LogService; import org.scijava.main.MainService; import org.scijava.menu.MenuService; @@ -238,6 +239,13 @@ public interface Gateway extends RichPlugin, Disposable { */ IOService io(); + /** + * Gets this application context's {@link LocationService}. + * + * @return The {@link LocationService} of this application context. + */ + LocationService location(); + /** * Gets this application context's {@link LogService}. * From af02774ab5b146827551d99d45a8a7e94c495aee Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 30 Mar 2023 19:46:32 -0500 Subject: [PATCH 079/185] SystemPropertyArgument: allow any string for keys The previous regex was not allowing colons, which Java definitely allows. But after briefly trying to research what's allowed and what's not, I decided it doesn't really matter, and we should just try setting whatever the user is trying to set, and if it fails with an exception on the Java side, so be it -- but that's no reason not to eagerly reject the expression in this ConsoleArgument plugin. --- src/main/java/org/scijava/console/SystemPropertyArgument.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/console/SystemPropertyArgument.java b/src/main/java/org/scijava/console/SystemPropertyArgument.java index 60f076798..39c100c92 100644 --- a/src/main/java/org/scijava/console/SystemPropertyArgument.java +++ b/src/main/java/org/scijava/console/SystemPropertyArgument.java @@ -44,7 +44,7 @@ @Plugin(type = ConsoleArgument.class) public class SystemPropertyArgument extends AbstractConsoleArgument { - private static final String SYS_PROP_REGEX = "-D([\\w\\._-]+)(=(.*))?"; + private static final String SYS_PROP_REGEX = "-D([^=]+)(=(.*))?"; private static final Pattern SYS_PROP_PAT = Pattern.compile(SYS_PROP_REGEX); // -- Constructor -- From 9db423586112dc287da9b7eae3710b25b694c92f Mon Sep 17 00:00:00 2001 From: hinerm Date: Wed, 12 Apr 2023 11:52:03 -0500 Subject: [PATCH 080/185] POM: update parent to pom-scijava 34.1.0 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index d76854b60..d1cbbefa6 100644 --- a/pom.xml +++ b/pom.xml @@ -5,12 +5,12 @@ org.scijava pom-scijava - 33.2.0 + 34.1.0 scijava-common - 2.91.1-SNAPSHOT + 2.92.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 5f690ceb3532758cb6dffb08da9a8af55725b509 Mon Sep 17 00:00:00 2001 From: hinerm Date: Wed, 12 Apr 2023 11:53:10 -0500 Subject: [PATCH 081/185] Bump to next development cycle Signed-off-by: hinerm --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d1cbbefa6..ad42e0867 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.92.0-SNAPSHOT + 2.92.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 545caf0ab167268201fb5a58c6a06902aa951707 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 19 Apr 2023 12:34:15 -0500 Subject: [PATCH 082/185] Do not hardcode String-to-FileLocation conversions That's what LocationService.resolve is for. --- src/main/java/org/scijava/io/IOPlugin.java | 34 ++++++++++++++----- .../java/org/scijava/io/TypedIOService.java | 16 +++++++-- .../org/scijava/io/event/DataOpenedEvent.java | 10 ++---- .../org/scijava/io/event/DataSavedEvent.java | 9 ++--- .../java/org/scijava/io/event/IOEvent.java | 29 ++++++++++++---- 5 files changed, 66 insertions(+), 32 deletions(-) diff --git a/src/main/java/org/scijava/io/IOPlugin.java b/src/main/java/org/scijava/io/IOPlugin.java index fc797ee29..766f2e55b 100644 --- a/src/main/java/org/scijava/io/IOPlugin.java +++ b/src/main/java/org/scijava/io/IOPlugin.java @@ -30,9 +30,11 @@ package org.scijava.io; import java.io.IOException; +import java.net.URISyntaxException; import org.scijava.io.location.FileLocation; import org.scijava.io.location.Location; +import org.scijava.io.location.LocationService; import org.scijava.plugin.HandlerPlugin; import org.scijava.plugin.Plugin; @@ -58,22 +60,32 @@ public interface IOPlugin extends HandlerPlugin { /** Checks whether the I/O plugin can open data from the given source. */ @SuppressWarnings("unused") default boolean supportsOpen(final String source) { - return supportsOpen(new FileLocation(source)); + try { + return supportsOpen(context().service(LocationService.class).resolve(source)); + } + catch (final URISyntaxException exc) { + return false; + } } /** Checks whether the I/O plugin can open data from the given location. */ - default boolean supportsOpen(Location source) { + default boolean supportsOpen(final Location source) { return false; } /** Checks whether the I/O plugin can save data to the given destination. */ @SuppressWarnings("unused") default boolean supportsSave(final String destination) { - return supportsSave(new FileLocation(destination)); + try { + return supportsSave(context().service(LocationService.class).resolve(destination)); + } + catch (final URISyntaxException exc) { + return false; + } } /** Checks whether the I/O plugin can save data to the given location. */ - default boolean supportsSave(Location destination) { + default boolean supportsSave(final Location destination) { return false; } @@ -85,7 +97,7 @@ default boolean supportsSave(final Object data, final String destination) { return supportsSave(destination) && getDataType().isInstance(data); } - default boolean supportsSave(Object data, Location destination) { + default boolean supportsSave(final Object data, final Location destination) { return supportsSave(destination) && getDataType().isInstance(data); } @@ -96,17 +108,23 @@ default D open(final String source) throws IOException { } /** Opens data from the given location. */ - default D open(Location source) throws IOException { + default D open(final Location source) throws IOException { throw new UnsupportedOperationException(); } + /** Saves the given data to the specified destination. */ @SuppressWarnings("unused") default void save(final D data, final String destination) throws IOException { - save(data, new FileLocation(destination)); + try { + save(data, context().service(LocationService.class).resolve(destination)); + } + catch (final URISyntaxException exc) { + throw new UnsupportedOperationException(exc); + } } /** Saves the given data to the specified location. */ - default void save(D data, Location destination) throws IOException { + default void save(final D data, final Location destination) throws IOException { throw new UnsupportedOperationException(); } diff --git a/src/main/java/org/scijava/io/TypedIOService.java b/src/main/java/org/scijava/io/TypedIOService.java index 711026c5c..5664ec3bb 100644 --- a/src/main/java/org/scijava/io/TypedIOService.java +++ b/src/main/java/org/scijava/io/TypedIOService.java @@ -30,9 +30,11 @@ package org.scijava.io; import java.io.IOException; +import java.net.URISyntaxException; import org.scijava.io.location.FileLocation; import org.scijava.io.location.Location; +import org.scijava.io.location.LocationService; import org.scijava.plugin.HandlerService; import org.scijava.service.SciJavaService; @@ -51,7 +53,12 @@ public interface TypedIOService extends HandlerService> * location. */ default IOPlugin getOpener(final String source) { - return getOpener(new FileLocation(source)); + try { + return getOpener(context().service(LocationService.class).resolve(source)); + } + catch (final URISyntaxException exc) { + return null; + } } /** @@ -70,7 +77,12 @@ default IOPlugin getOpener(Location source) { * location. */ default IOPlugin getSaver(final D data, final String destination) { - return getSaver(data, new FileLocation(destination)); + try { + return getSaver(data, context().service(LocationService.class).resolve(destination)); + } + catch (final URISyntaxException exc) { + return null; + } } /** diff --git a/src/main/java/org/scijava/io/event/DataOpenedEvent.java b/src/main/java/org/scijava/io/event/DataOpenedEvent.java index c2d729e0f..22f9fd4d0 100644 --- a/src/main/java/org/scijava/io/event/DataOpenedEvent.java +++ b/src/main/java/org/scijava/io/event/DataOpenedEvent.java @@ -49,7 +49,7 @@ public DataOpenedEvent(final Location location, final Object data) { */ @Deprecated public DataOpenedEvent(final String source, final Object data) { - this(new FileLocation(source), data); + super(source, data); } /** @@ -57,12 +57,6 @@ public DataOpenedEvent(final String source, final Object data) { */ @Deprecated public String getSource() { - try { - FileLocation fileLocation = (FileLocation) getLocation(); - return fileLocation.getFile().getAbsolutePath(); - } catch(ClassCastException e) { - return getLocation().getURI().toString(); - } + return getDescriptor(); } - } diff --git a/src/main/java/org/scijava/io/event/DataSavedEvent.java b/src/main/java/org/scijava/io/event/DataSavedEvent.java index de82a77ff..67a8b21ad 100644 --- a/src/main/java/org/scijava/io/event/DataSavedEvent.java +++ b/src/main/java/org/scijava/io/event/DataSavedEvent.java @@ -49,7 +49,7 @@ public DataSavedEvent(final Location destination, final Object data) { */ @Deprecated public DataSavedEvent(final String destination, final Object data) { - this(new FileLocation(destination), data); + super(destination, data); } /** @@ -57,11 +57,6 @@ public DataSavedEvent(final String destination, final Object data) { */ @Deprecated public String getDestination() { - try { - FileLocation fileLocation = (FileLocation) getLocation(); - return fileLocation.getFile().getAbsolutePath(); - } catch(ClassCastException e) { - return getLocation().getURI().toString(); - } + return getDescriptor(); } } diff --git a/src/main/java/org/scijava/io/event/IOEvent.java b/src/main/java/org/scijava/io/event/IOEvent.java index 8b3c9fa4b..1147039b3 100644 --- a/src/main/java/org/scijava/io/event/IOEvent.java +++ b/src/main/java/org/scijava/io/event/IOEvent.java @@ -29,9 +29,12 @@ package org.scijava.io.event; +import java.net.URISyntaxException; + import org.scijava.event.SciJavaEvent; import org.scijava.io.location.FileLocation; import org.scijava.io.location.Location; +import org.scijava.io.location.LocationService; /** * An event indicating that I/O (e.g., opening or saving) has occurred. @@ -43,6 +46,10 @@ public abstract class IOEvent extends SciJavaEvent { /** The data location (source or destination). */ private final Location location; + /** @deprecated use {@link #location} instead */ + @Deprecated + private final String descriptor; + /** The data for which I/O took place. */ private final Object data; @@ -51,17 +58,26 @@ public abstract class IOEvent extends SciJavaEvent { */ @Deprecated public IOEvent(final String descriptor, final Object data) { - this(new FileLocation(descriptor), data); + this.location = null; + this.descriptor = descriptor; + this.data = data; } public IOEvent(final Location location, final Object data) { this.location = location; + this.descriptor = null; this.data = data; } /** Gets the data location (source or destination). */ public Location getLocation() { - return location; + if (location != null) return location; + try { + return context().service(LocationService.class).resolve(descriptor); + } + catch (final URISyntaxException exc) { + return null; + } } /** Gets the data for which I/O took place. */ @@ -82,12 +98,11 @@ public String toString() { */ @Deprecated public String getDescriptor() { - try { - FileLocation fileLocation = (FileLocation) getLocation(); + if (descriptor != null) return descriptor; + if (location instanceof FileLocation) { + final FileLocation fileLocation = (FileLocation) location; return fileLocation.getFile().getAbsolutePath(); - } catch(ClassCastException e) { - return getLocation().getURI().toString(); } + return location.getURI().toString(); } - } From 50daafb3b863fbe52b84340ea9af10bb287067f8 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 3 May 2023 11:31:49 -0500 Subject: [PATCH 083/185] Allow contexts to be disposed more than once Subsequent disposals are no-ops, rather than throwing an exception. --- src/main/java/org/scijava/Context.java | 35 +++++++++---- .../java/org/scijava/ContextDisposalTest.java | 51 +++++++++++++++++++ 2 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 src/test/java/org/scijava/ContextDisposalTest.java diff --git a/src/main/java/org/scijava/Context.java b/src/main/java/org/scijava/Context.java index a6892d7bd..7e42f2df2 100644 --- a/src/main/java/org/scijava/Context.java +++ b/src/main/java/org/scijava/Context.java @@ -97,6 +97,12 @@ public class Context implements Disposable, AutoCloseable { */ private boolean strict; + /** + * False if the context is currently active; true if the context + * has already been disposed, or is in the process of being disposed. + */ + private boolean disposed; + /** * Creates a new SciJava application context with all available services. * @@ -418,16 +424,8 @@ public boolean isInjectable(final Class type) { @Override public void dispose() { - final EventService eventService = getService(EventService.class); - if (eventService != null) eventService.publish(new ContextDisposingEvent()); - - // NB: Dispose services in reverse order. - // This may or may not actually be necessary, but seems safer, since - // dependent services will be disposed *before* their dependencies. - final List services = serviceIndex.getAll(); - for (int s = services.size() - 1; s >= 0; s--) { - services.get(s).dispose(); - } + if (disposed) return; + doDispose(true); } // -- AutoCloseable methods -- @@ -580,6 +578,23 @@ private String createMissingServiceMessage( return msg.toString(); } + private synchronized void doDispose(final boolean announce) { + if (disposed) return; + disposed = true; + if (announce) { + final EventService eventService = getService(EventService.class); + if (eventService != null) eventService.publish(new ContextDisposingEvent()); + } + + // NB: Dispose services in reverse order. + // This may or may not actually be necessary, but seems safer, since + // dependent services will be disposed *before* their dependencies. + final List services = serviceIndex.getAll(); + for (int s = services.size() - 1; s >= 0; s--) { + services.get(s).dispose(); + } + } + private static PluginIndex plugins(final boolean empty) { return empty ? new PluginIndex(null) : null; } diff --git a/src/test/java/org/scijava/ContextDisposalTest.java b/src/test/java/org/scijava/ContextDisposalTest.java new file mode 100644 index 000000000..e47fcbc7b --- /dev/null +++ b/src/test/java/org/scijava/ContextDisposalTest.java @@ -0,0 +1,51 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2023 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava; + +import org.junit.Test; + +/** + * Tests disposal of {@link Context}s. + * + * @author Curtis Rueden + */ +public class ContextDisposalTest { + + /** + * Tests that a {@link Context} can be disposed more than once without + * throwing an exception. + */ + @Test + public void testDoubleDisposal() { + final Context context = new Context(); + context.dispose(); + context.dispose(); + } +} From 7daf667d6fc2d357c30d9c3ef4ea57ca8024a29a Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 3 May 2023 11:32:23 -0500 Subject: [PATCH 084/185] Automatically dispose the context on JVM shutdown And make the ThreadService's threads into daemon threads. The danger is that the such threads won't complete pending work. But with the JVM shutdown hook now attempting to dispose the context at that point, the ExecutorService will have a chance to shutdown cleanly. --- src/main/java/org/scijava/Context.java | 3 +++ .../java/org/scijava/thread/DefaultThreadService.java | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/Context.java b/src/main/java/org/scijava/Context.java index 7e42f2df2..63ade880d 100644 --- a/src/main/java/org/scijava/Context.java +++ b/src/main/java/org/scijava/Context.java @@ -290,6 +290,9 @@ public Context(final Collection> serviceClasses, new ServiceHelper(this, serviceClasses, strict); serviceHelper.loadServices(); } + + // If JVM shuts down with context still active, clean up after ourselves. + Runtime.getRuntime().addShutdownHook(new Thread(() -> doDispose(false))); } // -- Context methods -- diff --git a/src/main/java/org/scijava/thread/DefaultThreadService.java b/src/main/java/org/scijava/thread/DefaultThreadService.java index f46952d98..e19f41c5f 100644 --- a/src/main/java/org/scijava/thread/DefaultThreadService.java +++ b/src/main/java/org/scijava/thread/DefaultThreadService.java @@ -173,7 +173,14 @@ public synchronized void dispose() { @Override public Thread newThread(final Runnable r) { final String threadName = contextThreadPrefix() + nextThread++; - return new Thread(r, threadName); + final Thread thread = new Thread(r, threadName); + // NB: Use daemon threads for the thread pool, so that idling threads do + // not prevent the JVM shutdown sequence from starting. The application + // context, and therefore the thread service, will try to dispose itself + // upon JVM shutdown, which will invoke executor.shutdown(), so there + // will be a chance for these threads to complete any pending work. + thread.setDaemon(true); + return thread; } // -- Helper methods -- From 0f6f9164eee16923b98cebf143727138281b829c Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 3 May 2023 11:44:27 -0500 Subject: [PATCH 085/185] DefaultThreadService: let running tasks finish We wait up to 5 seconds for them to terminate. I don't really have a good idea whether this is a good amount of time, but it should be more than enough for common scenarios. At some point, the ThreadService interface could gain methods to override this value, but for now, we hardcode it. --- .../org/scijava/thread/DefaultThreadService.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/org/scijava/thread/DefaultThreadService.java b/src/main/java/org/scijava/thread/DefaultThreadService.java index e19f41c5f..8d0e552bd 100644 --- a/src/main/java/org/scijava/thread/DefaultThreadService.java +++ b/src/main/java/org/scijava/thread/DefaultThreadService.java @@ -39,6 +39,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; import org.scijava.log.LogService; import org.scijava.plugin.Parameter; @@ -58,6 +59,8 @@ public final class DefaultThreadService extends AbstractService implements private static final String SCIJAVA_THREAD_PREFIX = "SciJava-"; + private static final long SHUTDOWN_TIMEOUT = 5000; + private static WeakHashMap parents = new WeakHashMap<>(); @@ -159,11 +162,23 @@ public synchronized void dispose() { disposed = true; if (executor != null) { executor.shutdown(); + try { + executor.awaitTermination(SHUTDOWN_TIMEOUT, TimeUnit.MILLISECONDS); + } + catch (final InterruptedException exc) { + log.debug(exc); + } executor = null; } if (queues != null) { for (final ExecutorService queue : queues.values()) { queue.shutdown(); + try { + queue.awaitTermination(SHUTDOWN_TIMEOUT, TimeUnit.MILLISECONDS); + } + catch (final InterruptedException exc) { + log.debug(exc); + } } } } From 74518c56bc1ae89b184b6d9678f2ec3cd1bb0f5b Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 3 May 2023 11:47:23 -0500 Subject: [PATCH 086/185] DefaultThreadService: fix comment --- src/main/java/org/scijava/thread/DefaultThreadService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/thread/DefaultThreadService.java b/src/main/java/org/scijava/thread/DefaultThreadService.java index 8d0e552bd..168f9a991 100644 --- a/src/main/java/org/scijava/thread/DefaultThreadService.java +++ b/src/main/java/org/scijava/thread/DefaultThreadService.java @@ -192,8 +192,8 @@ public Thread newThread(final Runnable r) { // NB: Use daemon threads for the thread pool, so that idling threads do // not prevent the JVM shutdown sequence from starting. The application // context, and therefore the thread service, will try to dispose itself - // upon JVM shutdown, which will invoke executor.shutdown(), so there - // will be a chance for these threads to complete any pending work. + // upon JVM shutdown, which will invoke executor.awaitTermination(), so + // there will be a chance for these threads to complete any pending work. thread.setDaemon(true); return thread; } From 5e7cdbd1216a372dfc0179183013916896b55839 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Thu, 27 Apr 2023 12:58:19 -0500 Subject: [PATCH 087/185] Add ModuleErroredEvent to convey thrown exceptions --- pom.xml | 2 +- .../java/org/scijava/module/ModuleRunner.java | 73 ++++++----- .../module/event/ModuleErroredEvent.java | 52 ++++++++ .../module/event/ModuleErroredEventTest.java | 114 ++++++++++++++++++ 4 files changed, 212 insertions(+), 29 deletions(-) create mode 100644 src/main/java/org/scijava/module/event/ModuleErroredEvent.java create mode 100644 src/test/java/org/scijava/module/event/ModuleErroredEventTest.java diff --git a/pom.xml b/pom.xml index ad42e0867..6307a4ead 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.92.1-SNAPSHOT + 2.93.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. diff --git a/src/main/java/org/scijava/module/ModuleRunner.java b/src/main/java/org/scijava/module/ModuleRunner.java index d5f61890a..4553c83ae 100644 --- a/src/main/java/org/scijava/module/ModuleRunner.java +++ b/src/main/java/org/scijava/module/ModuleRunner.java @@ -39,6 +39,7 @@ import org.scijava.event.EventService; import org.scijava.log.LogService; import org.scijava.module.event.ModuleCanceledEvent; +import org.scijava.module.event.ModuleErroredEvent; import org.scijava.module.event.ModuleExecutedEvent; import org.scijava.module.event.ModuleExecutingEvent; import org.scijava.module.event.ModuleFinishedEvent; @@ -144,36 +145,42 @@ public void run() { final String title = module.getInfo().getTitle(); - // announce start of execution process - if (ss != null) ss.showStatus("Running command: " + title); - if (es != null) es.publish(new ModuleStartedEvent(module)); - - // execute preprocessors - final ModulePreprocessor canceler = preProcess(); - if (canceler != null) { - // module execution was canceled by preprocessor - final String reason = canceler.getCancelReason(); - cancel(reason); - cleanupAndBroadcastCancelation(title, reason); - return; + try { + // announce start of execution process + if (ss != null) ss.showStatus("Running command: " + title); + if (es != null) es.publish(new ModuleStartedEvent(module)); + + // execute preprocessors + final ModulePreprocessor canceler = preProcess(); + if (canceler != null) { + // module execution was canceled by preprocessor + final String reason = canceler.getCancelReason(); + cancel(reason); + cleanupAndBroadcastCancelation(title, reason); + return; + } + + // execute module + if (es != null) es.publish(new ModuleExecutingEvent(module)); + module.run(); + if (isCanceled()) { + // module execution was canceled by the module itself + cleanupAndBroadcastCancelation(title, getCancelReason()); + return; + } + if (es != null) es.publish(new ModuleExecutedEvent(module)); + + // execute postprocessors + postProcess(); + + // announce completion of execution process + if (es != null) es.publish(new ModuleFinishedEvent(module)); + if (ss != null) ss.showStatus("Command finished: " + title); } - - // execute module - if (es != null) es.publish(new ModuleExecutingEvent(module)); - module.run(); - if (isCanceled()) { - // module execution was canceled by the module itself - cleanupAndBroadcastCancelation(title, getCancelReason()); - return; + catch (final Throwable t) { + cleanupAndBroadcastException(title, t); + throw t; } - if (es != null) es.publish(new ModuleExecutedEvent(module)); - - // execute postprocessors - postProcess(); - - // announce completion of execution process - if (es != null) es.publish(new ModuleFinishedEvent(module)); - if (ss != null) ss.showStatus("Command finished: " + title); } // -- Helper methods -- @@ -190,6 +197,16 @@ private void cleanupAndBroadcastCancelation(final String title, } } + private void cleanupAndBroadcastException(final String title, + final Throwable t) + { + if (es != null) es.publish(new ModuleErroredEvent(module, t)); + if (ss != null) { + ss.showStatus("Module errored: " + title); + if (t != null) ss.warn(t.getMessage()); + } + } + private boolean isCanceled() { return module instanceof Cancelable && ((Cancelable) module).isCanceled(); } diff --git a/src/main/java/org/scijava/module/event/ModuleErroredEvent.java b/src/main/java/org/scijava/module/event/ModuleErroredEvent.java new file mode 100644 index 000000000..9fe97438c --- /dev/null +++ b/src/main/java/org/scijava/module/event/ModuleErroredEvent.java @@ -0,0 +1,52 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2023 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.module.event; + +import org.scijava.module.Module; + +/** + * An event indicating a module execution has thrown an exception. + * + * @author Gabriel Selzer + */ +public class ModuleErroredEvent extends ModuleExecutionEvent { + + private final Throwable exc; + + public ModuleErroredEvent(final Module module, final Throwable exc) { + super(module); + this.exc = exc; + } + + public Throwable getException() { + return exc; + } + +} diff --git a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java new file mode 100644 index 000000000..d818a921b --- /dev/null +++ b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java @@ -0,0 +1,114 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2023 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.module.event; + +import static org.junit.Assert.assertThrows; +import static org.junit.Assert.assertTrue; + +import org.junit.Before; +import org.junit.Test; +import org.scijava.Context; +import org.scijava.event.EventHandler; +import org.scijava.event.EventService; +import org.scijava.module.AbstractModule; +import org.scijava.module.AbstractModuleInfo; +import org.scijava.module.Module; +import org.scijava.module.ModuleException; +import org.scijava.module.ModuleInfo; +import org.scijava.module.ModuleService; + +/** + * Tests {@link ModuleErroredEvent} behavior. + * + * @author Gabriel Selzer + */ +public class ModuleErroredEventTest { + + private EventService es; + private ModuleService module; + + @Before + public void setUp() { + Context ctx = new Context(); + es = ctx.getService(EventService.class); + module = ctx.getService(ModuleService.class); + } + + @Test + public void testModuleErroredEvent() { + + // Must be a final boolean array to be included in the below closure + final boolean[] caughtException = { false }; + + // Add a new EventHandler to change our state + es.subscribe(new Object() { + + @EventHandler + void onEvent(final ModuleErroredEvent e) { + caughtException[0] = true; + } + }); + + // Run the module, ensure we get the exception + assertThrows(Exception.class, // + () -> module.run(new TestModuleInfo(), false).get()); + assertTrue(caughtException[0]); + } + + static class TestModuleInfo extends AbstractModuleInfo { + + @Override + public String getDelegateClassName() { + return this.getClass().getName(); + } + + @Override + public Class loadDelegateClass() throws ClassNotFoundException { + return this.getClass(); + } + + @Override + public Module createModule() throws ModuleException { + ModuleInfo thisInfo = this; + return new AbstractModule() { + + @Override + public ModuleInfo getInfo() { + return thisInfo; + } + + @Override + public void run() { + throw new RuntimeException("Yay!"); + } + }; + } + } +} From f1e90a40497406a3f80f52f0cd4c0bb52afba284 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 3 May 2023 16:34:30 -0500 Subject: [PATCH 088/185] ModuleErroredEventTest: save ref to subscriber So that it cannot be garbage collected too early. --- .../org/scijava/module/event/ModuleErroredEventTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java index d818a921b..33fe004c3 100644 --- a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java +++ b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java @@ -68,13 +68,14 @@ public void testModuleErroredEvent() { final boolean[] caughtException = { false }; // Add a new EventHandler to change our state - es.subscribe(new Object() { + final Object interestedParty = new Object() { @EventHandler void onEvent(final ModuleErroredEvent e) { caughtException[0] = true; } - }); + }; + es.subscribe(interestedParty); // Run the module, ensure we get the exception assertThrows(Exception.class, // From d8b0318c35345d9afab5f2a4be363d52df9959d5 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 3 May 2023 16:35:13 -0500 Subject: [PATCH 089/185] ModuleErroredEventTest: assert correct exception --- .../scijava/module/event/ModuleErroredEventTest.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java index 33fe004c3..340d6e73d 100644 --- a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java +++ b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java @@ -29,8 +29,9 @@ package org.scijava.module.event; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertNotNull; import org.junit.Before; import org.junit.Test; @@ -48,6 +49,7 @@ * Tests {@link ModuleErroredEvent} behavior. * * @author Gabriel Selzer + * @author Curtis Rueden */ public class ModuleErroredEventTest { @@ -65,14 +67,14 @@ public void setUp() { public void testModuleErroredEvent() { // Must be a final boolean array to be included in the below closure - final boolean[] caughtException = { false }; + final Throwable[] caughtException = { null }; // Add a new EventHandler to change our state final Object interestedParty = new Object() { @EventHandler void onEvent(final ModuleErroredEvent e) { - caughtException[0] = true; + caughtException[0] = e.getException(); } }; es.subscribe(interestedParty); @@ -80,7 +82,8 @@ void onEvent(final ModuleErroredEvent e) { // Run the module, ensure we get the exception assertThrows(Exception.class, // () -> module.run(new TestModuleInfo(), false).get()); - assertTrue(caughtException[0]); + assertNotNull(caughtException[0]); + assertEquals("Yay!", caughtException[0].getMessage()); } static class TestModuleInfo extends AbstractModuleInfo { From 5f5d3f7285e05c6616569cc2b44d634986d1313d Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 3 May 2023 16:40:11 -0500 Subject: [PATCH 090/185] ModuleRunner: make vocabulary consistent Yes, it might not be a Command plugin. But the other messages all use the term "Command" rather than "Module". Let's stay consistent. --- src/main/java/org/scijava/module/ModuleRunner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/module/ModuleRunner.java b/src/main/java/org/scijava/module/ModuleRunner.java index 4553c83ae..4831aa6da 100644 --- a/src/main/java/org/scijava/module/ModuleRunner.java +++ b/src/main/java/org/scijava/module/ModuleRunner.java @@ -202,7 +202,7 @@ private void cleanupAndBroadcastException(final String title, { if (es != null) es.publish(new ModuleErroredEvent(module, t)); if (ss != null) { - ss.showStatus("Module errored: " + title); + ss.showStatus("Command errored: " + title); if (t != null) ss.warn(t.getMessage()); } } From 0b249a401c7ffb89e194cbbefe554fb5f4c89b1b Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 3 May 2023 16:41:18 -0500 Subject: [PATCH 091/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6307a4ead..59ba9d45b 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.93.0-SNAPSHOT + 2.93.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 3b6c40a303020460350cdbe757dc14f9ef20ed33 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 11 May 2023 15:06:47 -0500 Subject: [PATCH 092/185] ModuleRunner: use the log, not status, upon error The log is for exceptional conditions, whereas the status reporting mechanism is for normal ones. --- src/main/java/org/scijava/module/ModuleRunner.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/org/scijava/module/ModuleRunner.java b/src/main/java/org/scijava/module/ModuleRunner.java index 4831aa6da..d9f25bb65 100644 --- a/src/main/java/org/scijava/module/ModuleRunner.java +++ b/src/main/java/org/scijava/module/ModuleRunner.java @@ -201,10 +201,7 @@ private void cleanupAndBroadcastException(final String title, final Throwable t) { if (es != null) es.publish(new ModuleErroredEvent(module, t)); - if (ss != null) { - ss.showStatus("Command errored: " + title); - if (t != null) ss.warn(t.getMessage()); - } + if (log != null) log.error("Command errored: " + title, t); } private boolean isCanceled() { From 113c61730b13877beea3a0ea283392557a0ef7a6 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 11 May 2023 15:14:53 -0500 Subject: [PATCH 093/185] ModuleRunner: only log unhandled errors If someone wants to subscribe to ModuleErroredEvent and handle it, they can now consume the event to prevent it from being logged. --- src/main/java/org/scijava/module/ModuleRunner.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/module/ModuleRunner.java b/src/main/java/org/scijava/module/ModuleRunner.java index d9f25bb65..8fa173225 100644 --- a/src/main/java/org/scijava/module/ModuleRunner.java +++ b/src/main/java/org/scijava/module/ModuleRunner.java @@ -200,8 +200,12 @@ private void cleanupAndBroadcastCancelation(final String title, private void cleanupAndBroadcastException(final String title, final Throwable t) { - if (es != null) es.publish(new ModuleErroredEvent(module, t)); - if (log != null) log.error("Command errored: " + title, t); + final ModuleErroredEvent evt = new ModuleErroredEvent(module, t); + if (es != null) es.publish(evt); + if (log != null && !evt.isConsumed()) { + // Nothing else handled the error, so log it. + log.error("Command errored: " + title, t); + } } private boolean isCanceled() { From f8068747370945591f60b83ee4a8fcfc4b735b54 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Thu, 11 May 2023 16:18:02 -0500 Subject: [PATCH 094/185] Choose UserInterfaces intelligently --- .../java/org/scijava/ui/DefaultUIService.java | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/scijava/ui/DefaultUIService.java b/src/main/java/org/scijava/ui/DefaultUIService.java index 4750f31ef..60fc08693 100644 --- a/src/main/java/org/scijava/ui/DefaultUIService.java +++ b/src/main/java/org/scijava/ui/DefaultUIService.java @@ -244,17 +244,17 @@ public List>> getViewerPlugins() { @Override public void show(final Object o) { - getDefaultUI().show(o); + getVisibleUI(true).show(o); } @Override public void show(final String name, final Object o) { - getDefaultUI().show(name, o); + getVisibleUI(true).show(name, o); } @Override public void show(final Display display) { - getDefaultUI().show(display); + getVisibleUI(true).show(display); } @Override @@ -309,16 +309,15 @@ public DialogPrompt.Result showDialog(final String message, final String title, final DialogPrompt.MessageType messageType, final DialogPrompt.OptionType optionType) { - final UserInterface ui = getDefaultUI(); + UserInterface ui = getVisibleUI(false); if (ui == null) return null; - final DialogPrompt dialogPrompt = - ui.dialogPrompt(message, title, messageType, optionType); + final DialogPrompt dialogPrompt = ui.dialogPrompt(message, title, messageType, optionType); return dialogPrompt == null ? null : dialogPrompt.prompt(); } @Override public File chooseFile(final File file, final String style) { - final UserInterface ui = getDefaultUI(); + final UserInterface ui = getVisibleUI(true); return ui == null ? null : ui.chooseFile(file, style); } @@ -326,19 +325,19 @@ public File chooseFile(final File file, final String style) { public File chooseFile(final String title, final File file, final String style) { - final UserInterface ui = getDefaultUI(); + final UserInterface ui = getVisibleUI(true); return ui == null ? null : ui.chooseFile(title, file, style); } @Override public File[] chooseFiles(File parent, File[] files, FileFilter filter, String style) { - final UserInterface ui = getDefaultUI(); + final UserInterface ui = getVisibleUI(true); return ui == null ? null : ui.chooseFiles(parent, files, filter, style); } @Override public List chooseFiles(File parent, List fileList, FileFilter filter, String style) { - final UserInterface ui = getDefaultUI(); + final UserInterface ui = getVisibleUI(true); return ui == null ? null : ui.chooseFiles(parent, fileList, filter, style); } @@ -346,7 +345,7 @@ public List chooseFiles(File parent, List fileList, FileFilter filte public void showContextMenu(final String menuRoot, final Display display, final int x, final int y) { - final UserInterface ui = getDefaultUI(); + final UserInterface ui = getVisibleUI(true); if (ui != null) ui.showContextMenu(menuRoot, display, x, y); } @@ -542,4 +541,21 @@ private void addUserInterface(final String name, final UserInterface ui) { private String getTitle() { return appService.getApp().getTitle(); } + + private UserInterface getVisibleUI(final boolean forceShow) { + // finds the first (highest priority) VISIBLE UserInterface + // if none are visible, then we show default UI if the caller indicated so. + UserInterface defaultUI = getDefaultUI(); + if (defaultUI == null) return null; + if (defaultUI.isVisible()) return defaultUI; + else if(getVisibleUIs().size() > 0) { + return getVisibleUIs().get(0); + } + + if (forceShow) { + showUI(defaultUI); + return defaultUI; + } + return null; + } } From ffbf376d55eba2c059f373f2257db56afff11262 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sat, 13 May 2023 09:18:45 -0500 Subject: [PATCH 095/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 59ba9d45b..5c21533fc 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.93.1-SNAPSHOT + 2.93.2-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From c5202ada23bb107f13ab01be48673024d197951b Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 11:26:40 -0500 Subject: [PATCH 096/185] IOPlugin: fix warnings --- src/main/java/org/scijava/io/IOPlugin.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/scijava/io/IOPlugin.java b/src/main/java/org/scijava/io/IOPlugin.java index 766f2e55b..a6c2536a4 100644 --- a/src/main/java/org/scijava/io/IOPlugin.java +++ b/src/main/java/org/scijava/io/IOPlugin.java @@ -32,7 +32,6 @@ import java.io.IOException; import java.net.URISyntaxException; -import org.scijava.io.location.FileLocation; import org.scijava.io.location.Location; import org.scijava.io.location.LocationService; import org.scijava.plugin.HandlerPlugin; @@ -58,7 +57,6 @@ public interface IOPlugin extends HandlerPlugin { Class getDataType(); /** Checks whether the I/O plugin can open data from the given source. */ - @SuppressWarnings("unused") default boolean supportsOpen(final String source) { try { return supportsOpen(context().service(LocationService.class).resolve(source)); @@ -69,12 +67,12 @@ default boolean supportsOpen(final String source) { } /** Checks whether the I/O plugin can open data from the given location. */ + @SuppressWarnings("unused") default boolean supportsOpen(final Location source) { return false; } /** Checks whether the I/O plugin can save data to the given destination. */ - @SuppressWarnings("unused") default boolean supportsSave(final String destination) { try { return supportsSave(context().service(LocationService.class).resolve(destination)); @@ -85,6 +83,7 @@ default boolean supportsSave(final String destination) { } /** Checks whether the I/O plugin can save data to the given location. */ + @SuppressWarnings("unused") default boolean supportsSave(final Location destination) { return false; } @@ -108,12 +107,12 @@ default D open(final String source) throws IOException { } /** Opens data from the given location. */ + @SuppressWarnings("unused") default D open(final Location source) throws IOException { throw new UnsupportedOperationException(); } /** Saves the given data to the specified destination. */ - @SuppressWarnings("unused") default void save(final D data, final String destination) throws IOException { try { save(data, context().service(LocationService.class).resolve(destination)); @@ -124,6 +123,7 @@ default void save(final D data, final String destination) throws IOException { } /** Saves the given data to the specified location. */ + @SuppressWarnings("unused") default void save(final D data, final Location destination) throws IOException { throw new UnsupportedOperationException(); } From 02998eedceb1fc893222f87a30bcc514351527d3 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 11:33:12 -0500 Subject: [PATCH 097/185] Vendor the org.bushe:eventbus library We need to fix a bug, but the upstream library is not actively maintained anymore. Including the code in scijava-common makes it easier to make changes to the codebase directly. --- pom.xml | 10 +- .../org/scijava/event/DefaultEventBus.java | 10 +- .../scijava/event/DefaultEventService.java | 8 +- .../java/org/scijava/event/EventHandler.java | 4 +- .../org/scijava/event/EventSubscriber.java | 2 +- .../bushe/AbstractEventServiceEvent.java | 56 + .../org/scijava/event/bushe/CleanupEvent.java | 62 + .../bushe/ContainerEventServiceAction.java | 71 + .../bushe/ContainerEventServiceFinder.java | 84 + .../bushe/ContainerEventServiceRegistrar.java | 248 ++ .../bushe/ContainerEventServiceSupplier.java | 42 + .../org/scijava/event/bushe/EventBus.java | 423 ++++ .../scijava/event/bushe/EventBusAction.java | 41 + .../org/scijava/event/bushe/EventService.java | 932 +++++++ .../event/bushe/EventServiceAction.java | 214 ++ .../event/bushe/EventServiceEvent.java | 30 + .../bushe/EventServiceExistsException.java | 8 + .../event/bushe/EventServiceLocator.java | 174 ++ .../scijava/event/bushe/EventSubscriber.java | 35 + .../event/bushe/EventTopicSubscriber.java | 38 + .../java/org/scijava/event/bushe/Logger.java | 218 ++ .../org/scijava/event/bushe/ObjectEvent.java | 42 + .../org/scijava/event/bushe/Prioritized.java | 14 + .../bushe/PrioritizedEventSubscriber.java | 8 + .../PrioritizedEventTopicSubscriber.java | 8 + .../scijava/event/bushe/ProxySubscriber.java | 45 + .../event/bushe/PublicationStatus.java | 30 + .../event/bushe/PublicationStatusTracker.java | 24 + .../event/bushe/SubscriberTimingEvent.java | 116 + .../event/bushe/SwingEventService.java | 93 + .../event/bushe/ThreadSafeEventService.java | 2216 +++++++++++++++++ .../event/bushe/VetoEventListener.java | 38 + .../event/bushe/VetoTopicEventListener.java | 25 + .../annotation/AbstractProxySubscriber.java | 169 ++ .../bushe/annotation/AnnotationProcessor.java | 562 +++++ .../bushe/annotation/BaseProxySubscriber.java | 133 + .../bushe/annotation/EventSubscriber.java | 110 + .../EventTopicPatternSubscriber.java | 35 + .../annotation/EventTopicSubscriber.java | 108 + .../ProxyTopicPatternSubscriber.java | 88 + .../annotation/ProxyTopicSubscriber.java | 147 ++ .../bushe/annotation/ReferenceStrength.java | 11 + .../RuntimeTopicEventSubscriber.java | 38 + .../RuntimeTopicPatternEventSubscriber.java | 38 + ...heClassOfTheAnnotatedMethodsParameter.java | 15 + .../VetoRuntimeTopicPatternSubscriber.java | 38 + .../VetoRuntimeTopicSubscriber.java | 38 + .../bushe/annotation/VetoSubscriber.java | 69 + .../VetoTopicPatternSubscriber.java | 66 + .../bushe/annotation/VetoTopicSubscriber.java | 66 + .../event/bushe/exception/SwingException.java | 128 + .../event/bushe/generics/TypeReference.java | 52 + .../scijava/event/bushe/BadEventService.java | 10 + .../scijava/event/bushe/EBTestCounter.java | 10 + .../java/org/scijava/event/bushe/EDTUtil.java | 36 + .../bushe/EventServiceLocatorTestCase.java | 32 + .../event/bushe/SubscriberForTest.java | 43 + .../bushe/TestContainerEventService.java | 218 ++ .../event/bushe/TestDefaultEventService.java | 1397 +++++++++++ .../scijava/event/bushe/TestEventAction.java | 181 ++ .../org/scijava/event/bushe/TestEventBus.java | 570 +++++ .../event/bushe/TestEventBusServiceClass.java | 32 + .../TestEventBusServiceClassBadType.java | 30 + .../event/bushe/TestEventBusTiming.java | 107 + .../event/bushe/TestEventServiceLocator.java | 50 + .../event/bushe/TestEventServiceLocator2.java | 46 + .../event/bushe/TestEventServiceLocator3.java | 44 + .../event/bushe/TestEventServiceLocator4.java | 44 + .../event/bushe/TestEventServiceLocator5.java | 43 + .../event/bushe/TestEventServiceLocator6.java | 44 + .../event/bushe/TestEventServiceLocator7.java | 49 + .../TestEventServiceLocatorConfiguration.java | 28 + ...TestEventServiceLocatorConfiguration2.java | 28 + ...TestEventServiceLocatorConfiguration3.java | 28 + ...TestEventServiceLocatorConfiguration4.java | 27 + .../scijava/event/bushe/TestPerformance.java | 75 + .../bushe/TestPrioritizedSubscribers.java | 593 +++++ .../event/bushe/TestPublicationStates.java | 67 + .../event/bushe/TopicSubscriberForTest.java | 35 + .../event/bushe/VetoEventListenerForTest.java | 24 + .../bushe/VetoTopicEventListenerForTest.java | 24 + .../bushe/annotation/AbstractSubscriber.java | 27 + .../annotation/AnnotatedEventSubscriber.java | 90 + .../annotation/AnnotatedVetoSubscriber.java | 85 + .../AnotherAnnotatedEventSubscriber.java | 48 + ...AnotherDoubleAnnotatedEventSubscriber.java | 23 + .../bushe/annotation/ConcreteSubscriber.java | 17 + .../DoubleAnnotatedEventSubscriber.java | 35 + .../bushe/annotation/Issue15Subscriber.java | 73 + .../bushe/annotation/Issue15Subscriber2.java | 69 + .../event/bushe/annotation/MyData.java | 17 + .../StrongAnnotatedEventSubscriber.java | 30 + .../StrongClassAnnotatedEventSubscriber.java | 24 + .../TestAnnotationInAbstractClass.java | 20 + .../annotation/TestSubscriberAnnotation.java | 366 +++ .../TestSubscriberAnnotationMemoryLeaks.java | 336 +++ .../WeakClassAnnotatedEventSubscriber.java | 24 + .../bushe/annotation/runtime/Factory.java | 12 + .../RuntimeTopicPatternSubscriber.java | 35 + .../runtime/RuntimeTopicSubscriber.java | 34 + .../runtime/SubscriberForTesting.java | 5 + .../bushe/generics/DataRequestEvent.java | 9 + .../bushe/generics/GenericReflection.java | 125 + 103 files changed, 12679 insertions(+), 20 deletions(-) create mode 100644 src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java create mode 100644 src/main/java/org/scijava/event/bushe/CleanupEvent.java create mode 100644 src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java create mode 100644 src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java create mode 100644 src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java create mode 100644 src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java create mode 100644 src/main/java/org/scijava/event/bushe/EventBus.java create mode 100644 src/main/java/org/scijava/event/bushe/EventBusAction.java create mode 100644 src/main/java/org/scijava/event/bushe/EventService.java create mode 100644 src/main/java/org/scijava/event/bushe/EventServiceAction.java create mode 100644 src/main/java/org/scijava/event/bushe/EventServiceEvent.java create mode 100644 src/main/java/org/scijava/event/bushe/EventServiceExistsException.java create mode 100644 src/main/java/org/scijava/event/bushe/EventServiceLocator.java create mode 100644 src/main/java/org/scijava/event/bushe/EventSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/Logger.java create mode 100644 src/main/java/org/scijava/event/bushe/ObjectEvent.java create mode 100644 src/main/java/org/scijava/event/bushe/Prioritized.java create mode 100644 src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/ProxySubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/PublicationStatus.java create mode 100644 src/main/java/org/scijava/event/bushe/PublicationStatusTracker.java create mode 100644 src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java create mode 100644 src/main/java/org/scijava/event/bushe/SwingEventService.java create mode 100644 src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java create mode 100644 src/main/java/org/scijava/event/bushe/VetoEventListener.java create mode 100644 src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/AbstractProxySubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/AnnotationProcessor.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/BaseProxySubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/EventSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/EventTopicPatternSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/EventTopicSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/ProxyTopicPatternSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/ProxyTopicSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/ReferenceStrength.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicEventSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicPatternEventSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/UseTheClassOfTheAnnotatedMethodsParameter.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/VetoRuntimeTopicPatternSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/VetoRuntimeTopicSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/VetoSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/VetoTopicPatternSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/annotation/VetoTopicSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/exception/SwingException.java create mode 100644 src/main/java/org/scijava/event/bushe/generics/TypeReference.java create mode 100644 src/test/java/org/scijava/event/bushe/BadEventService.java create mode 100644 src/test/java/org/scijava/event/bushe/EBTestCounter.java create mode 100644 src/test/java/org/scijava/event/bushe/EDTUtil.java create mode 100644 src/test/java/org/scijava/event/bushe/EventServiceLocatorTestCase.java create mode 100644 src/test/java/org/scijava/event/bushe/SubscriberForTest.java create mode 100644 src/test/java/org/scijava/event/bushe/TestContainerEventService.java create mode 100644 src/test/java/org/scijava/event/bushe/TestDefaultEventService.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventAction.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventBus.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventBusTiming.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator2.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator3.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator4.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator5.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator6.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator7.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration2.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration3.java create mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration4.java create mode 100644 src/test/java/org/scijava/event/bushe/TestPerformance.java create mode 100644 src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java create mode 100644 src/test/java/org/scijava/event/bushe/TestPublicationStates.java create mode 100644 src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java create mode 100644 src/test/java/org/scijava/event/bushe/VetoEventListenerForTest.java create mode 100644 src/test/java/org/scijava/event/bushe/VetoTopicEventListenerForTest.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/AbstractSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/AnnotatedEventSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/AnnotatedVetoSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/AnotherAnnotatedEventSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/AnotherDoubleAnnotatedEventSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/ConcreteSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/DoubleAnnotatedEventSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber2.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/MyData.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/StrongAnnotatedEventSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/StrongClassAnnotatedEventSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/TestAnnotationInAbstractClass.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotation.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotationMemoryLeaks.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/WeakClassAnnotatedEventSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/runtime/Factory.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicPatternSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicSubscriber.java create mode 100644 src/test/java/org/scijava/event/bushe/annotation/runtime/SubscriberForTesting.java create mode 100644 src/test/java/org/scijava/event/bushe/generics/DataRequestEvent.java create mode 100644 src/test/java/org/scijava/event/bushe/generics/GenericReflection.java diff --git a/pom.xml b/pom.xml index 5c21533fc..d2abba36d 100644 --- a/pom.xml +++ b/pom.xml @@ -167,6 +167,7 @@ bsd_2 SciJava Common shared library for SciJava software. SciJava developers. + **/bushe/** @@ -176,13 +177,6 @@ parsington - - - org.bushe - eventbus - 1.4 - - junit @@ -193,7 +187,7 @@ org.mockito mockito-core test - + diff --git a/src/main/java/org/scijava/event/DefaultEventBus.java b/src/main/java/org/scijava/event/DefaultEventBus.java index 843bd92b2..a85989de8 100644 --- a/src/main/java/org/scijava/event/DefaultEventBus.java +++ b/src/main/java/org/scijava/event/DefaultEventBus.java @@ -34,18 +34,18 @@ import java.util.Arrays; import java.util.List; -import org.bushe.swing.event.CleanupEvent; -import org.bushe.swing.event.ThreadSafeEventService; +import org.scijava.event.bushe.CleanupEvent; +import org.scijava.event.bushe.ThreadSafeEventService; import org.scijava.log.LogService; import org.scijava.service.Service; import org.scijava.thread.ThreadService; /** - * An {@link org.bushe.swing.event.EventService} implementation for SciJava. + * An {@link org.scijava.event.bushe.EventService} implementation for SciJava. *

    * It is called "DefaultEventBus" rather than "DefaultEventService" to avoid a * name clash with {@link DefaultEventService}, which is not an - * {@link org.bushe.swing.event.EventService} but rather a SciJava + * {@link org.scijava.event.bushe.EventService} but rather a SciJava * {@link Service} implementation. *

    * @@ -112,7 +112,7 @@ public void publishLater(final String topicName, final Object eventObj) { getVetoEventListeners(topicName), null); } - // -- org.bushe.swing.event.EventService methods -- + // -- org.scijava.event.bushe.EventService methods -- @Override public void publish(final Object event) { diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index fc5f6f3d6..e82d844a5 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -40,9 +40,9 @@ import java.util.Map; import java.util.WeakHashMap; -import org.bushe.swing.event.annotation.AbstractProxySubscriber; -import org.bushe.swing.event.annotation.BaseProxySubscriber; -import org.bushe.swing.event.annotation.ReferenceStrength; +import org.scijava.event.bushe.annotation.AbstractProxySubscriber; +import org.scijava.event.bushe.annotation.BaseProxySubscriber; +import org.scijava.event.bushe.annotation.ReferenceStrength; import org.scijava.Priority; import org.scijava.log.LogService; import org.scijava.plugin.Parameter; @@ -263,7 +263,7 @@ private synchronized void keepIt(final Object o, final ProxySubscriber subscr * Helper class used by {@link #subscribe(Object)}. *

    * Recapitulates some logic from {@link BaseProxySubscriber}, because that - * class implements {@link org.bushe.swing.event.EventSubscriber} as a raw + * class implements {@link org.scijava.event.bushe.EventSubscriber} as a raw * type, which is incompatible with this class implementing SciJava's * {@link EventSubscriber} as a typed interface; it becomes impossible to * implement both {@code onEvent(Object)} and {@code onEvent(E)}. diff --git a/src/main/java/org/scijava/event/EventHandler.java b/src/main/java/org/scijava/event/EventHandler.java index 7547b3789..27e0d7bbc 100644 --- a/src/main/java/org/scijava/event/EventHandler.java +++ b/src/main/java/org/scijava/event/EventHandler.java @@ -40,10 +40,10 @@ * handling methods and annotating each with @{@link EventHandler}. *

    * Note to developers: This annotation serves exactly the same purpose as - * EventBus's {@link org.bushe.swing.event.annotation.EventSubscriber} + * EventBus's {@link org.scijava.event.bushe.annotation.EventSubscriber} * annotation, recapitulating a subset of the same functionality. We do this to * avoid third party code depending directly on EventBus. That is, we do not - * wish to require SciJava developers to {@code import org.bushe.swing.event.*} + * wish to require SciJava developers to {@code import org.scijava.event.bushe.*} * or similar. In this way, EventBus is isolated as only a transitive dependency * of downstream code, rather than a direct dependency. Unfortunately, because * Java annotation interfaces cannot utilize inheritance, we have to diff --git a/src/main/java/org/scijava/event/EventSubscriber.java b/src/main/java/org/scijava/event/EventSubscriber.java index f6e189035..a36181639 100644 --- a/src/main/java/org/scijava/event/EventSubscriber.java +++ b/src/main/java/org/scijava/event/EventSubscriber.java @@ -44,7 +44,7 @@ * @param Type of event for which to listen */ public interface EventSubscriber extends - org.bushe.swing.event.EventSubscriber + org.scijava.event.bushe.EventSubscriber { @Override diff --git a/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java b/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java new file mode 100644 index 000000000..3c4b84b5c --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java @@ -0,0 +1,56 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * Convenience base class for EventServiceEvents in the application. Provides the convenience of + * holding the event source publication and event status. It is not necessary to use this event class when + * using an EventService. + * + * @author Michael Bushe michael@bushe.com + */ +public abstract class AbstractEventServiceEvent implements EventServiceEvent, PublicationStatusTracker { + + private Object source = null; + protected final Object stateLock = new Object(); + private PublicationStatus publicationStatus = PublicationStatus.Unpublished; + + /** + * Default constructor + * + * @param source the source of the event + */ + public AbstractEventServiceEvent(Object source) { + this.source = source; + } + + /** @return the source of this event */ + public Object getSource() { + return source; + } + + public PublicationStatus getPublicationStatus() { + synchronized (stateLock) { + return publicationStatus; + } + } + + public void setPublicationStatus(PublicationStatus status) { + synchronized (stateLock) { + publicationStatus = status; + } + } +} diff --git a/src/main/java/org/scijava/event/bushe/CleanupEvent.java b/src/main/java/org/scijava/event/bushe/CleanupEvent.java new file mode 100644 index 000000000..c233e1dc0 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/CleanupEvent.java @@ -0,0 +1,62 @@ +/** + * Copyright 2007 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * Published when the ThreadSafeEventService cleans up stale subscribers. + * @author Michael Bushe + */ +public class CleanupEvent { + + /** The status of the cleanup.*/ + public enum Status { + /** Timer has started the cleanup task. Will be followed by at least one more CleanupEvent.*/ + STARTING, + /** Task has determined there's cleanup to do.*/ + OVER_STOP_THRESHOLD_CLEANING_BEGUN, + /** Task has determined there's no cleanup to do.*/ + UNDER_STOP_THRESHOLD_CLEANING_CANCELLED, + /** Finished cleaning up task.*/ + FINISHED_CLEANING; + } + + private Status status; + private int totalWeakRefsAndProxies; + private Integer numStaleSubscribersCleaned; + + public CleanupEvent(Status status, int totalWeakRefsAndProxies, Integer numStaleSubscribersCleaned) { + this.status = status; + this.totalWeakRefsAndProxies = totalWeakRefsAndProxies; + this.numStaleSubscribersCleaned = numStaleSubscribersCleaned; + } + + public Status getStatus() { + return status; + } + + /** Total weak refs and ProxySubscribers subscribed. */ + public int getTotalWeakRefsAndProxies() { + return totalWeakRefsAndProxies; + } + + /** + * Null unless status is FINISHED_CLEANING. + * @return the number of stale subscribers cleaned during the cleanup run. + */ + public Integer getNumStaleSubscribersCleaned() { + return numStaleSubscribersCleaned; + } +} diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java new file mode 100644 index 000000000..8e71a5a69 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java @@ -0,0 +1,71 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import javax.swing.ImageIcon; + +/** + * When fired, this action publishes an ActionEvent on a Container EventService. + * See {@link EventServiceAction} for more information. + *

    + * By default, the Container EventService is found by asking the ContainerEventServiceFinder to find the EventService + * for the source of the fired ActionEvent, which must be a java.awt.Component and contained in a hierarchy (the source + * must have been added to another Swing container). If the action was on a button, this means the container hierarchy + * of the button is walked (up) until a ContainerEventServiceSupplier is found or until the top of the hierarchy is + * reached, at which point a ContainerEventService is created automatically on the fly via the top container's + * putClientProperty() method using the key {@link ContainerEventServiceFinder#CLIENT_PROPERTY_KEY_TOP_LEVEL_EVENT_SERVICE}. + * If the event is from a JPopupMenu then the popup menu's invoker's hierarchy is walked. + *

    + * To exhibit other behavior, override the getSwingEventService() to return another EventService. For example, the + * creator of a popup menu may pass itself to the ContainerEventServiceFinder to return a parent's EventService. + *

    + * + * @author Michael Bushe michael@bushe.com + * @see EventServiceAction for further documentation + * @see ContainerEventServiceFinder on how the service is found + */ +public class ContainerEventServiceAction extends EventServiceAction { + public ContainerEventServiceAction() { + } + + public ContainerEventServiceAction(String actionName, ImageIcon icon) { + super(actionName, icon); + } + + protected EventService getEventService(ActionEvent event) { + Component comp = null; + try { + if (event.getSource() instanceof Component) { + comp = (Component) event.getSource(); + } + if (comp == null) { + if (getThrowsExceptionOnNullEventService()) { + throw new RuntimeException("ActionEvent source was null, could not find event bus, must override getContainerEventService in action with id:" + getName()); + } + } else { + return ContainerEventServiceFinder.getEventService(comp); + } + } catch (ClassCastException ex) { + if (getThrowsExceptionOnNullEventService()) { + throw new RuntimeException("ActionEvent source was not a component (" + (comp == null ? "null" : comp.getClass() + "") + "), must override getContainerEventService in action with id:" + getName(), ex); + } + } + return null; + } +} + diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java new file mode 100644 index 000000000..b62cc874f --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java @@ -0,0 +1,84 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.awt.Component; +import javax.swing.JComponent; +import javax.swing.JPopupMenu; +import javax.swing.RootPaneContainer; + +/** + * This class finds a component's container event service, and creates one if necessary and possible. + *

    + * A Container EventService is, unlike the EventBus, an EventService that is container specific, in other words, it is + * shared only amongst components within a container. For example, a Form component can supply an EventService used + * only by components in the form. The Form's components can publish value change events on their Container's Event + * Service. The Form's Model and Validator may listen to these events to collect data and show errors, respectively. + *

    + * Most importantly, Container EventService's cuts down event traffic, avoid naming and listener clashes, promotes + * componentization, and splits events usage into logical subsets. + *

    + * The finder will walk up a component's hierarchy searching for a parent that implements ContainerEventServiceSupplier. + * If it find one, it returns it. If it doesn't find one, the top level JComponent (specifically, the highest parent in + * the hierarchy, typically a JRootPane) has a client property added to it (if not already set) that has the value of a + * new SwingEventService, which is then returned. The EventBus is never returned. + * + * @author Michael Bushe michael@bushe.com + */ +public class ContainerEventServiceFinder { + /** The client property used to put a new SwingEventService on top-level components. */ + public static final String CLIENT_PROPERTY_KEY_TOP_LEVEL_EVENT_SERVICE = "ContainerEventServiceFinder.createdService"; + + /** + * Walks the component's parents until it find an ContainerEventServiceSupplier and returns the supplier's + * EventService. If the component in the tree is a JPopupMenu, then the menu's invoker is walked. + * + * @param component any component + * + * @return the ContainerEventService of the nearest parent + */ + public static EventService getEventService(Component component) { + while (component != null) { + if (component instanceof ContainerEventServiceSupplier) { + return ((ContainerEventServiceSupplier) component).getContainerEventService(); + } + if (component instanceof JPopupMenu) { + component = ((JPopupMenu) component).getInvoker(); + } else { + if (component.getParent() == null) { + //There is no supplier. Instead of returning null, make an event service + //and stick it in the client properties of the top level container. + if (component instanceof RootPaneContainer) { + component = ((RootPaneContainer) component).getRootPane(); + } + if (!(component instanceof JComponent)) { + return null; + } + JComponent jComp = ((JComponent) component); + SwingEventService eventService = (SwingEventService) jComp.getClientProperty(CLIENT_PROPERTY_KEY_TOP_LEVEL_EVENT_SERVICE); + if (eventService == null) { + eventService = new SwingEventService(); + jComp.putClientProperty(CLIENT_PROPERTY_KEY_TOP_LEVEL_EVENT_SERVICE, eventService); + } + return eventService; + } else { + component = component.getParent(); + } + } + } + return null; + } +} diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java new file mode 100644 index 000000000..5825dd664 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java @@ -0,0 +1,248 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import javax.swing.JComponent; +import javax.swing.event.AncestorEvent; +import javax.swing.event.AncestorListener; +import java.awt.event.ContainerEvent; +import java.awt.event.ContainerListener; +import java.awt.event.HierarchyEvent; +import java.awt.event.HierarchyListener; + + +/** + * Registers a component with it's Container's EventService while keeping track of the component's container. + *

    + * Registering with a component's ContainerEventService is tricky since components may not be in their hierarchy when + * they want to register with it, or components may move (though rarely). This class subscribes a component with it's + * container event service. If it is unavailable, the registrar waits until the component's Container becomes available + * and subscribes at that time. If the component changes Containers, the registrar unsubscribes the component from its + * old container and subscribes it to the new one. + * + * @author Michael Bushe michael@bushe.com + */ +public class ContainerEventServiceRegistrar { + private JComponent jComp; + private EventSubscriber eventSubscriber; + private VetoEventListener vetoSubscriber; + private Class[] eventClasses; + private EventTopicSubscriber eventTopicSubscriber; + private VetoTopicEventListener vetoTopicSubscriber; + private String[] topics; + private EventService containerEventService; + + /** + * Create a registrar that will keep track of the container event service, typically used in the publish-only cases + * where the getContainerEventServer() call will be made before publication. + * + * @param jComp the component whose container to monitor + */ + public ContainerEventServiceRegistrar(JComponent jComp) { + this(jComp, null, null, null, null, null, null); + } + + /** + * Create a registrar that will keep track of the container event service, and subscribe the subscriber to the + * eventClass when the ContainerEventService is available and when it changes. + * + * @param jComp the component whose container to monitor + * @param eventSubscriber the subscriber to register to the Container EventServer + * @param eventClasses the class(es) to register for + */ + public ContainerEventServiceRegistrar(JComponent jComp, EventSubscriber eventSubscriber, Class... eventClasses) { + this(jComp, eventSubscriber, null, eventClasses, null, null, null); + } + + /** + * Create a registrar that will keep track of the container event service, and subscribe the subscriber to the topic + * when the ContainerEventService is available and when it changes. + * + * @param jComp the component whose container to monitor + * @param eventTopicSubscriber the topic subscriber to register to the Container EventServer + * @param topics the event topic name to register for + */ + public ContainerEventServiceRegistrar(JComponent jComp, EventTopicSubscriber eventTopicSubscriber, String... topics) { + this(jComp, null, null, null, eventTopicSubscriber, null, topics); + } + + /** + * Create a registrar that will keep track of the container event service, and subscribeStrongly the veto subscriber + * to the topics when the ContainerEventService is available and when it changes. + * + * @param jComp the component whose container to monitor + * @param vetoSubscriber the veto subscriber to register to the Container EventServer + * @param eventClasses the classes of event to register for + */ + public ContainerEventServiceRegistrar(JComponent jComp, VetoEventListener vetoSubscriber, Class... eventClasses) { + this(jComp, null, vetoSubscriber, eventClasses, null, null, null); + } + + /** + * Create a registrar that will keep track of the container event service, and subscribeStrongly the veto subscriber + * to the topics when the ContainerEventService is available and when it changes. + * + * @param jComp the component whose container to monitor + * @param vetoTopicSubscriber the veto subscriber to register to the Container EventServer + * @param topics the event topic(s) to register for + */ + public ContainerEventServiceRegistrar(JComponent jComp, VetoTopicEventListener vetoTopicSubscriber, String... topics) { + this(jComp, null, null, null, null, vetoTopicSubscriber, topics); + } + + /** + * Create a registrar that will keep track of the container event service, and subscribe the subscriber to the topics + * and the event classes when the ContainerEventService is available and when it changes. + * + * @param jComp the component whose container to monitor + * @param eventSubscriber the subscriber to register to the Container EventServer + * @param eventClasses the classes of event to register for + * @param eventTopicSubscriber the topic subscriber to keep registered to the topic(s) + * @param topics the event topic names to register for + */ + public ContainerEventServiceRegistrar(JComponent jComp, EventSubscriber eventSubscriber, Class[] eventClasses, + EventTopicSubscriber eventTopicSubscriber, String[] topics) { + this(jComp, eventSubscriber, null, eventClasses, eventTopicSubscriber, null, topics); + } + + /** + * Create a registrar that will keep track of the container event service, and subscribe the subscriber to the topics + * and the event classes when the ContainerEventService is available and when it changes. + * + * @param jComp the component whose container to monitor + * @param eventSubscriber the subscriber to register to the Container EventServer + * @param vetoSubscriber a veto subscriber for the eventClasses + * @param eventClasses the classes of event to register for + * @param eventTopicSubscriber the topic subscriber to keep registered to the topic(s) + * @param vetoTopicSubscriber a veto subscriber for the topics + * @param topics the event topic names to register for + */ + public ContainerEventServiceRegistrar(JComponent jComp, EventSubscriber eventSubscriber, VetoEventListener vetoSubscriber, + Class[] eventClasses, EventTopicSubscriber eventTopicSubscriber, VetoTopicEventListener vetoTopicSubscriber, + String[] topics) { + this.jComp = jComp; + this.eventSubscriber = eventSubscriber; + this.vetoSubscriber = vetoSubscriber; + this.eventClasses = eventClasses; + this.eventTopicSubscriber = eventTopicSubscriber; + this.vetoTopicSubscriber = vetoTopicSubscriber; + this.topics = topics; + + if (jComp == null) { + throw new NullPointerException("JComponent is null"); + } + updateContainerEventService(); + jComp.addHierarchyListener(new HierarchyListener() { + public void hierarchyChanged(HierarchyEvent e) { + updateContainerEventService(); + } + }); + jComp.addContainerListener(new ContainerListener() { + public void componentAdded(ContainerEvent e) { + updateContainerEventService(); + } + + public void componentRemoved(ContainerEvent e) { + updateContainerEventService(); + } + }); + jComp.addAncestorListener(new AncestorListener() { + public void ancestorAdded(AncestorEvent event) { + updateContainerEventService(); + } + + public void ancestorMoved(AncestorEvent event) { + //ignore - not necessary to keep track of movement + } + + public void ancestorRemoved(AncestorEvent event) { + updateContainerEventService(); + } + }); + } + + /** + * Called by this class when the container may have changed. + *

    + * Override this method and call super if your class wants to be notified when the container changes (compare the + * references of getContainerEventService() around the calls to super.updateContainerEventService()). + */ + protected void updateContainerEventService() { + if (containerEventService != null) { + if (eventClasses != null) { + for (int i = 0; i < eventClasses.length; i++) { + Class eventClass = eventClasses[i]; + if (eventSubscriber != null) { + containerEventService.unsubscribe(eventClass, eventSubscriber); + } + if (vetoSubscriber != null) { + containerEventService.unsubscribeVeto(eventClass, vetoSubscriber); + } + } + } + if (topics != null) { + for (int i = 0; i < topics.length; i++) { + String topic = topics[i]; + if (eventTopicSubscriber != null) { + containerEventService.unsubscribe(topic, eventTopicSubscriber); + } + if (vetoTopicSubscriber != null) { + containerEventService.unsubscribeVeto(topic, vetoTopicSubscriber); + } + } + } + } + + containerEventService = ContainerEventServiceFinder.getEventService(jComp); + if (containerEventService != null) { + if (eventClasses != null) { + for (int i = 0; i < eventClasses.length; i++) { + Class eventClass = eventClasses[i]; + if (eventSubscriber != null) { + containerEventService.subscribe(eventClass, eventSubscriber); + } + if (vetoSubscriber != null) { + containerEventService.subscribeVetoListener(eventClass, vetoSubscriber); + } + } + } + if (topics != null) { + for (int i = 0; i < topics.length; i++) { + String topic = topics[i]; + if (eventTopicSubscriber != null) { + containerEventService.subscribe(topic, eventTopicSubscriber); + } + if (vetoTopicSubscriber != null) { + containerEventService.subscribeVetoListener(topic, vetoTopicSubscriber); + } + } + } + } + } + + /** + * @return the container event service, if null, it tries to find it, but it still may be null if this object is not + * in a container. + */ + public EventService getContainerEventService() { + if (containerEventService != null) { + return containerEventService; + } else { + updateContainerEventService(); + return containerEventService; + } + } +} diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java new file mode 100644 index 000000000..70985d749 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java @@ -0,0 +1,42 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * A interface implemented by a Swing Container to supply an EventService local to it's child components. + *

    + * A Container EventService is an {@link EventService} which, unlike the {@link EventBus}, is specific to a container, + * in other words, it is shared only among components within a Swing Container. The only difference between a Container + * EventService and any other EventService is that it's found and used by the children of a container. The API and + * available implementations all work the same as any other EventService. + *

    + * A good candidate for a ContainerEventServiceSupplier is a Form class. The components that the Form contains can + * publish objects when they they change state - for example when their values change or when they become invalid or + * valid. The Form may have a model that collects the user's entries by subscribing to events published on the Form's + * EventService. A FormValidator may also listen to publications on the Form's EventService to subscribe to validation + * errors. The Form's components don't have to know about the form, or the model or the validator. They just publish + * events on their Container's EventService, which they can find by using a {@link ContainerEventServiceFinder}. + *

    + * This class does not ever have to be implemented or used directly. The ContainerEventServiceFinder will create a + * ContainerEventService on JRootPanes by default on demand. Hence, each dialog and Frame will have their own + * automatically as needed. You only want to implement this interface when you want to limit events to subscribers + * in containers smaller than a JRootPane, such as a Form's JPanel. + * + * @author Michael Bushe michael@bushe.com + */ +public interface ContainerEventServiceSupplier { + public EventService getContainerEventService(); +} diff --git a/src/main/java/org/scijava/event/bushe/EventBus.java b/src/main/java/org/scijava/event/bushe/EventBus.java new file mode 100644 index 000000000..846d96820 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/EventBus.java @@ -0,0 +1,423 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.util.List; +import java.util.regex.Pattern; +import java.lang.reflect.Type; + +/** + * The EventBus provides event publication and subscription services. It is a simple static wrapper around a + * global instance of an {@link EventService}, specifically a {@link SwingEventService} by default. + *

    + * For Swing Applications the EventBus is nearly all you need, besides some of your own Event classes (if so desired). + *

    + * The EventBus is really just a convenience class that provides a static wrapper around a global {@link + * EventService} instance. This class exists solely for simplicity. Calling + * EventBus.subscribeXXX/publishXXX is equivalent to + * EventServiceLocator.getEventBusService().subscribeXXX/publishXXX, + * it is just shorter to type. See {@link org.scijava.event.bushe.EventServiceLocator} for details on how to customize + * the global EventService in place of the default SwingEventService. + * + * @author Michael Bushe michael@bushe.com + * @see EventService + * @see SwingEventService + * @see ThreadSafeEventService See package JavaDoc for more information + */ +public class EventBus { + + /** + * The EventBus uses a global static EventService. This method is not necessary in usual usage, use the other static + * methods instead. It is used to expose any other functionality and for framework classes (EventBusAction) + * + * @return the global static EventService + */ + public static EventService getGlobalEventService() { + return EventServiceLocator.getEventBusService(); + } + + /** @see EventService#publish(Object) */ + public static void publish(Object event) { + if (event == null) { + throw new IllegalArgumentException("Can't publish null."); + } + EventServiceLocator.getEventBusService().publish(event); + } + + /** @see EventService#publish(String,Object) */ + public static void publish(String topic, Object o) { + if (topic == null) { + throw new IllegalArgumentException("Can't publish to null topic."); + } + EventServiceLocator.getEventBusService().publish(topic, o); + } + + /** @see EventService#publish(java.lang.reflect.Type, Object) */ + public static void publish(Type genericType, Object o) { + if (genericType == null) { + throw new IllegalArgumentException("Can't publish to null type."); + } + EventServiceLocator.getEventBusService().publish(genericType, o); + } + + + /** @see EventService#subscribe(Class,EventSubscriber) */ + public static boolean subscribe(Class eventClass, EventSubscriber subscriber) { + return EventServiceLocator.getEventBusService().subscribe(eventClass, subscriber); + } + + /** @see EventService#subscribe(java.lang.reflect.Type, EventSubscriber) */ + public static boolean subscribe(Type genericType, EventSubscriber subscriber) { + return EventServiceLocator.getEventBusService().subscribe(genericType, subscriber); + } + + /** @see EventService#subscribeExactly(Class,EventSubscriber) */ + public static boolean subscribeExactly(Class eventClass, EventSubscriber subscriber) { + return EventServiceLocator.getEventBusService().subscribeExactly(eventClass, subscriber); + } + + /** @see EventService#subscribe(String,EventTopicSubscriber) */ + public static boolean subscribe(String topic, EventTopicSubscriber subscriber) { + return EventServiceLocator.getEventBusService().subscribe(topic, subscriber); + } + + /** @see EventService#subscribe(Pattern,EventTopicSubscriber) */ + public static boolean subscribe(Pattern topicPattern, EventTopicSubscriber subscriber) { + return EventServiceLocator.getEventBusService().subscribe(topicPattern, subscriber); + } + + /** @see EventService#subscribeStrongly(Class,EventSubscriber) */ + public static boolean subscribeStrongly(Class eventClass, EventSubscriber subscriber) { + return EventServiceLocator.getEventBusService().subscribeStrongly(eventClass, subscriber); + } + + /** @see EventService#subscribeExactlyStrongly(Class,EventSubscriber) */ + public static boolean subscribeExactlyStrongly(Class eventClass, EventSubscriber subscriber) { + return EventServiceLocator.getEventBusService().subscribeExactlyStrongly(eventClass, subscriber); + } + + /** @see EventService#subscribeStrongly(String,EventTopicSubscriber) */ + public static boolean subscribeStrongly(String topic, EventTopicSubscriber subscriber) { + return EventServiceLocator.getEventBusService().subscribeStrongly(topic, subscriber); + } + + /** @see EventService#subscribeStrongly(Pattern,EventTopicSubscriber) */ + public static boolean subscribeStrongly(Pattern topicPattern, EventTopicSubscriber subscriber) { + return EventServiceLocator.getEventBusService().subscribeStrongly(topicPattern, subscriber); + } + + /** @see EventService#unsubscribe(Class,EventSubscriber) */ + public static boolean unsubscribe(Class eventClass, EventSubscriber subscriber) { + return EventServiceLocator.getEventBusService().unsubscribe(eventClass, subscriber); + } + + /** @see EventService#unsubscribeExactly(Class,EventSubscriber) */ + public static boolean unsubscribeExactly(Class eventClass, EventSubscriber subscriber) { + return EventServiceLocator.getEventBusService().unsubscribeExactly(eventClass, subscriber); + } + + /** @see EventService#unsubscribe(String,EventTopicSubscriber) */ + public static boolean unsubscribe(String topic, EventTopicSubscriber subscriber) { + return EventServiceLocator.getEventBusService().unsubscribe(topic, subscriber); + } + + /** @see EventService#unsubscribe(Pattern,EventTopicSubscriber) */ + public static boolean unsubscribe(Pattern topicPattern, EventTopicSubscriber subscriber) { + return EventServiceLocator.getEventBusService().unsubscribe(topicPattern, subscriber); + } + + /** + * For usage with annotations. + * + * @see EventService#unsubscribe(Class,Object) + */ + public static boolean unsubscribe(Class eventClass, Object object) { + return EventServiceLocator.getEventBusService().unsubscribe(eventClass, object); + } + + /** + * For usage with annotations. + * + * @see EventService#unsubscribeExactly(Class,Object) + */ + public static boolean unsubscribeExactly(Class eventClass, Object subscriber) { + return EventServiceLocator.getEventBusService().unsubscribeExactly(eventClass, subscriber); + } + + /** + * For usage with annotations. + * + * @see EventService#unsubscribe(String,Object) + */ + public static boolean unsubscribe(String topic, Object subscriber) { + return EventServiceLocator.getEventBusService().unsubscribe(topic, subscriber); + } + + /** + * For usage with annotations. + * + * @see EventService#unsubscribe(Pattern,Object) + */ + public static boolean unsubscribe(Pattern topicPattern, Object subscriber) { + return EventServiceLocator.getEventBusService().unsubscribe(topicPattern, subscriber); + } + + /** @see EventService#subscribeVetoListener(Class,VetoEventListener) */ + public static boolean subscribeVetoListener(Class eventClass, VetoEventListener vetoListener) { + return EventServiceLocator.getEventBusService().subscribeVetoListener(eventClass, vetoListener); + } + + /** @see EventService#subscribeVetoListener(Class,VetoEventListener) */ + public static boolean subscribeVetoListenerExactly(Class eventClass, VetoEventListener vetoListener) { + return EventServiceLocator.getEventBusService().subscribeVetoListenerExactly(eventClass, vetoListener); + } + + + /** @see EventService#subscribeVetoListener(String,VetoTopicEventListener) */ + public static boolean subscribeVetoListener(String topic, VetoTopicEventListener vetoListener) { + return EventServiceLocator.getEventBusService().subscribeVetoListener(topic, vetoListener); + } + + /** @see EventService#subscribeVetoListener(Pattern,VetoTopicEventListener) */ + public static boolean subscribeVetoListener(Pattern topicPattern, VetoTopicEventListener vetoListener) { + return EventServiceLocator.getEventBusService().subscribeVetoListener(topicPattern, vetoListener); + } + + /** @see EventService#subscribeVetoListenerStrongly(Class,VetoEventListener) */ + public static boolean subscribeVetoListenerStrongly(Class eventClass, VetoEventListener vetoListener) { + return EventServiceLocator.getEventBusService().subscribeVetoListenerStrongly(eventClass, vetoListener); + } + + /** @see EventService#subscribeVetoListenerExactlyStrongly(Class,VetoEventListener) */ + public static boolean subscribeVetoListenerExactlyStrongly(Class eventClass, VetoEventListener vetoListener) { + return EventServiceLocator.getEventBusService().subscribeVetoListenerExactlyStrongly(eventClass, vetoListener); + } + + /** @see EventService#subscribeVetoListenerStrongly(String,VetoTopicEventListener) */ + public static boolean subscribeVetoListenerStrongly(String topic, VetoTopicEventListener vetoListener) { + return EventServiceLocator.getEventBusService().subscribeVetoListenerStrongly(topic, vetoListener); + } + + /** @see EventService#subscribeVetoListener(String,VetoTopicEventListener) */ + public static boolean subscribeVetoListenerStrongly(Pattern topicPattern, VetoTopicEventListener vetoListener) { + return EventServiceLocator.getEventBusService().subscribeVetoListenerStrongly(topicPattern, vetoListener); + } + + /** @see EventService#unsubscribeVetoListener(Class,VetoEventListener) */ + public static boolean unsubscribeVetoListener(Class eventClass, VetoEventListener vetoListener) { + return EventServiceLocator.getEventBusService().unsubscribeVetoListener(eventClass, vetoListener); + } + + /** @see EventService#unsubscribeVetoListenerExactly(Class,VetoEventListener) */ + public static boolean unsubscribeVetoListenerExactly(Class eventClass, VetoEventListener vetoListener) { + return EventServiceLocator.getEventBusService().unsubscribeVetoListenerExactly(eventClass, vetoListener); + } + + /** @see EventService#unsubscribeVetoListener(String,VetoTopicEventListener) */ + public static boolean unsubscribeVetoListener(String topic, VetoTopicEventListener vetoListener) { + return EventServiceLocator.getEventBusService().unsubscribeVetoListener(topic, vetoListener); + } + + /** @see EventService#unsubscribeVetoListener(Pattern,VetoTopicEventListener) */ + public static boolean unsubscribeVetoListener(Pattern topicPattern, VetoTopicEventListener vetoListener) { + return EventServiceLocator.getEventBusService().unsubscribeVetoListener(topicPattern, vetoListener); + } + + /** @see EventService#getSubscribers(Class) */ + public static List getSubscribers(Class eventClass) { + return EventServiceLocator.getEventBusService().getSubscribers(eventClass); + } + + /** @see EventService#getSubscribersToClass(Class) */ + public static List getSubscribersToClass(Class eventClass) { + return EventServiceLocator.getEventBusService().getSubscribersToClass(eventClass); + } + + /** @see EventService#getSubscribersToExactClass(Class) */ + public static List getSubscribersToExactClass(Class eventClass) { + return EventServiceLocator.getEventBusService().getSubscribersToExactClass(eventClass); + } + + /** @see EventService#getSubscribers(Type) */ + public static List getSubscribers(Type type) { + return EventServiceLocator.getEventBusService().getSubscribers(type); + } + + /** @see EventService#getSubscribers(String) */ + public static List getSubscribers(String topic) { + return EventServiceLocator.getEventBusService().getSubscribers(topic); + } + + /** @see EventService#getSubscribersToTopic(String) */ + public static List getSubscribersToTopic(String topic) { + return EventServiceLocator.getEventBusService().getSubscribersToTopic(topic); + } + + /** @see EventService#getSubscribers(Pattern) */ + public static List getSubscribers(Pattern pattern) { + return EventServiceLocator.getEventBusService().getSubscribers(pattern); + } + + /** @see EventService#getSubscribersByPattern(String) */ + public static List getSubscribersByPattern(String topic) { + return EventServiceLocator.getEventBusService().getSubscribersByPattern(topic); + } + + /** @see EventService#getSubscribers(Class) */ + public static List getVetoSubscribers(Class eventClass) { + return EventServiceLocator.getEventBusService().getVetoSubscribers(eventClass); + } + + /** @see EventService#getVetoSubscribersToClass(Class) */ + public static List getVetoSubscribersToClass(Class eventClass) { + return EventServiceLocator.getEventBusService().getVetoSubscribersToClass(eventClass); + } + + /** @see EventService#getVetoSubscribersToExactClass(Class) */ + public static List getVetoSubscribersToExactClass(Class eventClass) { + return EventServiceLocator.getEventBusService().getVetoSubscribersToExactClass(eventClass); + } + + /** @see EventService#getVetoSubscribers(Class) + * @deprecated use getVetoSubscribersToTopic instead for direct replacement, + * or use getVetoEventListeners to get topic and pattern matchers. + * In EventBus 2.0 this name will replace getVetoEventListeners() + * and have it's union functionality + */ + public static List getVetoSubscribers(String topic) { + return EventServiceLocator.getEventBusService().getVetoSubscribers(topic); + } + + /** @see EventService#getVetoEventListeners(String) */ + public static List getVetoEventListeners(String topic) { + return EventServiceLocator.getEventBusService().getVetoEventListeners(topic); + } + + /** @see EventService#getVetoSubscribers(Pattern) */ + public static List getVetoSubscribers(Pattern pattern) { + return EventServiceLocator.getEventBusService().getVetoSubscribers(pattern); + } + + /** @see EventService#getVetoSubscribersToTopic(String) */ + public static List getVetoSubscribersToTopic(String topic) { + return EventServiceLocator.getEventBusService().getVetoSubscribersToTopic(topic); + } + + /** @see EventService#getVetoSubscribersByPattern(String) */ + public static List getVetoSubscribersByPattern(String topic) { + return EventServiceLocator.getEventBusService().getVetoSubscribersByPattern(topic); + } + + /** @see EventService#unsubscribeVeto(Class, Object) */ + public static boolean unsubscribeVeto(Class eventClass, Object subscribedByProxy) { + return EventServiceLocator.getEventBusService().unsubscribeVeto(eventClass, subscribedByProxy); + } + + /** @see EventService#unsubscribeVetoExactly(Class, Object) */ + public static boolean unsubscribeVetoExactly(Class eventClass, Object subscribedByProxy) { + return EventServiceLocator.getEventBusService().unsubscribeVetoExactly(eventClass, subscribedByProxy); + } + + /** @see EventService#unsubscribeVeto(String, Object) */ + public static boolean unsubscribeVeto(String topic, Object subscribedByProxy) { + return EventServiceLocator.getEventBusService().unsubscribeVeto(topic, subscribedByProxy); + } + + /** @see EventService#unsubscribeVeto(Pattern, Object) */ + public static boolean unsubscribeVeto(Pattern pattern, Object subscribedByProxy) { + return EventServiceLocator.getEventBusService().unsubscribeVeto(pattern, subscribedByProxy); + } + + /** @see EventService#clearAllSubscribers() */ + public static void clearAllSubscribers() { + EventServiceLocator.getEventBusService().clearAllSubscribers(); + } + + /** @see EventService#setDefaultCacheSizePerClassOrTopic(int) */ + public static void setDefaultCacheSizePerClassOrTopic(int defaultCacheSizePerClassOrTopic) { + EventServiceLocator.getEventBusService().setDefaultCacheSizePerClassOrTopic(defaultCacheSizePerClassOrTopic); + } + + /** @see org.scijava.event.bushe.EventService#getDefaultCacheSizePerClassOrTopic() */ + public static int getDefaultCacheSizePerClassOrTopic() { + return EventServiceLocator.getEventBusService().getDefaultCacheSizePerClassOrTopic(); + } + + /** @see EventService#setCacheSizeForEventClass(Class,int) */ + public static void setCacheSizeForEventClass(Class eventClass, int cacheSize) { + EventServiceLocator.getEventBusService().setCacheSizeForEventClass(eventClass, cacheSize); + } + + /** @see EventService#getCacheSizeForEventClass(Class) */ + public static int getCacheSizeForEventClass(Class eventClass) { + return EventServiceLocator.getEventBusService().getCacheSizeForEventClass(eventClass); + } + + /** @see EventService#setCacheSizeForTopic(String,int) */ + public static void setCacheSizeForTopic(String topicName, int cacheSize) { + EventServiceLocator.getEventBusService().setCacheSizeForTopic(topicName, cacheSize); + } + + /** @see EventService#setCacheSizeForTopic(java.util.regex.Pattern,int) */ + public static void setCacheSizeForTopic(Pattern pattern, int cacheSize) { + EventServiceLocator.getEventBusService().setCacheSizeForTopic(pattern, cacheSize); + } + + /** @see EventService#getCacheSizeForTopic(String) */ + public static int getCacheSizeForTopic(String topic) { + return EventServiceLocator.getEventBusService().getCacheSizeForTopic(topic); + } + + /** @see EventService#getLastEvent(Class) */ + public static T getLastEvent(Class eventClass) { + return EventServiceLocator.getEventBusService().getLastEvent(eventClass); + } + + /** @see EventService#getCachedEvents(Class) */ + public static List getCachedEvents(Class eventClass) { + return EventServiceLocator.getEventBusService().getCachedEvents(eventClass); + } + + /** @see EventService#getLastTopicData(String) */ + public static Object getLastTopicData(String topic) { + return EventServiceLocator.getEventBusService().getLastTopicData(topic); + } + + /** @see EventService#getCachedTopicData(String) */ + public static List getCachedTopicData(String topic) { + return EventServiceLocator.getEventBusService().getCachedTopicData(topic); + } + + /** @see EventService#clearCache(Class) */ + public static void clearCache(Class eventClass) { + EventServiceLocator.getEventBusService().clearCache(eventClass); + } + + /** @see EventService#clearCache(String) */ + public static void clearCache(String topic) { + EventServiceLocator.getEventBusService().clearCache(topic); + } + + /** @see EventService#clearCache(java.util.regex.Pattern) */ + public static void clearCache(Pattern pattern) { + EventServiceLocator.getEventBusService().clearCache(pattern); + } + + /** @see org.scijava.event.bushe.EventService#clearCache() */ + public static void clearCache() { + EventServiceLocator.getEventBusService().clearCache(); + } +} diff --git a/src/main/java/org/scijava/event/bushe/EventBusAction.java b/src/main/java/org/scijava/event/bushe/EventBusAction.java new file mode 100644 index 000000000..a320bde9a --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/EventBusAction.java @@ -0,0 +1,41 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.awt.event.ActionEvent; +import javax.swing.ImageIcon; + +/** + * When fired, this action publishes events on the EventBus. + *

    + * + * @author Michael Bushe michael@bushe.com + * @see EventServiceAction + */ +public class EventBusAction extends EventServiceAction { + public EventBusAction() { + this(null, null); + } + + public EventBusAction(String actionName, ImageIcon icon) { + super(actionName, icon); + } + + protected EventService getEventService(ActionEvent event) { + return EventBus.getGlobalEventService(); + } +} + diff --git a/src/main/java/org/scijava/event/bushe/EventService.java b/src/main/java/org/scijava/event/bushe/EventService.java new file mode 100644 index 000000000..8bbc69fa3 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/EventService.java @@ -0,0 +1,932 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.util.List; +import java.util.regex.Pattern; +import java.lang.reflect.Type; + +/** + * The core interface. An EventService provides publish/subscribe services to a single JVM using Class-based and + * String-based (i.e. "topic") publications and subscriptions. + *

    + * In class-based pub/sub, {@link EventSubscriber}s subscribe to a type on an {@link EventService}, such + * as the {@link org.scijava.event.bushe.EventBus}, by providing a class, interface or generic type. The EventService + * notifies subscribers when objects are published on the EventService with a matching type. Full class semantics are + * respected. That is, if a subscriber subscribes to a class, the subscriber is notified if an object of + * that class is publish or if an object of a subclass of that class is published. Likewise if a subscriber subscribes + * to an interface, it will be notified if any object that implements that interface is published. Subscribers can + * subscribe "exactly" using {@link #subscribeExactly(Class, EventSubscriber)} so that they are notified only if an + * object of the exact class is published (and will not be notified if subclasses are published, since this would not + * be "exact") + *

    + * In topic-based pub/sub, an object "payload" is published on a topic name (String). {@link EventTopicSubscriber}s subscribe + * to either the exact name of the topic or they may subscribe using a Regular Expression that is used to match topic + * names. + *

    + * See the overview for an general introduction + * and package documentation for usage details and examples. + *

    + * A single subscriber cannot subscribe more than once to an event or topic name. EventService implementations should + * handle double-subscription requests by returning false on subscribe(). A single EventSubscriber can subscribe to more + * than one event class, and a single EventTopicSubscriber can subscribe to more than one topic name or pattern. A + * single object may implement both EventSubscriber and EventTopicSubscriber interfaces. Subscribers are guaranteed to + * only be called for the classes and/or topic names they subscribe to. If a subscriber subscribes to a topic and to a + * regular expression that matches the topic name, this is considered two different subscriptions and the subscriber + * will be called twice for the publication on the topic. Similarly, if a subscriber subscribes to a class and its + * subclasses using subscribe() and again to a class of the same type using subscribeExactly(), this is considered two + * different subscriptions and the subscriber will be called twice for the publication for a single event of the exact + * type. + *

    + * By default the EventService only holds WeakReferences to subscribers. If a subscriber has no references to it, then + * it can be garbage collected. This avoids memory leaks in exchange for the risk of accidentally adding a listener and + * have it disappear unexpectedly. If you want to subscribe a subscriber that will have no other reference to it, then + * use one of the subscribeStrongly() methods, which will prevent garbage collection. + *

    + * Unless garbage collected, EventSubscribers will remain subscribed until they are passed to one of the unsubscribe() + * methods with the event class or topic name to which there are subscribed. + *

    + * Subscribers are called in the order in which they are subscribed by default (FIFO), unless subscribers implement + * {@link Prioritized}. Those subscribers that implement Prioritized and return a negative priority are moved to the + * front of the list (the more negative, the more to the front). Those subscribers that implement Prioritized and return + * a positive priority are moved to the end of the list (the more positive, the more to the back). The FIFO guarantee + * is only valid for the same subscribe() call. That is, the order of two subscribers, one to List.class and the other + * to ArrayList.class is not guaranteed to be in the order of subscription when an ArrayList is published. The same is + * true for topic subscribers when using RegEx expressions - when "Foo" is published, the order of subscribers that are + * subscribed to "Foo", "Fo*" and "F*" are not guaranteed, though the second "Fo*" subscriber will never be called + * before the first "Fo*" subscriber (ditto List and ArrayList). Prioritized subscribers are always guaranteed to be in + * the order of priority, no matter the call or the resulting mix of subscribers. All ordering rules apply to all + * types subscribers: class, topic, pattern, veto, etc. For Swing users, note that FIFO is + * the opposite of Swing, where event listeners are called in the reverse order of when they were subscribed (FILO). + *

    + * Publication on a class or topic name can be vetoed by a {@link VetoEventListener}. All VetoEventListeners are checked + * before any EventSubscribers or EventTopicSubscribers are called. This is unlike the JavaBean's + * VetoPropertyEventListener which can leave side effects and half-propogated events. VetoEventListeners are subscribed + * in the same manner as EventSubscribers and EventTopicSubscribers. + *

    + * The state of a published event can be tracked if an event or a topic's payload object implements the + * {@link org.scijava.event.bushe.PublicationStatus} interface. EventServices are required to set such objects' + * {@link org.scijava.event.bushe.PublicationStatus} at the appropriate times during publication. + *

    + * This simple example prints "Hello World" + *

    + * EventService eventService = new ThreadSafeEventService();
    + * //Create a subscriber
    + * EventTopicSubscriber subscriber = new EventTopicSubscriber() {
    + *    public void onEvent(String topic, Object event) {
    + *        System.out.println(topic+" "+event);
    + *    }
    + * });
    + * eventService.subscribe("Hello", subscriber);
    + * eventService.publish("Hello", "World");
    + * System.out.println(subscriber + " Since the reference is used after it is subscribed, it doesn't get garbage collected, this is not necessary if you use subscribeStrongly()");
    + * 
    + *

    + * Events and/or topic data can be cached, but are not by default. To cache events or topic data, call + * {@link #setDefaultCacheSizePerClassOrTopic(int)}, {@link #setCacheSizeForEventClass(Class, int)}, or + * {@link #setCacheSizeForTopic(String, int)}, {@link #setCacheSizeForTopic(Pattern, int)}. Retrieve cached values + * with {@link #getLastEvent(Class)}, {@link #getLastTopicData(String)}, {@link #getCachedEvents(Class)}, or + * {@link #getCachedTopicData(String)}. Using caching while subscribing is most likely to make sense only if you + * subscribe and publish on the same thread (so caching is very useful for Swing applications since both happen on + * the EDT in a single-threaded manner). In multithreaded applications, you never know if your subscriber has handled + * an event while it was being subscribed (before the subscribe() method returned) that is newer or older than the + * retrieved cached value (taken before or after subscribe() respectively). + *

    + * There is nothing special about the term "Event," this could just as easily be called a "Message" Service, this term + * is already taken by the JMS, which is similar, but is used across processes and networks. + * + * @author Michael Bushe michael@bushe.com + * @see {@link ThreadSafeEventService} for the default implementation + * @see {@link SwingEventService} for the Swing-safe implementation + * @see {@link EventBus} for simple access to the Swing-safe implementation + * @see {@link org.scijava.event.bushe.annotation.EventSubscriber} for subscription annotations + * @see {@link org.scijava.event.bushe.annotation.EventTopicSubscriber} for subscription annotations + */ +public interface EventService { + + /** + * Publishes an object so that subscribers will be notified if they subscribed to the object's class, one of its + * subclasses, or to one of the interfaces it implements. + * + * @param event the object to publish + */ + public void publish(Object event); + + /** + * Use this method to publish generified objects to subscribers of Types, i.e. subscribers that use + * {@link #subscribe(Type, EventSubscriber)}, and to publish to subscribers of the non-generic type. + *

    + * Due to generic type erasure, the type must be supplied by the caller. You can get a declared object's + * type by using the {@link org.scijava.event.bushe.generics.TypeReference} class. For Example: + *

    +    * TypeReference<List<Trade>> subscribingTypeReference = new TypeReference<List<Trade>>(){};
    +    * EventBus.subscribe(subscribingTypeReference.getType(), mySubscriber);
    +    * EventBus.subscribe(List.class, thisSubscriberWillGetCalledToo);
    +    * ...
    +    * //Likely in some other class
    +    * TypeReference<List<Trade>> publishingTypeReference = new TypeReference<List<Trade>>(){};
    +    * List<Trade> trades = new ArrayList<Trade>();
    +    * EventBus.publish(publishingTypeReference.getType(), trades);
    +    * trades.add(trade);
    +    * EventBus.publish(publishingTypeReference.getType(), trades);
    +    * 
    + *

    + * @param genericType the generified type of the published object. + * @param event The event that occurred + */ + public void publish(Type genericType, Object event); + + /** + * Publishes an object on a topic name so that all subscribers to that name or a Regular Expression that matches + * the topic name will be notified. + * + * @param topic The name of the topic subscribed to + * @param o the object to publish + */ + public void publish(String topic, Object o); + + /** + * Subscribes an EventSubscriber to the publication of objects matching a type. Only a WeakReference to + * the subscriber is held by the EventService. + *

    + * Subscribing to a class means the subscriber will be called when objects of that class are published, when + * objects of subclasses of the class are published, when objects implementing any of the interfaces of the + * class are published, or when generic types are published with the class' raw type. + *

    + * Subscription is weak by default to avoid having to call unsubscribe(), and to avoid the memory leaks that would + * occur if unsubscribe was not called. The service will respect the WeakReference semantics. In other words, if + * the subscriber has not been garbage collected, then onEvent(Object) will be called normally. If the hard + * reference has been garbage collected, the service will unsubscribe it's WeakReference. + *

    + * It's allowable to call unsubscribe() with the same EventSubscriber hard reference to stop a subscription + * immediately. + *

    + * The service will create the WeakReference on behalf of the caller. + * + * @param eventClass the class of published objects to subscriber listen to + * @param subscriber The subscriber that will accept the events of the event class when published. + * + * @return true if the subscriber was subscribed successfully, false otherwise + */ + public boolean subscribe(Class eventClass, EventSubscriber subscriber); + + /** + * Subscribe an EventSubscriber to publication of generic Types. + * Subscribers will only be notified for publications using {@link #publish(java.lang.reflect.Type, Object)}. + *

    + * Due to generic type erasure, the type must be supplied by the publisher. You can get a declared object's + * type by using the {@link org.scijava.event.bushe.generics.TypeReference} class. For Example: + *

    +   * TypeReference<List<Trade>> subscribingTypeReference = new TypeReference<List<Trade>>(){};
    +   * EventBus.subscribe(subscribingTypeReference.getType(), mySubscriber);
    +   * EventBus.subscribe(List.class, thisSubscriberWillGetCalledToo);
    +   * ...
    +   * //Likely in some other class
    +   * TypeReference<List<Trade>> publishingTypeReference = new TypeReference<List<Trade>>(){};
    +   * List<Trade> trades = new ArrayList<Trade>();
    +   * EventBus.publish(publishingTypeReference.getType(), trades);
    +   * trades.add(trade);
    +   * EventBus.publish(publishingTypeReference.getType(), trades);
    +   * 
    + *

    + * @param type the generic type to subscribe to + * @param subscriber the subscriber to the type + * @return true if a new subscription is made, false if it already existed + */ + public boolean subscribe(Type type, EventSubscriber subscriber); + + /** + * Subscribes an EventSubscriber to the publication of objects exactly matching a type. Only a WeakReference + * to the subscriber is held by the EventService. + *

    + * Subscription is weak by default to avoid having to call unsubscribe(), and to avoid the memory leaks that would + * occur if unsubscribe was not called. The service will respect the WeakReference semantics. In other words, if + * the subscriber has not been garbage collected, then the onEvent will be called normally. If the hard reference + * has been garbage collected, the service will unsubscribe it's WeakReference. + *

    + * It's allowable to call unsubscribe() with the same EventSubscriber hard reference to stop a subscription + * immediately. + *

    + * The service will create the WeakReference on behalf of the caller. + * + * @param eventClass the class of published objects to listen to + * @param subscriber The subscriber that will accept the events when published. + * + * @return true if the subscriber was subscribed successfully, false otherwise + */ + public boolean subscribeExactly(Class eventClass, EventSubscriber subscriber); + + /** + * Subscribes an EventTopicSubscriber to the publication of a topic name. Only a WeakReference + * to the subscriber is held by the EventService. + *

    + * Subscription is weak by default to avoid having to call unsubscribe(), and to avoid the memory leaks that would + * occur if unsubscribe was not called. The service will respect the WeakReference semantics. In other words, if + * the subscriber has not been garbage collected, then the onEvent will be called normally. If the hard reference + * has been garbage collected, the service will unsubscribe it's WeakReference. + *

    + * It's allowable to call unsubscribe() with the same EventSubscriber hard reference to stop a subscription + * immediately. + *

    + * + * @param topic the name of the topic listened to + * @param subscriber The topic subscriber that will accept the events when published. + * + * @return true if the subscriber was subscribed successfully, false otherwise + */ + public boolean subscribe(String topic, EventTopicSubscriber subscriber); + + /** + * Subscribes an EventSubscriber to the publication of all the topic names that match a RegEx Pattern. Only a + * WeakReference to the subscriber is held by the EventService. + *

    + * Subscription is weak by default to avoid having to call unsubscribe(), and to avoid the memory leaks that would + * occur if unsubscribe was not called. The service will respect the WeakReference semantics. In other words, if + * the subscriber has not been garbage collected, then the onEvent will be called normally. If the hard reference + * has been garbage collected, the service will unsubscribe it's WeakReference. + *

    + * It's allowable to call unsubscribe() with the same EventSubscriber hard reference to stop a subscription + * immediately. + *

    + * + * @param topicPattern pattern that matches to the name of the topic published to + * @param subscriber The topic subscriber that will accept the events when published. + * + * @return true if the subscriber was subscribed successfully, false otherwise + */ + public boolean subscribe(Pattern topicPattern, EventTopicSubscriber subscriber); + + /** + * Subscribes an EventSubscriber to the publication of objects matching a type. + *

    + * The semantics are the same as {@link #subscribe(Class, EventSubscriber)}, except that the EventService holds + * a regularly reference, not a WeakReference. + *

    + * The subscriber will remain subscribed until {@link #unsubscribe(Class,EventSubscriber)} is called. + * + * @param eventClass the class of published objects to listen to + * @param subscriber The subscriber that will accept the events when published. + * + * @return true if the subscriber was subscribed successfully, false otherwise + */ + public boolean subscribeStrongly(Class eventClass, EventSubscriber subscriber); + + /** + * Subscribes an EventSubscriber to the publication of objects matching a type exactly. + *

    + * The semantics are the same as {@link #subscribeExactly(Class, EventSubscriber)}, except that the EventService + * holds a regularly reference, not a WeakReference. + *

    + * The subscriber will remain subscribed until {@link #unsubscribe(Class,EventSubscriber)} is called. + * + * @param eventClass the class of published objects to listen to + * @param subscriber The subscriber that will accept the events when published. + * + * @return true if the subscriber was subscribed successfully, false otherwise + */ + public boolean subscribeExactlyStrongly(Class eventClass, EventSubscriber subscriber); + + /** + * Subscribes a subscriber to an event topic name. + *

    + * The semantics are the same as {@link #subscribe(String, EventTopicSubscriber)}, except that the EventService + * holds a regularly reference, not a WeakReference. + *

    + * The subscriber will remain subscribed until {@link #unsubscribe(String,EventTopicSubscriber)} is called. + * + * @param topic the name of the topic listened to + * @param subscriber The topic subscriber that will accept the events when published. + * + * @return true if the subscriber was subscribed successfully, false otherwise + */ + public boolean subscribeStrongly(String topic, EventTopicSubscriber subscriber); + + /** + * Subscribes a subscriber to all the event topic names that match a RegEx expression. + *

    + * The semantics are the same as {@link #subscribe(java.util.regex.Pattern, EventTopicSubscriber)}, except that the + * EventService holds a regularly reference, not a WeakReference. + *

    + * The subscriber will remain subscribed until {@link #unsubscribe(String,EventTopicSubscriber)} is called. + * + * @param topicPattern the name of the topic listened to + * @param subscriber The topic subscriber that will accept the events when published. + * + * @return true if the subscriber was subscribed successfully, false otherwise + */ + public boolean subscribeStrongly(Pattern topicPattern, EventTopicSubscriber subscriber); + + /** + * Stop the subscription for a subscriber that is subscribed to a class. + * + * @param eventClass the class of published objects to listen to + * @param subscriber The subscriber that is subscribed to the event. The same reference as the one subscribed. + * + * @return true if the subscriber was subscribed to the event, false if it wasn't + */ + public boolean unsubscribe(Class eventClass, EventSubscriber subscriber); + + /** + * Stop the subscription for a subscriber that is subscribed to an exact class. + * + * @param eventClass the class of published objects to listen to + * @param subscriber The subscriber that is subscribed to the event. The same reference as the one subscribed. + * + * @return true if the subscriber was subscribed to the event, false if it wasn't + */ + public boolean unsubscribeExactly(Class eventClass, EventSubscriber subscriber); + + /** + * Stop the subscription for a subscriber that is subscribed to an event topic. + * + * @param topic the topic listened to + * @param subscriber The subscriber that is subscribed to the topic. The same reference as the one subscribed. + * + * @return true if the subscriber was subscribed to the event, false if it wasn't + */ + public boolean unsubscribe(String topic, EventTopicSubscriber subscriber); + + /** + * Stop the subscription for a subscriber that is subscribed to event topics via a Pattern. + * + * @param topicPattern the regex expression matching topics listened to + * @param subscriber The subscriber that is subscribed to the topic. The same reference as the one subscribed. + * + * @return true if the subscriber was subscribed to the event, false if it wasn't + */ + public boolean unsubscribe(Pattern topicPattern, EventTopicSubscriber subscriber); + + /** + * Subscribes a VetoEventListener to publication of event matching a class. Only a WeakReference to the + * VetoEventListener is held by the EventService. + *

    + * Use this method to avoid having to call unsubscribe(), though with care since garbage collection semantics is + * indeterminate. The service will respect the WeakReference semantics. In other words, if the vetoListener has not + * been garbage collected, then the onEvent will be called normally. If the hard reference has been garbage + * collected, the service will unsubscribe it's WeakReference. + *

    + * It's allowable to call unsubscribe() with the same VetoEventListener hard reference to stop a subscription + * immediately. + *

    + * The service will create the WeakReference on behalf of the caller. + * + * @param eventClass the class of published objects that can be vetoed + * @param vetoListener The VetoEventListener that can determine whether an event is published. + * + * @return true if the VetoEventListener was subscribed successfully, false otherwise + */ + public boolean subscribeVetoListener(Class eventClass, VetoEventListener vetoListener); + + /** + * Subscribes a VetoEventListener to publication of an exact event class. Only a WeakReference to the + * VetoEventListener is held by the EventService. + *

    + * Use this method to avoid having to call unsubscribe(), though with care since garbage collection semantics is + * indeterminate. The service will respect the WeakReference semantics. In other words, if the vetoListener has not + * been garbage collected, then the onEvent will be called normally. If the hard reference has been garbage + * collected, the service will unsubscribe it's WeakReference. + *

    + * It's allowable to call unsubscribe() with the same VetoEventListener hard reference to stop a subscription + * immediately. + *

    + * The service will create the WeakReference on behalf of the caller. + * + * @param eventClass the class of published objects that can be vetoed + * @param vetoListener The vetoListener that can determine whether an event is published. + * + * @return true if the vetoListener was subscribed successfully, false otherwise + */ + public boolean subscribeVetoListenerExactly(Class eventClass, VetoEventListener vetoListener); + + /** + * Subscribes a VetoTopicEventListener to a topic name. Only a WeakReference to the + * VetoEventListener is held by the EventService. + * + * @param topic the name of the topic listened to + * @param vetoListener The vetoListener that can determine whether an event is published. + * + * @return true if the vetoListener was subscribed successfully, false otherwise + */ + public boolean subscribeVetoListener(String topic, VetoTopicEventListener vetoListener); + + /** + * Subscribes an VetoTopicEventListener to all the topic names that match the RegEx Pattern. Only a + * WeakReference to the VetoEventListener is held by the EventService. + * + * @param topicPattern the RegEx pattern to match topics with + * @param vetoListener The vetoListener that can determine whether an event is published. + * + * @return true if the vetoListener was subscribed successfully, false otherwise + */ + public boolean subscribeVetoListener(Pattern topicPattern, VetoTopicEventListener vetoListener); + + /** + * Subscribes a VetoEventListener for an event class and its subclasses. Only a WeakReference to the + * VetoEventListener is held by the EventService. + *

    + * The VetoEventListener will remain subscribed until {@link #unsubscribeVetoListener(Class,VetoEventListener)} is + * called. + * + * @param eventClass the class of published objects to listen to + * @param vetoListener The vetoListener that will accept the events when published. + * + * @return true if the vetoListener was subscribed successfully, false otherwise + */ + public boolean subscribeVetoListenerStrongly(Class eventClass, VetoEventListener vetoListener); + + /** + * Subscribes a VetoEventListener for an event class (but not its subclasses). + *

    + * The VetoEventListener will remain subscribed until {@link #unsubscribeVetoListener(Class,VetoEventListener)} is + * called. + * + * @param eventClass the class of published objects to listen to + * @param vetoListener The vetoListener that will accept the events when published. + * + * @return true if the vetoListener was subscribed successfully, false otherwise + */ + public boolean subscribeVetoListenerExactlyStrongly(Class eventClass, VetoEventListener vetoListener); + + /** + * Subscribes a VetoEventListener to a topic name. + *

    + * The VetoEventListener will remain subscribed until {@link #unsubscribeVetoListener(String,VetoTopicEventListener)} is + * called. + * + * @param topic the name of the topic listened to + * @param vetoListener The topic vetoListener that will accept or reject publication. + * + * @return true if the vetoListener was subscribed successfully, false otherwise + * + * @see #subscribeVetoListenerStrongly(Class,VetoEventListener) + */ + public boolean subscribeVetoListenerStrongly(String topic, VetoTopicEventListener vetoListener); + + /** + * Subscribes a VetoTopicEventListener to a set of topics that match a RegEx expression. + *

    + * The VetoEventListener will remain subscribed until {@link #unsubscribeVetoListener(Pattern,VetoTopicEventListener)} is + * called. + * + * @param topicPattern the RegEx pattern that matches the name of the topics listened to + * @param vetoListener The topic vetoListener that will accept or reject publication. + * + * @return true if the vetoListener was subscribed successfully, false otherwise + * + * @see #subscribeVetoListenerStrongly(Pattern,VetoTopicEventListener) + */ + public boolean subscribeVetoListenerStrongly(Pattern topicPattern, VetoTopicEventListener vetoListener); + + /** + * Stop the subscription for a vetoListener that is subscribed to an event class and its subclasses. + * + * @param eventClass the class of published objects that can be vetoed + * @param vetoListener The vetoListener that will accept or reject publication of an event. + * + * @return true if the vetoListener was subscribed to the event, false if it wasn't + */ + public boolean unsubscribeVetoListener(Class eventClass, VetoEventListener vetoListener); + + /** + * Stop the subscription for a vetoListener that is subscribed to an event class (but not its subclasses). + * + * @param eventClass the class of published objects that can be vetoed + * @param vetoListener The vetoListener that will accept or reject publication of an event. + * + * @return true if the vetoListener was subscribed to the event, false if it wasn't + */ + public boolean unsubscribeVetoListenerExactly(Class eventClass, VetoEventListener vetoListener); + + /** + * Stop the subscription for a VetoTopicEventListener that is subscribed to an event topic name. + * + * @param topic the name of the topic that is listened to + * @param vetoListener The vetoListener that can determine whether an event is published on that topic + * + * @return true if the vetoListener was subscribed to the topic, false if it wasn't + */ + public boolean unsubscribeVetoListener(String topic, VetoTopicEventListener vetoListener); + + /** + * Stop the subscription for a VetoTopicEventListener that is subscribed to an event topic RegEx pattern. + * + * @param topicPattern the RegEx pattern matching the name of the topics listened to + * @param vetoListener The vetoListener that can determine whether an event is published on that topic + * + * @return true if the vetoListener was subscribed to the topicPattern, false if it wasn't + */ + public boolean unsubscribeVetoListener(Pattern topicPattern, VetoTopicEventListener vetoListener); + + /** + * Union of getSubscribersToClass(Class) and getSubscribersToExactClass(Class) + * + * @param eventClass the eventClass of interest + * + * @return the subscribers that will be called when an event of eventClass is published, this includes those + * subscribed that match by exact class and those that match to a class and its supertypes + */ + public List getSubscribers(Class eventClass); + + /** + * Gets subscribers that subscribed with the given a class, but not those subscribed exactly to the class. + * @param eventClass the eventClass of interest + * + * @return the subscribers that are subscribed to match to a class and its supertypes, but not those subscribed by + * exact class + */ + public List getSubscribersToClass(Class eventClass); + + /** + * Gets subscribers that are subscribed exactly to a class, but not those subscribed non-exactly to a class. + * @param eventClass the eventClass of interest + * + * @return the subscribers that are subscribed by exact class but not those subscribed to match to a class and its + * supertypes + */ + public List getSubscribersToExactClass(Class eventClass); + + /** + * Gets the subscribers that subscribed to a generic type. + * + * @param type the type of interest + * + * @return the subscribers that will be called when an event of eventClass is published, this includes those + * subscribed that match by exact class and those that match to a class and its supertypes + */ + public List getSubscribers(Type type); + + /** + * Union of getSubscribersByPattern(String) and geSubscribersToTopic(String) + * + * @param topic the topic of interest + * + * @return the subscribers that will be called when an event is published on the topic. This includes subscribers + * subscribed to match the exact topic name and those subscribed by a RegEx Pattern that matches the topic + * name. + */ + public List getSubscribers(String topic); + + /** + * Get the subscribers that subscribed to a topic. + * @param topic the topic of interest + * + * @return the subscribers that subscribed to the exact topic name. + */ + public List getSubscribersToTopic(String topic); + + /** + * Gets the subscribers that subscribed to a regular expression. + * @param pattern the RegEx pattern that was subscribed to + * + * @return the subscribers that were subscribed to this pattern. + */ + public List getSubscribers(Pattern pattern); + + /** + * Gets the subscribers that subscribed with a Pattern that matches the given topic. + * @param topic a topic to match Patterns against + * + * @return the subscribers that subscribed by a RegEx Pattern that matches the topic name. + */ + public List getSubscribersByPattern(String topic); + + /** + * Gets veto subscribers that subscribed to a given class. + * @param eventClass the eventClass of interest + * + * @return the veto subscribers that will be called when an event of eventClass or its subclasses is published. + */ + public List getVetoSubscribers(Class eventClass); + + /** + * Get veto subscribers that subscribed to a given class exactly. + * @param eventClass the eventClass of interest + * + * @return the veto subscribers that will be called when an event of eventClass (but not its subclasses) is + * published. + */ + public List getVetoSubscribersToExactClass(Class eventClass); + + /** + * Gets the veto subscribers that subscribed to a class. + * @param eventClass the eventClass of interest + * + * @return the veto subscribers that are subscribed to the eventClass and its subclasses + */ + public List getVetoSubscribersToClass(Class eventClass); + + /** + * Union of {@link #getVetoSubscribersToTopic(String)} and {@link #getVetoSubscribersByPattern(String)} + * Misnamed method, should be called {@link #getVetoSubscribers(String)}. Will be deprecated in 1.5. + * + * @param topicOrPattern the topic or pattern of interest + * + * @return the veto subscribers that will be called when an event is published on the topic. + */ + public List getVetoEventListeners(String topicOrPattern); + + /** + * Gets the veto subscribers that subscribed to a topic. + * @param topic the topic of interest + * + * @return the veto subscribers that will be called when an event is published on the topic. + */ + public List getVetoSubscribersToTopic(String topic); + + /** + * Gets the veto subscribers that subscribed to a regular expression. + * @param pattern the RegEx pattern for the topic of interest + * + * @return the veto subscribers that were subscribed to this pattern. + */ + public List getVetoSubscribers(Pattern pattern); + + /** + * Gets the veto subscribers that are subscribed by pattern that match the topic. + * @param topic the topic to match the pattern string subscribed to + * + * @return the veto subscribers that subscribed by pattern that will be called when an event is published on the topic. + */ + public List getVetoSubscribersByPattern(String topic); + + /** + * Misnamed method for backwards compatibility. + * Duplicate of {@link #getVetoSubscribersToTopic(String)}. + * Out of sync with {@link #getSubscribers(String)}. + * @param topic the topic exactly subscribed to + * + * @return the veto subscribers that are subscribed to the topic. + * @deprecated use getVetoSubscribersToTopic instead for direct replacement, + * or use getVetoEventListeners to get topic and pattern matchers. + * In EventBus 2.0 this name will replace getVetoEventListeners() + * and have it's union functionality + */ + public List getVetoSubscribers(String topic); + + /** Clears all current subscribers and veto subscribers */ + public void clearAllSubscribers(); + + /** + * Sets the default cache size for each kind of event, default is 0 (no caching). + *

    + * If this value is set to a positive number, then when an event is published, the EventService caches the event or + * topic payload data for later retrieval. This allows subscribers to find out what has most recently happened + * before they subscribed. The cached event(s) are returned from #getLastEvent(Class), #getLastTopicData(String), + * #getCachedEvents(Class), or #getCachedTopicData(String) + *

    + * The default can be overridden on a by-event-class or by-topic basis. + * + * @param defaultCacheSizePerClassOrTopic the cache size per event + */ + public void setDefaultCacheSizePerClassOrTopic(int defaultCacheSizePerClassOrTopic); + + /** + * The default number of events or payloads kept per event class or topic + * @return the default number of event payloads kept per event class or topic + */ + public int getDefaultCacheSizePerClassOrTopic(); + + /** + * Set the number of events cached for a particular class of event. By default, no events are cached. + *

    + * This overrides any setting for the DefaultCacheSizePerClassOrTopic. + *

    + * Class hierarchy semantics are respected. That is, if there are three events, A, X and Y, and X and Y are both + * derived from A, then setting the cache size for A applies the cache size for all three. Setting the cache size + * for X applies to X and leaves the settings for A and Y in tact. Interfaces can be passed to this method, but they + * only take effect if the cache size of a class or it's superclasses has been set. Just like Class.getInterfaces(), + * if multiple cache sizes are set, the interface names declared earliest in the implements clause of the eventClass + * takes effect. + *

    + * The cache for an event is not adjusted until the next event of that class is published. + * + * @param eventClass the class of event + * @param cacheSize the number of published events to cache for this event + */ + public void setCacheSizeForEventClass(Class eventClass, int cacheSize); + + /** + * Returns the number of events cached for a particular class of event. By default, no events are cached. + *

    + * This result is computed for a particular class from the values passed to #setCacheSizeForEventClass(Class, int), + * and respects the class hierarchy. + * + * @param eventClass the class of event + * + * @return the maximum size of the event cache for the given event class + * + * @see #setCacheSizeForEventClass(Class,int) + */ + public int getCacheSizeForEventClass(Class eventClass); + + /** + * Set the number of published data objects cached for a particular event topic. By default, no data are cached. + *

    + * This overrides any setting for the DefaultCacheSizePerClassOrTopic. + *

    + * Exact topic names take precedence over pattern matching. + *

    + * The cache for a topic is not adjusted until the next publication on that topic. + * + * @param topicName the topic name + * @param cacheSize the number of published data Objects to cache for this topic + */ + public void setCacheSizeForTopic(String topicName, int cacheSize); + + /** + * Set the number of published data objects cached for a topics matching a pattern. By default, no data are cached. + *

    + * This overrides any setting for the DefaultCacheSizePerClassOrTopic. + *

    + * Exact topic names take precedence over pattern matching. + *

    + * The cache for a topic is not adjusted until the next publication on that topic. + * + * @param pattern the pattern matching topic names + * @param cacheSize the number of data Objects to cache for this topic + */ + public void setCacheSizeForTopic(Pattern pattern, int cacheSize); + + /** + * Returns the number of cached data objects published on a particular topic. + *

    + * This result is computed for a particular class from the values passed to #setCacheSizeForEventClass(Class, int), + * and respects the class hierarchy. + * + * @param topic the topic name + * + * @return the maximum size of the data Object cache for the given topic + * + * @see #setCacheSizeForTopic(String,int) + * @see #setCacheSizeForTopic(java.util.regex.Pattern,int) + */ + public int getCacheSizeForTopic(String topic); + + /** + * When caching, returns the last event publish for the type supplied. + * @param eventClass an index into the cache + * + * @return the last event published for this event class, or null if caching is turned off (the default) + */ + public T getLastEvent(Class eventClass); + + /** + * When caching, returns the last set of event published for the type supplied. + * @param eventClass an index into the cache + * + * @return the last events published for this event class, or null if caching is turned off (the default) + */ + public List getCachedEvents(Class eventClass); + + /** + * When caching, returns the last payload published on the topic name supplied. + * @param topic an index into the cache + * + * @return the last data Object published on this topic, or null if caching is turned off (the default) + */ + public Object getLastTopicData(String topic); + + /** + * When caching, returns the last set of payload objects published on the topic name supplied. + * @param topic an index into the cache + * + * @return the last data Objects published on this topic, or null if caching is turned off (the default) + */ + public List getCachedTopicData(String topic); + + /** + * Clears the event cache for a specific event class or interface and it's any of it's subclasses or implementing + * classes. + * + * @param eventClass the event class to clear the cache for + */ + public void clearCache(Class eventClass); + + /** + * Clears the topic data cache for a specific topic name. + * + * @param topic the topic name to clear the cache for + */ + public void clearCache(String topic); + + /** + * Clears the topic data cache for all topics that match a particular pattern. + * + * @param pattern the pattern to match topic caches to + */ + public void clearCache(Pattern pattern); + + /** Clear all event caches for all topics and event. */ + public void clearCache(); + + /** + * Stop a subscription for an object that is subscribed with a ProxySubscriber. + *

    + * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will + * still unsubscribe the object. + * + * @param eventClass class this object is subscribed to by proxy + * @param subscribedByProxy object subscribed by proxy + * @return true if the subscription was cancelled, false if it never existed + */ + boolean unsubscribe(Class eventClass, Object subscribedByProxy); + + /** + * Stop a subscription for an object that is subscribed exactly with a ProxySubscriber. + *

    + * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will + * still unsubscribe the object. + * + * @param eventClass class this object is subscribed to by proxy + * @param subscribedByProxy object subscribed by proxy + * @return true if the subscription was cancelled, false if it never existed + */ + boolean unsubscribeExactly(Class eventClass, Object subscribedByProxy); + + /** + * Stop a subscription for an object that is subscribed to a topic with a ProxySubscriber. + *

    + * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will + * still unsubscribe the object. + * + * @param topic the topic this object is subscribed to by proxy + * @param subscribedByProxy object subscribed by proxy + * @return true if the subscription was cancelled, false if it never existed + */ + boolean unsubscribe(String topic, Object subscribedByProxy); + + /** + * When using annotations, an object may be subscribed by proxy. This unsubscribe method will unsubscribe an object + * that is subscribed with a ProxySubscriber. + *

    + * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will + * still unsubscribe the object. + * + * @param pattern the RegEx expression this object is subscribed to by proxy + * @param subscribedByProxy object subscribed by proxy + * @return true if the subscription was cancelled, false if it never existed + */ + boolean unsubscribe(Pattern pattern, Object subscribedByProxy); + + /** + * Stop a veto subscription for an object that is subscribed with a ProxySubscriber. + *

    + * If an object is subscribed by proxy and it implements VetoSubscriber, then the normal unsubscribe methods will + * still unsubscribe the object. + * + * @param eventClass class this object is subscribed to by proxy + * @param subscribedByProxy object subscribed by proxy + * @return true if the subscription was cancelled, false if it never existed + */ + boolean unsubscribeVeto(Class eventClass, Object subscribedByProxy); + + /** + * Stop a veto subscription for an object that is subscribed exactly with a ProxySubscriber. + *

    + * If an object is subscribed by proxy and it implements VetoSubscriber, then the normal unsubscribe methods will + * still unsubscribe the object. + * + * @param eventClass class this object is subscribed to by proxy + * @param subscribedByProxy object subscribed by proxy + * @return true if the subscription was cancelled, false if it never existed + */ + boolean unsubscribeVetoExactly(Class eventClass, Object subscribedByProxy); + + /** + * Stop a veto subscription for an object that is subscribed to a topic with a ProxySubscriber. + *

    + * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will + * still unsubscribe the object. + * + * @param topic the topic this object is subscribed to by proxy + * @param subscribedByProxy object subscribed by proxy + * @return true if the subscription was cancelled, false if it never existed + */ + boolean unsubscribeVeto(String topic, Object subscribedByProxy); + + /** + * When using annotations, an object may be subscribed by proxy. This unsubscribe method will unsubscribe an object + * that is subscribed with a ProxySubscriber. + *

    + * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will + * still unsubscribe the object. + * + * @param pattern the RegEx expression this object is subscribed to by proxy + * @param subscribedByProxy object subscribed by proxy + * @return true if the subscription was cancelled, false if it never existed + */ + boolean unsubscribeVeto(Pattern pattern, Object subscribedByProxy); +} diff --git a/src/main/java/org/scijava/event/bushe/EventServiceAction.java b/src/main/java/org/scijava/event/bushe/EventServiceAction.java new file mode 100644 index 000000000..bf304b091 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/EventServiceAction.java @@ -0,0 +1,214 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.awt.event.ActionEvent; +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.ImageIcon; + +/** + * Abstract class that publishes a Swing ActionEvent (or another object) to an {@link EventService}. + *

    + * This abstract class ties the Swing Actions with the Event Bus. When fired, an ActionEvent is published on an + * EventService - either the global EventBus or a Container EventService. + *

    + * There are two derivatives of this class: The EventBusAction, which publishes the ActionEvent on the global EventBus, + * and the ContainerEventServiceAction, which publishes the ActionEvent on the a local ContainerEventService. + *

    + * By default the ActionEvent is published on an EventService topic corresponding to this action's + * Action.ACTION_COMMAND_KEY. Though this behavior is highly configurable. See {@link #getTopicName(ActionEvent)} and + * {@link #setTopicName(String)} for ways to customize the topic used. Override {@link #getTopicValue(ActionEvent)} to + * publish an object other than the ActionEvent. + *

    + * Instead of publishing on a topic, the ActionEvent can be published using class-based publication, use {@link + * #setPublishesOnTopic(boolean)} to set this behavior. When using class-based publication, the ActionEvent is published + * by default. Override {@link #getEventServiceEvent(ActionEvent)} to publish an object other than the ActionEvent. + * + * @author Michael Bushe michael@bushe.com + */ +public abstract class EventServiceAction extends AbstractAction { + public static final String EVENT_SERVICE_TOPIC_NAME = "event-service-topic"; + + private boolean throwsExceptionOnNullEventService = true; + public static final String EVENT_BUS_EVENT_CLASS_NAME = "eventBus.eventClassName"; + + private String topicName; + private boolean publishesOnTopic = true; + + public EventServiceAction() { + } + + public EventServiceAction(String actionName, ImageIcon icon) { + super(actionName, icon); + } + + + /** + * Override to return the EventService on which to publish. + * + * @param event the event passed to #execute(ActionEvent) + * + * @return the event service to publish on, if null and + * getThrowsExceptionOnNullEventService() is true (default) an exception is thrown + * + * @see EventBusAction + * @see ContainerEventServiceAction + */ + protected abstract EventService getEventService(ActionEvent event); + + /** @return true if this action publishes on a topic, false if it uses class-based publication. */ + public boolean isPublishesOnTopic() { + return publishesOnTopic; + } + + /** + * Sets whether this action publishes on a topic or uses class-based publication. + * + * @param onTopic true if publishes on topic (the default), false if using class-based publication. + */ + public void setPublishesOnTopic(boolean onTopic) { + this.publishesOnTopic = onTopic; + } + + /** + * Explicitly sets the topic name this action publishes on. + *

    + * A topic name does not need to be explicitly set. See {@link #getTopicName(ActionEvent)} to understand how the + * topic name is determined implicitly. + */ + public void setTopicName(String topicName) { + this.topicName = topicName; + } + + /** + * The topic name is the first non-null value out of:

    1. A topic name explicitly set via {@link + * #setTopicName(String)}
    2. the action's getValue("event-service-topic") {@link #EVENT_SERVICE_TOPIC_NAME}
    3. the + * action's getValue("ID") (for compatibility with the SAM ActionManager's ID)
    4. the action's {@link + * javax.swing.Action#ACTION_COMMAND_KEY}
    5. the action event's {@link javax.swing.Action#ACTION_COMMAND_KEY} + *
    6. the action's {@link javax.swing.Action#NAME} the value is used (if the value is not a String, the value's + * toString() is used). + *

      + * To use a different name, override this method. + * + * @param event the event passed to #execute(ActionEvent) + * + * @return the topic name to publish on, getId() by default + */ + public String getTopicName(ActionEvent event) { + if (topicName != null) { + return topicName; + } + Object topic = getValue(EVENT_SERVICE_TOPIC_NAME); + if (topic != null) { + return topic + ""; + } else { + topic = getValue("ID"); + if (topic != null) { + return topic + ""; + } else { + topic = getValue(Action.ACTION_COMMAND_KEY); + if (topic != null) { + return topic + ""; + } else { + topic = event.getActionCommand(); + if (topic != null) { + return topic + ""; + } else { + return (String) getName(); + } + } + } + } + } + + /** + * By default, the ActionEvent is the object published on the topic. Override this method to publish another + * object. + * + * @param event the event passed to #execute(ActionEvent) + * + * @return the topic value to publish, getId() by default + */ + protected Object getTopicValue(ActionEvent event) { + return event; + } + + /** @return the name of the action (javax.swing.Action#NAME) */ + public Object getName() { + return getValue(Action.NAME); + } + + /** + * If isPublishesOnTopic() returns false (i.e., when using class-based rather than topic-based publication), then + * override this method to publish an on object other than the ActionEvent. + * + * @return the Object to publish, cannot be null + */ + protected Object getEventServiceEvent(ActionEvent event) { + return event; + } + + /** + * Publishes the event on the EventService returned by getEventService(event) + *

      + * Gets the EventService from {@link #getEventService(java.awt.event.ActionEvent)}. Checks isPublishesOnTopic(). If true, + * gets the topic name from {@link #getTopicName(java.awt.event.ActionEvent)} and the topic value from {@link + * #getTopicValue(ActionEvent)}, and publishes the value on the topic on the EventService. If false, gets event from + * {@link #getEventServiceEvent(java.awt.event.ActionEvent)}, and publishes the event on the EventService. + *

      + * + * @param event the action event to publish. + * + * @throws RuntimeException if getThrowsExceptionOnNullEventService() && getEventService(event) == null + */ + public void actionPerformed(ActionEvent event) { + EventService eventService = getEventService(event); + if (eventService == null) { + if (getThrowsExceptionOnNullEventService()) { + throw new RuntimeException("Null EventService supplied to EventServiceAction with name:" + getName()); + } else { + return; + } + } + if (isPublishesOnTopic()) { + String topic = getTopicName(event); + Object topicValue = getTopicValue(event); + eventService.publish(topic, topicValue); + } else { + Object esEvent = getEventServiceEvent(event); + eventService.publish(esEvent); + } + } + + /** + * By default, exceptions are throw if getEventService() returns null. + * + * @return false to suppress this behavior + */ + public boolean getThrowsExceptionOnNullEventService() { + return throwsExceptionOnNullEventService; + } + + /** + * By default, exceptions are thrown if getEventService() returns null. + * + * @param throwsExceptionOnNullEventService true to suppress the exception when there is no event service + */ + public void setThrowsExceptionOnNullEventService(boolean throwsExceptionOnNullEventService) { + this.throwsExceptionOnNullEventService = throwsExceptionOnNullEventService; + } +} diff --git a/src/main/java/org/scijava/event/bushe/EventServiceEvent.java b/src/main/java/org/scijava/event/bushe/EventServiceEvent.java new file mode 100644 index 000000000..11a6e6edd --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/EventServiceEvent.java @@ -0,0 +1,30 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * Convenience interface for events that get processed by the EventService, its usage is not required in any way. Any + * object can be published on an EventService or on the EventBus. + *

      + * It is a good practice to specify the source of the event when using pub/sub, especially in Swing applications. + * + * @author Michael Bushe michael@bushe.com + * @see AbstractEventServiceEvent for a simple base class + */ +public interface EventServiceEvent { + /** @return The issuer of the event. */ + Object getSource(); +} diff --git a/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java b/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java new file mode 100644 index 000000000..4e1cb6f1f --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java @@ -0,0 +1,8 @@ +package org.scijava.event.bushe; + +/** Exception thrown by the EventServiceLocator when an EventService already is registered for a name. */ +public class EventServiceExistsException extends Exception { + public EventServiceExistsException(String msg) { + super(msg); + } +} diff --git a/src/main/java/org/scijava/event/bushe/EventServiceLocator.java b/src/main/java/org/scijava/event/bushe/EventServiceLocator.java new file mode 100644 index 000000000..9d631196e --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/EventServiceLocator.java @@ -0,0 +1,174 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.util.HashMap; +import java.util.Map; + +/** + * A central registry of EventServices. Used by the {@link EventBus}. + *

      + * By default will lazily hold a SwingEventService, which is mapped to {@link #SERVICE_NAME_SWING_EVENT_SERVICE} and + * returned by {@link #getSwingEventService()}. Also by default this same instance is returned by {@link #getEventBusService()}, + * is mapped to {@link #SERVICE_NAME_EVENT_BUS} and wrapped by the EventBus. + *

      + * Since the default EventService implementation is thread safe, and since it's not good to have lots of events on the + * EventDispatchThread you may want multiple EventServices running on multiple threads, perhaps pulling events from a + * server and coalescing them into one or more events that are pushed onto the EDT. + *

      + * To change the default implementation class for the EventBus' EventService, use the API: + *

      + * EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, new SomeEventServiceImpl());
      + * 
      + * Or use system properties by: + *
      + * System.setProperty(EventServiceLocator.SERVICE_NAME_EVENT_BUS, YourEventServiceImpl.class.getName());
      + * 
      + * Likewise, you can set this on the command line via -Dorg.scijava.event.bushe.swingEventServiceClass=foo.YourEventServiceImpl + *

      + * To change the default implementation class for the SwingEventService, use the API: + *

      + * EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, new SomeSwingEventServiceImpl());
      + * 
      + * Or use system properties by: + *
      + * System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, YourEventServiceImpl.class.getName());
      + * 
      + * Likewise, you can set this on the command line via -Dorg.scijava.event.bushe.swingEventServiceClass=foo.YourEventServiceImpl + * + * @author Michael Bushe michael@bushe.com + */ +public class EventServiceLocator { + /** The name "EventBus" is reserved for the service that the EventBus wraps and is returned by {@link #getEventBusService}.*/ + public static final String SERVICE_NAME_EVENT_BUS = "EventBus"; + /** The name "SwingEventService" is reserved for the service that is returned by {@link #getSwingEventService}. */ + public static final String SERVICE_NAME_SWING_EVENT_SERVICE = "SwingEventService"; + + /** + * Set this Java property to a Class that implements EventService to use an instance of that class instead of + * the instance returned by {@link #getSwingEventService}. Must be set before {@link #getEventBusService()} is called. + */ + public static final String EVENT_BUS_CLASS = "org.scijava.event.bushe.eventBusClass"; + /** + * Set this Java property to a Class that implements EventService to use an instance of that class instead of + * {@link SwingEventService} as service returned by {@link #getSwingEventService}. Must be set on startup or + * before the method {@link #getSwingEventService}is called. + */ + public static final String SWING_EVENT_SERVICE_CLASS = "org.scijava.event.bushe.swingEventServiceClass"; + + private static EventService EVENT_BUS_SERVICE; + private static EventService SWING_EVENT_SERVICE; + + private static final Map EVENT_SERVICES = new HashMap(); + + /** @return the singleton instance of the EventService used by the EventBus */ + public static synchronized EventService getEventBusService() { + if (EVENT_BUS_SERVICE == null) { + EVENT_BUS_SERVICE = getEventService(EVENT_BUS_CLASS, getSwingEventService()); + EVENT_SERVICES.put(SERVICE_NAME_EVENT_BUS, EVENT_BUS_SERVICE); + } + return EVENT_BUS_SERVICE; + } + + /** @return the singleton instance of a SwingEventService */ + public static synchronized EventService getSwingEventService() { + if (SWING_EVENT_SERVICE == null) { + SWING_EVENT_SERVICE = getEventService(SWING_EVENT_SERVICE_CLASS, new SwingEventService()); + EVENT_SERVICES.put(SERVICE_NAME_SWING_EVENT_SERVICE, SWING_EVENT_SERVICE); + } + return SWING_EVENT_SERVICE; + } + + /** + * @param serviceName the service name of the EventService, as registered by #setEventService(String, EventService), + * or {@link #SERVICE_NAME_EVENT_BUS} or {@link #SERVICE_NAME_SWING_EVENT_SERVICE} . + * + * @return a named event service instance + */ + public static synchronized EventService getEventService(String serviceName) { + EventService es = (EventService) EVENT_SERVICES.get(serviceName); + if (es == null) { + if (SERVICE_NAME_EVENT_BUS.equals(serviceName)) { + es = getEventBusService(); + } else if (SERVICE_NAME_SWING_EVENT_SERVICE.equals(serviceName)) { + es = getSwingEventService(); + } + } + return es; + } + + /** + * Registers a named EventService to the locator. Can be used to change the default EventBus implementation. + * + * @param serviceName a named event service instance + * @param es the EventService to attach to the service name + * + * @throws EventServiceExistsException if a service by this name already exists and the new service is non-null + */ + public static synchronized void setEventService(String serviceName, EventService es) throws EventServiceExistsException { + if (EVENT_SERVICES.get(serviceName) != null && es != null) { + throw new EventServiceExistsException("An event service by the name " + serviceName + "already exists. Perhaps multiple threads tried to create a service about the same time?"); + } else { + EVENT_SERVICES.put(serviceName, es); + if (SERVICE_NAME_EVENT_BUS.equals(serviceName)) { + EVENT_BUS_SERVICE = es; + } else if (SERVICE_NAME_SWING_EVENT_SERVICE.equals(serviceName)) { + SWING_EVENT_SERVICE = es; + } + } + } + + /** + * Use this carefully. Clears all the event services, including the SwingEventService (used by EventBus). + *

      + * Callers may want to resubscribe existing subscribers. + */ + static synchronized void clearAll() { + EVENT_SERVICES.clear(); + EVENT_BUS_SERVICE = null; + SWING_EVENT_SERVICE = null; + } + + private static synchronized EventService getEventService(String eventServiceClassPropertyName, EventService defaultService) { + EventService result; + String eventServiceClassName = System.getProperty(eventServiceClassPropertyName); + if (eventServiceClassName != null) { + Class sesClass; + try { + sesClass = Class.forName(eventServiceClassName); + } catch (ClassNotFoundException e) { + throw new RuntimeException("Could not find class specified in the property " + eventServiceClassPropertyName + ". Class=" + eventServiceClassName, e); + } + Object service; + try { + service = sesClass.newInstance(); + } catch (InstantiationException e) { + throw new RuntimeException("InstantiationException creating instance of class set from Java property" + eventServiceClassPropertyName + ". Class=" + eventServiceClassName, e); + } catch (IllegalAccessException e) { + throw new RuntimeException("IllegalAccessException creating instance of class set from Java property" + eventServiceClassPropertyName + ". Class=" + eventServiceClassName, e); + } + try { + result = (EventService) service; + } catch (ClassCastException ex) { + throw new RuntimeException("ClassCastException casting to " + EventService.class + " from instance of class set from Java property" + eventServiceClassPropertyName + ". Class=" + eventServiceClassName, ex); + } + } else { + result = defaultService; + } + return result; + } + +} diff --git a/src/main/java/org/scijava/event/bushe/EventSubscriber.java b/src/main/java/org/scijava/event/bushe/EventSubscriber.java new file mode 100644 index 000000000..03e8f9227 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/EventSubscriber.java @@ -0,0 +1,35 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * Callback interface for class-based subscribers of an {@link EventService}. + * + * @author Michael Bushe michael@bushe.com + */ +public interface EventSubscriber { + + /** + * Handle a published event.

      The EventService calls this method on each publication of an object that matches the + * class or interface passed to one of the EventService's class-based subscribe methods, specifically, {@link + * EventService#subscribe(Class,EventSubscriber)} {@link EventService#subscribeExactly(Class,EventSubscriber)} + * {@link EventService#subscribeStrongly(Class,EventSubscriber)} and {@link EventService#subscribeExactlyStrongly(Class, + *EventSubscriber)}. + * + * @param event The Object that is being published. + */ + public void onEvent(T event); +} diff --git a/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java new file mode 100644 index 000000000..dbcd8bd87 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java @@ -0,0 +1,38 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * Callback interface for topic-based subscribers of an {@link EventService}. + * + * @author Michael Bushe michael@bushe.com + */ +public interface EventTopicSubscriber { + + /** + * Handle an event published on a topic. + *

      + * The EventService calls this method on each publication on a matching topic name passed to one of the + * EventService's topic-based subscribe methods, specifically, {@link EventService#subscribe(String, + *EventTopicSubscriber)} {@link EventService#subscribe(java.util.regex.Pattern,EventTopicSubscriber)} {@link + * EventService#subscribeStrongly(String,EventTopicSubscriber)} and {@link EventService#subscribeStrongly(java.util.regex.Pattern, + *EventTopicSubscriber)}. + * + * @param topic the name of the topic published on + * @param data the data object published on the topic + */ + public void onEvent(String topic, T data); +} diff --git a/src/main/java/org/scijava/event/bushe/Logger.java b/src/main/java/org/scijava/event/bushe/Logger.java new file mode 100644 index 000000000..0c940eec6 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/Logger.java @@ -0,0 +1,218 @@ +package org.scijava.event.bushe; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Map; +import java.util.HashMap; + +/** + * Central Logging class. Shields code from Logging implementation. + *

      + * The EventBus allows operation in two modes - using java.util.logging so that + * the EventBus can be deployed in its own jar or using any logging system supported + * by apache commons logging, which of course requires other jars. + *

      + * The EventBus logging uses the names of its classes as the log, primarily + * "org.scijava.event.bushe.EventService". This aids in debugging which subscription and publication issues. + *

      + * Implementation note: There are no imports in this class to make things + * explicit. There is also no explicit use of classes outside java.util, + * anything else is used by reflection to avoid NoClassDefFound errors on class load. + */ +public class Logger { + private java.util.logging.Logger utilLogger; + private /*Untyped to avoid java.lang.NoClassDefFoundError + org.apache.commons.logging.Log*/ Object commonsLogger; + private Map METHOD_CACHE_NO_PARAMS; + private Map METHOD_CACHE_ONE_PARAM; + private Map METHOD_CACHE_TWO_PARAMS; + private static Class logFactoryClass; + private static Class logClass; + private static Method getLogMethod; + private static final Object[] EMPTY_ARGS = new Object[0]; + private static final Class[] CLASS_ARGS_EMPTY = new Class[0]; + private static final Class[] CLASS_ARGS_ONE = new Class[]{Object.class}; + private static final Class[] CLASS_ARGS_TWO = new Class[]{Object.class, Throwable.class}; + + /** Allows switching between Java and Commons logging.*/ + public static enum LoggerType { + /*java.util.logging*/ + JAVA, + /*org.apache.commons.logging*/ + COMMONS + } + + /** Standardized logging levels. */ + public static enum Level { + FATAL, + ERROR, + WARN, + INFO, + DEBUG, + TRACE + } + + public static LoggerType LOGGER_TYPE= null; + + public static Logger getLogger(String name) { + if (LOGGER_TYPE == null) { + LOGGER_TYPE = getLoggerType(); + } + if (LOGGER_TYPE == LoggerType.COMMONS) { + try { + Object logger = getLogMethod.invoke(null, name); + return new Logger(logger); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + return new Logger(java.util.logging.Logger.getLogger(name)); + } + + /** + * This method should only be called once in a JVM run. + * @return + */ + private static LoggerType getLoggerType() { + LoggerType result = null; + //See if apache commons is available + try { + logFactoryClass = Class.forName("org.apache.commons.logging.LogFactory"); + getLogMethod = logFactoryClass.getMethod("getLog", new Class[]{String.class}); + logClass = Class.forName("org.apache.commons.logging.Log"); + return LoggerType.COMMONS; + } catch (Throwable e) { + } + return LoggerType.JAVA; + } + + public Logger(java.util.logging.Logger utilLogger) { + this.utilLogger = utilLogger; + } + + public Logger(Object commonsLogger) { + this.commonsLogger = commonsLogger; + } + + /** + * Returns whether this level is loggable. If there is + * a misconfiguration, this will always return false. + * @param level the EventBus Logger level + * @return whether this level is loggable. + */ + public boolean isLoggable(Level level) { + if (utilLogger != null) { + java.util.logging.Level javaLevel = getJavaLevelFor(level); + return javaLevel != null && utilLogger.isLoggable(javaLevel); + } else if (commonsLogger != null) { + switch (level) { + case ERROR: return (Boolean)callCommonsLogger("isErrorEnabled"); + case FATAL: return (Boolean)callCommonsLogger("isFatalEnabled"); + case WARN: return (Boolean)callCommonsLogger("isWarnEnabled"); + case INFO: return (Boolean)callCommonsLogger("isInfoEnabled"); + case DEBUG: return (Boolean)callCommonsLogger("isDebugEnabled"); + case TRACE: return (Boolean)callCommonsLogger("isTraceEnabled"); + } + } + return false; + } + + private java.util.logging.Level getJavaLevelFor(Level level) { + switch (level) { + case FATAL: return java.util.logging.Level.SEVERE; + case ERROR: return java.util.logging.Level.SEVERE; + case WARN: return java.util.logging.Level.WARNING; + case INFO: return java.util.logging.Level.INFO; + case DEBUG: return java.util.logging.Level.FINE; + case TRACE: return java.util.logging.Level.FINEST; + } + return null; + } + + public void debug(String message) { + log(Level.DEBUG, message); + } + + public void log(Level level, String message) { + log(level, message, null); + } + + public void log(Level level, String message, Throwable throwable) { + if (!isLoggable(level)) { + return; + } + if (utilLogger != null) { + java.util.logging.Level javaLevel = getJavaLevelFor(level); + if (throwable == null) { + utilLogger.log(javaLevel, message); + } else { + utilLogger.log(javaLevel, message, throwable); + } + } else if (commonsLogger != null) { + if (throwable == null) { + switch (level) { + case ERROR: callCommonsLogger("error", message); break; + case FATAL: callCommonsLogger("fatal", message); break; + case WARN: callCommonsLogger("warn", message); break; + case INFO: callCommonsLogger("info", message); break; + case DEBUG: callCommonsLogger("debug", message); break; + case TRACE: callCommonsLogger("trace", message); break; + } + } else { + switch (level) { + case ERROR: callCommonsLogger("error", message, throwable); break; + case FATAL: callCommonsLogger("fatal", message, throwable); break; + case WARN: callCommonsLogger("warn", message, throwable); break; + case INFO: callCommonsLogger("info", message, throwable); break; + case DEBUG: callCommonsLogger("debug", message, throwable); break; + case TRACE: callCommonsLogger("trace", message, throwable); break; + } + } + } + } + + private Object callCommonsLogger(String methodName) { + if (METHOD_CACHE_NO_PARAMS == null) { + METHOD_CACHE_NO_PARAMS = new HashMap(); + } + return callCommonsLogger(METHOD_CACHE_NO_PARAMS, methodName, CLASS_ARGS_EMPTY, EMPTY_ARGS); + } + + private Object callCommonsLogger(String methodName, String message) { + if (METHOD_CACHE_ONE_PARAM == null) { + METHOD_CACHE_ONE_PARAM = new HashMap(); + } + return callCommonsLogger(METHOD_CACHE_ONE_PARAM, methodName, CLASS_ARGS_ONE, new Object[]{message}); + } + + private Object callCommonsLogger(String methodName, String message, Throwable throwable) { + if (METHOD_CACHE_TWO_PARAMS == null) { + METHOD_CACHE_TWO_PARAMS = new HashMap(); + } + return callCommonsLogger(METHOD_CACHE_TWO_PARAMS, methodName, CLASS_ARGS_TWO, new Object[]{message, throwable}); + } + + private Object callCommonsLogger(Map cache, String methodName, Class[] classOfArgs, Object[] args) { + Method method = cache.get(methodName); + if (method == null) { + try { + method = logClass.getMethod(methodName, classOfArgs); + cache.put(methodName, method); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + } + if (method == null) { + return null; + } + try { + return method.invoke(commonsLogger, args); + } catch (IllegalAccessException e) { + return null; + } catch (InvocationTargetException e) { + return null; + } + } +} diff --git a/src/main/java/org/scijava/event/bushe/ObjectEvent.java b/src/main/java/org/scijava/event/bushe/ObjectEvent.java new file mode 100644 index 000000000..db9790a76 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/ObjectEvent.java @@ -0,0 +1,42 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * A simple event that delivers an untyped object with a source object. + *

      + * Usage: EventBus.publish(new ObjectEvent(this, objectOfInterest); + * + * @author Michael Bushe michael@bushe.com + */ +public class ObjectEvent extends AbstractEventServiceEvent { + private Object eventObject; + + /** + * Constructor + * + * @param sourceObject the source of the event + * @param payload the payload or eventObject of the event + */ + public ObjectEvent(Object sourceObject, Object payload) { + super(sourceObject); + this.eventObject = payload; + } + + public Object getEventObject() { + return eventObject; + } +} diff --git a/src/main/java/org/scijava/event/bushe/Prioritized.java b/src/main/java/org/scijava/event/bushe/Prioritized.java new file mode 100644 index 000000000..ba57f4611 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/Prioritized.java @@ -0,0 +1,14 @@ +package org.scijava.event.bushe; + +/** + * Subscribers can implement this interface in order to affect the order in which they are called. + *

      + * Subscribers that do not implement this interface are called on a FIFO basis, as are subscribers that implement this + * interface and return 0. If the priority returned from this interface is negative, then this subscriber will be + * called before non-Prioritized subscribers, the more negative, the earlier it is called. If the priority returned + * from this interface is positive, then this subscriber will be called after non-Prioritized subscribers, the more + * positive, the later it is called. + */ +public interface Prioritized { + int getPriority(); +} diff --git a/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java b/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java new file mode 100644 index 000000000..ea90a6425 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java @@ -0,0 +1,8 @@ +package org.scijava.event.bushe; + +/** + * This is a convenience interface, particularly for inner classes, that implements + * {@link EventSubscriber} and {@link Prioritized}. + */ +public interface PrioritizedEventSubscriber extends EventSubscriber, Prioritized { +} diff --git a/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java new file mode 100644 index 000000000..821259dec --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java @@ -0,0 +1,8 @@ +package org.scijava.event.bushe; + +/** + * This is a convenience interface, particularly for inner classes, that implements + * {@link org.scijava.event.bushe.EventTopicSubscriber} and {@link org.scijava.event.bushe.Prioritized}. + */ +public interface PrioritizedEventTopicSubscriber extends EventTopicSubscriber, Prioritized { +} \ No newline at end of file diff --git a/src/main/java/org/scijava/event/bushe/ProxySubscriber.java b/src/main/java/org/scijava/event/bushe/ProxySubscriber.java new file mode 100644 index 000000000..23ecaf8a0 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/ProxySubscriber.java @@ -0,0 +1,45 @@ +/** + * Copyright 2007 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import org.scijava.event.bushe.annotation.ReferenceStrength; + +/** + * An interface that can be implemented when proxies are used for subscription, not needed in normal usage. When an + * unsubscribe method is called on an EventService, the EventService is required to check if any of subscribed objects + * are ProxySubscribers and if the object to be unsubscribed is the ProxySubscriber's proxiedSubscriber. If so, the + * EventService proxy is unsubscribed and the ProxySubscriber's proxyUnsubscribed() method is called to allow the proxy + * to perform any cleanup if necessary. ProxySubscribers should set their references to their proxied objects to null + * for strong subscriptions to allow garbage collection. + * + * @author Michael Bushe + */ +public interface ProxySubscriber { + + /** @return the object this proxy is subscribed on behalf of */ + public Object getProxiedSubscriber(); + + /** + * Called by EventServices to inform the proxy that it is unsubscribed. The ProxySubscriber should null the + * reference to it's proxied subscriber + */ + public void proxyUnsubscribed(); + + /** + * @return the reference strength from this proxy to the proxied subscriber + */ + public ReferenceStrength getReferenceStrength(); +} diff --git a/src/main/java/org/scijava/event/bushe/PublicationStatus.java b/src/main/java/org/scijava/event/bushe/PublicationStatus.java new file mode 100644 index 000000000..acdf3d4e2 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/PublicationStatus.java @@ -0,0 +1,30 @@ +package org.scijava.event.bushe; + +/** + * The status of an event as it makes its way from publication through processing by subscribers. + *

      + * EventServices are required to stamp any event object or payload that implements the PublicationStatusTracker + * with the corresponding PublicationStatus as the event object is processed. The EventService is not + * required to set the Unpublished state. + */ +public enum PublicationStatus { + /** Recommended default.*/ + Unpublished, + /** Set directly after publication on an EventService.*/ + Initiated, + /** End status for events that are vetoed and never sent to subscribers.*/ + Vetoed, + /** State set after veto test is passed before the event is send to any subscribers.*/ + Queued, + /** Set while the event is sent to it's subscribers. EventService implementations + * such as the ThreadSafeEventService and the SwingEventService will transition from Queued to + * Publishing immediately. Others implementations that call subscribers on threads different + * from veto subscribers are free to leave an event in the Queued state and wait until + * the event is passed to the thread(s) that subscribers are called on to set the + * Publishing state */ + Publishing, + /** + * Called when all subscribers have finished handling the event publication. + */ + Completed +} diff --git a/src/main/java/org/scijava/event/bushe/PublicationStatusTracker.java b/src/main/java/org/scijava/event/bushe/PublicationStatusTracker.java new file mode 100644 index 000000000..b22520751 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/PublicationStatusTracker.java @@ -0,0 +1,24 @@ +package org.scijava.event.bushe; + +/** + * An optional interface that can be implemented by Events objects or topic Payloads + * to enable the events' status to be stamped on the event by an event service. + *

      + * EventService implementations must call setEventStatus(status) on event objects and + * payloads that implement this interface. + */ +public interface PublicationStatusTracker { + + /** + * Implementations of this method must be made thread safe. + * @return last value set by setPublicationStatus(), or + * {@link PublicationStatus#Unpublished} if setPublicationStatus was never called. + */ + public PublicationStatus getPublicationStatus(); + + /** + * Implementations of this method must be made thread safe. + * @param status the status of the event during it's current publication + */ + public void setPublicationStatus(PublicationStatus status); +} diff --git a/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java b/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java new file mode 100644 index 000000000..41dee9629 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java @@ -0,0 +1,116 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * This event is published internally to report timing for subscribers on an EventService. Applications may subscribe to + * this event to do handle subscribers that take too long. + * + * @author Michael Bushe michael@bushe.com + * @see ThreadSafeEventService + */ +public class SubscriberTimingEvent extends AbstractEventServiceEvent { + private Long start; + private Long end; + private Long timeLimitMilliseconds; + private Object event; + private EventSubscriber subscriber; + private VetoEventListener vetoEventListener; + private String stringified; + + /** + * Create a timing event + * + * @param source event source + * @param start system time at start of the notification of listener + * @param end system time at end of the notification of listener + * @param timeLimitMilliseconds expected maximum time + * @param event the published event + * @param subscriber the event subscriber that went over the time limit, can be null if vetoEventListener is not + * null + * @param vetoEventListener the vetoEventListener that took too long, can be null if the eventListener is not null + */ + public SubscriberTimingEvent(Object source, Long start, Long end, Long timeLimitMilliseconds, + Object event, EventSubscriber subscriber, VetoEventListener vetoEventListener) { + super(source); + this.start = start; + this.end = end; + this.timeLimitMilliseconds = timeLimitMilliseconds; + this.event = event; + this.subscriber = subscriber; + this.vetoEventListener = vetoEventListener; + String type = "EventServiceSubscriber"; + String thing = ", EventServiceSubscriber:" + subscriber; + if (vetoEventListener != null) { + type = "VetoEventListener"; + thing = ", VetoEventListener" + vetoEventListener; + } + try { + stringified = "Time limit exceeded for " + type + ". Handling time=" + (end.longValue() - start.longValue()) + + ", Time limit=" + timeLimitMilliseconds + ", event:" + event + + thing + ", start:" + start + ", end:" + end; + } catch (Exception ex) { + stringified = "Time limit exceeded for event, toString threw and exception."; + } + } + + /** @return system time at start of the notification of listener */ + public Long getStart() { + return start; + } + + /** @return system time at end of the notification of listener */ + public Long getEnd() { + return end; + } + + /** @return expected maximum time */ + public Long getTimeLimitMilliseconds() { + return timeLimitMilliseconds; + } + + /** @return the published event */ + public Object getEvent() { + return event; + } + + /** + * @return subscriber the event subscriber that went over the time limit, can be null if vetoEventListener is not + * null + */ + public EventSubscriber getSubscriber() { + return subscriber; + } + + /** @return the vetoEventListener that took too long, can be null if the eventListener is not null */ + public VetoEventListener getVetoEventListener() { + return vetoEventListener; + } + + /** @return true if a veto listener took too long, false if an EventSubscriber took took long */ + public boolean isVetoExceeded() { + return vetoEventListener != null; + } + + /** @return true if an EventSubscriber took too long, false if a veto listener took took long */ + public boolean isEventHandlingExceeded() { + return subscriber == null; + } + + public String toString() { + return stringified; + } +} diff --git a/src/main/java/org/scijava/event/bushe/SwingEventService.java b/src/main/java/org/scijava/event/bushe/SwingEventService.java new file mode 100644 index 000000000..aded25830 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/SwingEventService.java @@ -0,0 +1,93 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import javax.swing.*; +import java.util.Arrays; +import java.util.List; + +/** + * An {@link EventService} implementation for Swing. + *

      + * This class is Swing thread-safe. All publish() calls NOT on the Swing EventDispatchThread thread are queued onto the + * EDT. If the calling thread is the EDT, then this is a simple pass-through (i.e the subscribers are notified on the + * same stack frame, just like they would be had they added themselves via Swing addXXListener methods). + * + * @author Michael Bushe michael@bushe.com + */ +public class SwingEventService extends ThreadSafeEventService { + + /** + * By default, the SwingEventService is constructed such that any listener that takes over 200 ms causes an + * SubscriberTimingEvent to be published. You will need to add a subscriber to this event. Note that if you use + * event to launch a modal dialog, the timings will be as long as the dialog is up - this is the way Swing works. + */ + public SwingEventService() { + super((long) 200, false, null, null, null); + } + + public SwingEventService(Long timeThresholdForEventTimingEventPublication) { + super(timeThresholdForEventTimingEventPublication, false, null, null, null); + } + + /** + * Create a SwingEventService is such that any listener that takes over timeThresholdForEventTimingEventPublication + * milliseconds causes an EventSubscriberTimingEvent to be published. You can add a subscriber to this event or set + * subscribeTimingEventsInternally to true to cause the default logging to occur through the protected {@link + * #subscribeTiming(SubscriberTimingEvent)} call. + *

      + * Note that if you use event to launch a modal dialog, the timings will be as long as the dialog is up - this is the + * way Swing works. + * + * @param timeThresholdForEventTimingEventPublication the longest time a subscriber should spend handling an event, + * The service will publish an SubscriberTimingEvent after listener processing if the time was exceeded. If null, no + * SubscriberTimingEvent will be issued. + * @param subscribeTimingEventsInternally add a subscriber to the EventSubscriberTimingEvent internally and call the + * protected {@link #subscribeTiming(SubscriberTimingEvent)} method when they occur. This logs a warning to the + * {@link Logger} logger by default. + * + * @throws IllegalArgumentException if timeThresholdForEventTimingEventPublication is null and + * subscribeTimingEventsInternally is true. + */ + public SwingEventService(Long timeThresholdForEventTimingEventPublication, boolean subscribeTimingEventsInternally) { + super(timeThresholdForEventTimingEventPublication, subscribeTimingEventsInternally, null, null, null); + } + + /** + * Same as ThreadSafeEventService.publish(), except if the call is coming from a thread that is not the Swing Event + * Dispatch Thread, the request is put on the EDT through a a call to SwingUtilities.invokeLater(). Otherwise this + * DOES NOT post a new event on the EDT. The subscribers are called on the same EDT event, just like addXXXListeners + * would be. + */ + protected void publish(final Object event, final String topic, final Object eventObj, + final List subscribers, final List vetoSubscribers, final StackTraceElement[] callingStack) { + if (SwingUtilities.isEventDispatchThread()) { + super.publish(event, topic, eventObj, subscribers, vetoSubscribers, callingStack); + } else { + //Make call to this method - stick on the EDT if not on the EDT + //Check the params first so that this thread can get the exception thrown + SwingUtilities.invokeLater(new Runnable() { + public void run() { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("publish(" + event + "," + topic + "," + eventObj + + "), called from non-EDT Thread:" + Arrays.toString(callingStack)); + } + SwingEventService.super.publish(event, topic, eventObj, subscribers, vetoSubscribers, callingStack); + } + }); + } + } +} diff --git a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java new file mode 100644 index 000000000..4f78f02a7 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java @@ -0,0 +1,2216 @@ +/** + * Copyright 2005-2007 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.lang.ref.WeakReference; +import java.lang.reflect.Type; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.WildcardType; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Timer; +import java.util.TimerTask; +import java.util.Collections; +import java.util.Comparator; +import java.util.regex.Pattern; + +import org.scijava.event.bushe.Logger.Level; +import org.scijava.event.bushe.annotation.ReferenceStrength; +import org.scijava.event.bushe.exception.SwingException; + +/** + * A thread-safe EventService implementation. + *

      Multithreading

      + *

      + * This implementation is not Swing thread-safe. If publication occurs on a thread other than the Swing + * EventDispatchThread, subscribers will receive the event on the calling thread, and not the EDT. Swing components + * should use the SwingEventService instead, which is the implementation used by the EventBus. + *

      + * Two threads may be accessing the ThreadSafeEventService at the same time, one unsubscribing a + * listener for topic "A" and the other publishing on topic "A". If the unsubscribing thread gets the lock first, + * then it is unsubscribed, end of story. If the publisher gets the lock first, then a snapshot copy of the current + * subscribers is made during the publication, the lock is released and the subscribers are called. Between the time + * the lock is released and the time that the listener is called, the unsubscribing thread can unsubscribe, resulting + * in an unsubscribed object receiving notification of the event after it was unsubscribed (but just once). + *

      + * On event publication, subscribers are called in the order in which they subscribed. + *

      + * Events and/or topic data can be cached, but are not by default. To cache events or topic data, call + * {@link #setDefaultCacheSizePerClassOrTopic(int)}, {@link #setCacheSizeForEventClass(Class, int)}, or + * {@link #setCacheSizeForTopic(String, int)}, {@link #setCacheSizeForTopic(Pattern, int)}. Retrieve cached values + * with {@link #getLastEvent(Class)}, {@link #getLastTopicData(String)}, {@link #getCachedEvents(Class)}, or + * {@link #getCachedTopicData(String)}. Using caching while subscribing + * is most likely to make sense only if you subscribe and publish on the same thread (so caching is very useful for + * Swing applications since both happen on the EDT in a single-threaded manner). In multithreaded applications, you + * never know if your subscriber has handled an event while it was being subscribed (before the subscribe() method + * returned) that is newer or older than the retrieved cached value (taken before or after subscribe() respectively). + *

      + * To deal with subscribers that take too long (a concern in Swing applications), the EventService can be made to issue + * {@link SubscriberTimingEvent}s when subscribers exceed a certain time. This does not interrupt subscriber processing + * and is published after the subscriber finishes. The service can log a warning for SubscriberTimingEvents, see the + * constructor {@link ThreadSafeEventService (long, boolean)}. The timing is checked for veto subscribers too. + *

      + *

      Logging

      + *

      + * All logging goes through the {@link Logger}. The Logger is configurable and supports multiple logging systems. + *

      + * Exceptions are logged by default, override {@link #handleException(String,Object,String,Object,Throwable, + * StackTraceElement[],String)} to handleException exceptions in another way. Each call to a subscriber is wrapped in + * a try block to ensure one listener does not interfere with another. + *

      + *

      Cleanup of Stale WeakReferences and Stale Annotation Proxies

      + *

      + * The EventService may need to clean up stale WeakReferences and ProxySubscribers created for EventBus annotations. (Aside: EventBus + * Annotations are handled by the creation of proxies to the annotated objects. Since the annotations create weak references + * by default, annotation proxies must held strongly by the EventService, otherwise the proxy is garbage collected.) When + * a WeakReference's referent or an ProxySubscriber's proxiedObject (the annotated object) is claimed by the garbage collector, + * the EventService still holds onto the actual WeakReference or ProxySubscriber subscribed to the EventService (which are pretty tiny). + *

      + * There are two ways that these stale WeakReferences and ProxySubscribers are cleaned up. + *

        + *
      1. On every publish, subscribe and unsubscribe, every subscriber and veto subscriber to a class or topic is checked to see + * if it is a stale WeakReference or a stale ProxySubscriber (one whose getProxySubscriber() returns null). If the subscriber + * is stale, it is unsubscribed from the EventService immediately. If it is a ProxySubscriber, it's proxyUnsubscribed() + * method is called after it is unsubscribed. (This isn't as expensive as it sounds, since checks to avoid double subscription is + * necessary anyway). + *
      2. Another cleanup thread may get started to clean up remaining stale subscribers. This cleanup thread only comes into + * play for subscribers to topic or classes that haven't been used (published/subscribed/unsibscribed to). A detailed description + * of the cleanup thread follows. + *
      + *

      The Cleanup Thread

      + * If a topic or class is never published to again, WeakReferences and ProxySubscribers can be left behind if they + * are not cleaned up. To prevent loitering stale subscribers, the ThreadSafeEventService may periodically run through + * all the EventSubscribers and VetoSubscribers for all topics and classes and clean up stale proxies. Proxies for + * Annotations that have a ReferenceStrength.STRONG are never cleaned up in normal usage. (By specifying + * ReferenceStrength.STRONG, the programmer is buying into unsubscribing annotated objects themselves. There is + * one caveat: If getProxiedSubscriber() returns null, even for a ProxySubscriber with a STRONG reference strength, that proxy + * is cleaned up as it is assumed it is stale or just wrong. This would not occur normally in EventBus usage, but only + * if someone is implementing their own custom ProxySubscriber and/or AnnotationProcessor.) + *

      + * Cleanup is pretty rare in general. Not only are stale subscribers cleaned up with regular usage, stale + * subscribers on abandoned topics and classes do not take up a lot of memory, hence, they are allowed to build up to a certain degree. + * Cleanup does not occur until the number of WeakReferences and SubscriptionsProxy's with WeakReference strength + * subscribed to an EventService for all the EventService's subscriptions in total exceed the cleanupStartThreshhold, + * which is set to CLEANUP_START_THRESHOLD_DEFAULT (500) by default. The default is overridable in the constructor + * or via #setCleanupStartThreshhold(Integer). If set to null, cleanup will never start. + *

      + * Once the cleanup start threshold is exceeded, a java.util.Timer is started to clean up stale subscribers periodically + * in another thread. The timer will fire every cleanupPeriodMS milliseconds, which is set to the + * CLEANUP_PERIOD_MS_DEFAULT (20 minutes) by default. The default is overridable in the constructor or + * via #setCleanupPeriodMS(Integer). If set to null, cleanup will not start. This is implemented with a java.util.Timer, + * so Timer's warnings apply - setting this too low will cause cleanups to bunch up and hog the cleanup thread. + *

      + * After a cleanup cycle completes, if the number of stale subscribers falls at or below the cleanupStopThreshhold + * cleanup stops until the cleanupStartThreshhold is exceeded again. The cleanupStopThreshhold is set + * to CLEANUP_STOP_THRESHOLD_DEFAULT (100) by default. The default is overridable in the constructor or via + * #setCleanupStopThreshhold(Integer). If set to null or 0, cleanup will not stop if it is ever started. + *

      + * Cleanup can be monitored by subscribing to the {@link CleanupEvent} class. + *

      + * All cleanup parameters are tunable "live" and checked after each subscription and after each cleanup cycle. + * To make cleanup never run, set cleanupStartThreshhold to Integer.MAX_VALUE and cleanupPeriodMS to null. + * To get cleanup to run continuously, set set cleanupStartThreshhold to 0 and cleanupPeriodMS to some reasonable value, + * perhaps 1000 (1 second) or so (not recommended, cleanup is conducted with regular usage and the cleanup thread is + * rarely created or invoked). + *

      + * Cleanup is not run in a daemon thread, and thus will not stop the JVM from exiting. + *

      + * + * @author Michael Bushe michael@bushe.com + * @todo (param) a JMS-like selector (can be done in base classes by implements like a commons filter + * @see EventService for a complete description of the API + */ +@SuppressWarnings({"unchecked", "ForLoopReplaceableByForEach"}) +public class ThreadSafeEventService implements EventService { + public static final Integer CLEANUP_START_THRESHOLD_DEFAULT = 250; + public static final Integer CLEANUP_STOP_THRESHOLD_DEFAULT = 100; + public static final Long CLEANUP_PERIOD_MS_DEFAULT = 20L*60L*1000L; + + protected static final Logger LOG = Logger.getLogger(EventService.class.getName()); + + //Making these generic collections is a bad idea, it doesn't compile since it's better to have all the maps + //go through the same set of code to do all the real publish and subscribe work + private Map subscribersByEventType = new HashMap(); + private Map subscribersByEventClass = new HashMap(); + private Map subscribersByExactEventClass = new HashMap(); + private Map subscribersByTopic = new HashMap(); + private Map subscribersByTopicPattern = new HashMap(); + private Map vetoListenersByClass = new HashMap(); + private Map vetoListenersByExactClass = new HashMap(); + private Map vetoListenersByTopic = new HashMap(); + private Map vetoListenersByTopicPattern = new HashMap(); + private final Object listenerLock = new Object(); + private final Object cacheLock = new Object(); + private Long timeThresholdForEventTimingEventPublication; + private Map cacheByEvent = new HashMap(); + private int defaultCacheSizePerClassOrTopic = 0; + private Map cacheSizesForEventClass; + private Map rawCacheSizesForEventClass; + private boolean rawCacheSizesForEventClassChanged; + private Map cacheByTopic = new HashMap(); + private Map cacheSizesForTopic; + private Map rawCacheSizesForTopic; + private boolean rawCacheSizesForTopicChanged; + private Map rawCacheSizesForPattern; + private boolean rawCacheSizesForPatternChanged; + private Integer cleanupStartThreshhold; + private Integer cleanupStopThreshold; + private Long cleanupPeriodMS; + private int weakRefPlusProxySubscriberCount; + private Timer cleanupTimer; + private TimerTask cleanupTimerTask; + private static final Comparator PRIORITIZED_SUBSCRIBER_COMPARATOR = new PrioritizedSubscriberComparator(); + private boolean hasEverUsedPrioritized; + + /** Creates a ThreadSafeEventService that does not monitor timing of handlers. */ + public ThreadSafeEventService() { + this(null, false, null, null, null); + } + + /** + * Creates a ThreadSafeEventService while providing time monitoring options. + * + * @param timeThresholdForEventTimingEventPublication the longest time a subscriber should spend handling an event, + * The service will publish an SubscriberTimingEvent after listener processing if the time was exceeded. If null, no + * EventSubscriberTimingEvent will be issued. + */ + public ThreadSafeEventService(Long timeThresholdForEventTimingEventPublication) { + this(timeThresholdForEventTimingEventPublication, false, null, null, null); + } + + /** + * Creates a ThreadSafeEventService while providing time monitoring options. + * + * @param timeThresholdForEventTimingEventPublication the longest time a subscriber should spend handling an event, + * The service will publish an SubscriberTimingEvent after listener processing if the time was exceeded. If null, no + * EventSubscriberTimingEvent will be issued. + * @param subscribeTimingEventsInternally add a subscriber to the SubscriberTimingEvent internally and call the + * protected subscribeTiming() method when they occur. This logs a warning to the {@link Logger} by + * default. + */ + public ThreadSafeEventService(Long timeThresholdForEventTimingEventPublication, boolean subscribeTimingEventsInternally) { + this(timeThresholdForEventTimingEventPublication, subscribeTimingEventsInternally, null, null, null); + } + + /** + * Creates a ThreadSafeEventService while providing proxy cleanup customization. + * Proxies are used with Annotations. + * + * @param cleanupStartThreshold see class javadoc. + * @param cleanupStopThreshold see class javadoc. + * @param cleanupPeriodMS see class javadoc. + */ + public ThreadSafeEventService(Integer cleanupStartThreshold, + Integer cleanupStopThreshold, Long cleanupPeriodMS) { + this(null, false, cleanupStartThreshold, + cleanupStopThreshold, cleanupPeriodMS); + } + + /** + * Creates a ThreadSafeEventService while providing time monitoring options. + * + * @param timeThresholdForEventTimingEventPublication the longest time a subscriber should spend handling an event. + * The service will publish an SubscriberTimingEvent after listener processing if the time was exceeded. If null, no + * SubscriberTimingEvent will be issued. + * @param subscribeTimingEventsInternally add a subscriber to the SubscriberTimingEvent internally and call the + * protected subscribeTiming() method when they occur. This logs a warning to the {@link Logger} by + * default. + * @param cleanupStartThreshold see class javadoc. + * @param cleanupStopThreshold see class javadoc. + * @param cleanupPeriodMS see class javadoc. + * + * @throws IllegalArgumentException if timeThresholdForEventTimingEventPublication is null and + * subscribeTimingEventsInternally is true. + */ + public ThreadSafeEventService(Long timeThresholdForEventTimingEventPublication, + boolean subscribeTimingEventsInternally, Integer cleanupStartThreshold, + Integer cleanupStopThreshold, Long cleanupPeriodMS) { + if (timeThresholdForEventTimingEventPublication == null && subscribeTimingEventsInternally) { + throw new IllegalArgumentException("null, true in constructor is not valid. If you want to send timing messages for all events and subscribe them internally, pass 0, true"); + } + this.timeThresholdForEventTimingEventPublication = timeThresholdForEventTimingEventPublication; + if (subscribeTimingEventsInternally) { + //Listen to timing events and log them + subscribeStrongly(SubscriberTimingEvent.class, new EventSubscriber() { + public void onEvent(Object event) { + subscribeTiming((SubscriberTimingEvent) event); + } + }); + } + if (cleanupStartThreshold == null) { + this.cleanupStartThreshhold = CLEANUP_START_THRESHOLD_DEFAULT; + } else { + this.cleanupStartThreshhold = cleanupStartThreshold; + } + if (cleanupStopThreshold == null) { + this.cleanupStopThreshold = CLEANUP_STOP_THRESHOLD_DEFAULT; + } else { + this.cleanupStopThreshold = cleanupStopThreshold; + } + if (cleanupPeriodMS == null) { + this.cleanupPeriodMS = CLEANUP_PERIOD_MS_DEFAULT; + } else { + this.cleanupPeriodMS = cleanupPeriodMS; + } + } + + /** + * Gets the threshold above which cleanup starts. See the class javadoc on cleanup. + * @return the threshold at which cleanup starts + */ + public Integer getCleanupStartThreshhold() { + synchronized (listenerLock) { + return cleanupStartThreshhold; + } + } + + /** + * Sets the threshold above which cleanup starts. See the class javadoc on cleanup. + * @param cleanupStartThreshhold threshold at which cleanup starts + */ + public void setCleanupStartThreshhold(Integer cleanupStartThreshhold) { + synchronized (listenerLock) { + this.cleanupStartThreshhold = cleanupStartThreshhold; + } + } + + /** + * Gets the threshold below which cleanup stops. See the class javadoc on cleanup. + * @return threshold at which cleanup stops (it may start again) + */ + public Integer getCleanupStopThreshold() { + synchronized (listenerLock) { + return cleanupStopThreshold; + } + } + + /** + * Sets the threshold below which cleanup stops. See the class javadoc on cleanup. + * @param cleanupStopThreshold threshold at which cleanup stops (it may start again). + */ + public void setCleanupStopThreshold(Integer cleanupStopThreshold) { + synchronized (listenerLock) { + this.cleanupStopThreshold = cleanupStopThreshold; + } + } + + /** + * Get the cleanup interval. See the class javadoc on cleanup. + * @return interval in milliseconds between cleanup runs. + */ + public Long getCleanupPeriodMS() { + synchronized (listenerLock) { + return cleanupPeriodMS; + } + } + + /** + * Sets the cleanup interval. See the class javadoc on cleanup. + * @param cleanupPeriodMS interval in milliseconds between cleanup runs. Passing null + * stops cleanup. + */ + public void setCleanupPeriodMS(Long cleanupPeriodMS) { + synchronized (listenerLock) { + this.cleanupPeriodMS = cleanupPeriodMS; + } + } + + /** @see EventService#subscribe(Class,EventSubscriber) */ + public boolean subscribe(Class cl, EventSubscriber eh) { + if (cl == null) { + throw new IllegalArgumentException("Event class must not be null"); + } + if (eh == null) { + throw new IllegalArgumentException("Event subscriber must not be null"); + } + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Subscribing by class, class:" + cl + ", subscriber:" + eh); + } + return subscribe(cl, subscribersByEventClass, new WeakReference(eh)); + } + + /** @see EventService#subscribe(java.lang.reflect.Type, EventSubscriber) */ + public boolean subscribe(Type type, EventSubscriber eh) { + return subscribe(type, subscribersByEventType, new WeakReference(eh)); + } + + /** @see EventService#subscribeExactly(Class,EventSubscriber) */ + public boolean subscribeExactly(Class cl, EventSubscriber eh) { + if (cl == null) { + throw new IllegalArgumentException("Event class must not be null"); + } + if (eh == null) { + throw new IllegalArgumentException("Event subscriber must not be null"); + } + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Subscribing by class, class:" + cl + ", subscriber:" + eh); + } + return subscribe(cl, subscribersByExactEventClass, new WeakReference(eh)); + } + + /** @see EventService#subscribe(String,EventTopicSubscriber) */ + public boolean subscribe(String topic, EventTopicSubscriber eh) { + if (topic == null) { + throw new IllegalArgumentException("Topic must not be null"); + } + if (eh == null) { + throw new IllegalArgumentException("Event topic subscriber must not be null"); + } + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Subscribing by topic name, name:" + topic + ", subscriber:" + eh); + } + return subscribe(topic, subscribersByTopic, new WeakReference(eh)); + } + + /** @see EventService#subscribe(Pattern,EventTopicSubscriber) */ + public boolean subscribe(Pattern pat, EventTopicSubscriber eh) { + if (pat == null) { + throw new IllegalArgumentException("Pattern must not be null"); + } + if (eh == null) { + throw new IllegalArgumentException("Event subscriber must not be null"); + } + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Subscribing by pattern, pattern:" + pat + ", subscriber:" + eh); + } + PatternWrapper patternWrapper = new PatternWrapper(pat); + return subscribe(patternWrapper, subscribersByTopicPattern, new WeakReference(eh)); + } + + /** @see EventService#subscribeStrongly(Class,EventSubscriber) */ + public boolean subscribeStrongly(Class cl, EventSubscriber eh) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Subscribing weakly by class, class:" + cl + ", subscriber:" + eh); + } + if (eh == null) { + throw new IllegalArgumentException("Subscriber cannot be null."); + } + return subscribe(cl, subscribersByEventClass, eh); + } + + /** @see EventService#subscribeExactlyStrongly(Class,EventSubscriber) */ + public boolean subscribeExactlyStrongly(Class cl, EventSubscriber eh) { + if (cl == null) { + throw new IllegalArgumentException("Event class must not be null"); + } + if (eh == null) { + throw new IllegalArgumentException("Event subscriber must not be null"); + } + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Subscribing by class, class:" + cl + ", subscriber:" + eh); + } + return subscribe(cl, subscribersByExactEventClass, eh); + } + + /** @see EventService#subscribeStrongly(String,EventTopicSubscriber) */ + public boolean subscribeStrongly(String name, EventTopicSubscriber eh) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Subscribing weakly by topic name, name:" + name + ", subscriber:" + eh); + } + if (eh == null) { + throw new IllegalArgumentException("Subscriber cannot be null."); + } + return subscribe(name, subscribersByTopic, eh); + } + + /** @see EventService#subscribeStrongly(Pattern,EventTopicSubscriber) */ + public boolean subscribeStrongly(Pattern pat, EventTopicSubscriber eh) { + if (pat == null) { + throw new IllegalArgumentException("Pattern must not be null"); + } + if (eh == null) { + throw new IllegalArgumentException("Event subscriber must not be null"); + } + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Subscribing by pattern, pattern:" + pat + ", subscriber:" + eh); + } + PatternWrapper patternWrapper = new PatternWrapper(pat); + return subscribe(patternWrapper, subscribersByTopicPattern, eh); + } + + + /** @see org.scijava.event.bushe.EventService#clearAllSubscribers() */ + public void clearAllSubscribers() { + synchronized (listenerLock) { + unsubscribeAllInMap(subscribersByEventType); + unsubscribeAllInMap(subscribersByEventClass); + unsubscribeAllInMap(subscribersByExactEventClass); + unsubscribeAllInMap(subscribersByTopic); + unsubscribeAllInMap(subscribersByTopicPattern); + unsubscribeAllInMap(vetoListenersByClass); + unsubscribeAllInMap(vetoListenersByExactClass); + unsubscribeAllInMap(vetoListenersByTopic); + unsubscribeAllInMap(vetoListenersByTopicPattern); + } + } + + private void unsubscribeAllInMap(Map subscriberMap) { + synchronized (listenerLock) { + Set subscriptionKeys = subscriberMap.keySet(); + for (Object key : subscriptionKeys) { + List subscribers = (List) subscriberMap.get(key); + while (!subscribers.isEmpty()) { + unsubscribe(key, subscriberMap, subscribers.get(0)); + } + } + } + } + + /** @see EventService#subscribeVetoListener(Class,VetoEventListener) */ + public boolean subscribeVetoListener(Class eventClass, VetoEventListener vetoListener) { + if (vetoListener == null) { + throw new IllegalArgumentException("VetoEventListener cannot be null."); + } + if (eventClass == null) { + throw new IllegalArgumentException("eventClass cannot be null."); + } + return subscribeVetoListener(eventClass, vetoListenersByClass, new WeakReference(vetoListener)); + } + + /** @see EventService#subscribeVetoListenerExactly(Class,VetoEventListener) */ + public boolean subscribeVetoListenerExactly(Class eventClass, VetoEventListener vetoListener) { + if (vetoListener == null) { + throw new IllegalArgumentException("VetoEventListener cannot be null."); + } + if (eventClass == null) { + throw new IllegalArgumentException("eventClass cannot be null."); + } + return subscribeVetoListener(eventClass, vetoListenersByExactClass, new WeakReference(vetoListener)); + } + + /** @see EventService#subscribeVetoListener(String,VetoTopicEventListener) */ + public boolean subscribeVetoListener(String topic, VetoTopicEventListener vetoListener) { + if (vetoListener == null) { + throw new IllegalArgumentException("VetoEventListener cannot be null."); + } + if (topic == null) { + throw new IllegalArgumentException("topic cannot be null."); + } + return subscribeVetoListener(topic, vetoListenersByTopic, new WeakReference(vetoListener)); + } + + /** @see EventService#subscribeVetoListener(Pattern,VetoTopicEventListener) */ + public boolean subscribeVetoListener(Pattern topicPattern, VetoTopicEventListener vetoListener) { + if (vetoListener == null) { + throw new IllegalArgumentException("VetoEventListener cannot be null."); + } + if (topicPattern == null) { + throw new IllegalArgumentException("topicPattern cannot be null."); + } + PatternWrapper patternWrapper = new PatternWrapper(topicPattern); + return subscribeVetoListener(patternWrapper, vetoListenersByTopicPattern, new WeakReference(vetoListener)); + } + + /** @see EventService#subscribeVetoListenerStrongly(Class,VetoEventListener) */ + public boolean subscribeVetoListenerStrongly(Class eventClass, VetoEventListener vetoListener) { + if (vetoListener == null) { + throw new IllegalArgumentException("VetoEventListener cannot be null."); + } + if (eventClass == null) { + throw new IllegalArgumentException("eventClass cannot be null."); + } + return subscribeVetoListener(eventClass, vetoListenersByClass, vetoListener); + } + + /** @see EventService#subscribeVetoListenerExactlyStrongly(Class,VetoEventListener) */ + public boolean subscribeVetoListenerExactlyStrongly(Class eventClass, VetoEventListener vetoListener) { + if (vetoListener == null) { + throw new IllegalArgumentException("VetoEventListener cannot be null."); + } + if (eventClass == null) { + throw new IllegalArgumentException("eventClass cannot be null."); + } + return subscribeVetoListener(eventClass, vetoListenersByExactClass, vetoListener); + } + + /** @see EventService#subscribeVetoListenerStrongly(String,VetoTopicEventListener) */ + public boolean subscribeVetoListenerStrongly(String topic, VetoTopicEventListener vetoListener) { + if (vetoListener == null) { + throw new IllegalArgumentException("VetoListener cannot be null."); + } + if (topic == null) { + throw new IllegalArgumentException("topic cannot be null."); + } + return subscribeVetoListener(topic, vetoListenersByTopic, vetoListener); + } + + /** @see EventService#subscribeVetoListenerStrongly(Pattern,VetoTopicEventListener) */ + public boolean subscribeVetoListenerStrongly(Pattern topicPattern, VetoTopicEventListener vetoListener) { + if (vetoListener == null) { + throw new IllegalArgumentException("VetoTopicEventListener cannot be null."); + } + if (topicPattern == null) { + throw new IllegalArgumentException("topicPattern cannot be null."); + } + PatternWrapper patternWrapper = new PatternWrapper(topicPattern); + return subscribeVetoListener(patternWrapper, vetoListenersByTopicPattern, vetoListener); + } + + /** + * All veto subscriptions methods call this method. Extending classes only have to override this method to subscribe + * all veto subscriptions. + * + * @param subscription the topic, Pattern, or event class to subscribe to + * @param vetoListenerMap the internal map of veto listeners to use (by topic of class) + * @param vetoListener the veto listener to subscribe, may be a VetoEventListener or a WeakReference to one + * + * @return boolean if the veto listener is subscribed (was not subscribed). + * + * @throws IllegalArgumentException if vl or o is null + */ + protected boolean subscribeVetoListener(final Object subscription, final Map vetoListenerMap, final Object vetoListener) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("subscribeVetoListener(" + subscription + "," + vetoListener + ")"); + } + if (vetoListener == null) { + throw new IllegalArgumentException("Can't subscribe null veto listener to " + subscription); + } + if (subscription == null) { + throw new IllegalArgumentException("Can't subscribe veto listener to null."); + } + return subscribe(subscription, vetoListenerMap, vetoListener); + } + + /** + * All subscribe methods call this method, including veto subscriptions. + * Extending classes only have to override this method to subscribe all + * subscriber subscriptions. + *

      + * Overriding this method is only for the adventurous. This basically gives you just enough rope to hang yourself. + * + * @param classTopicOrPatternWrapper the topic String, event Class, or PatternWrapper to subscribe to + * @param subscriberMap the internal map of subscribers to use (by topic or class) + * @param subscriber the EventSubscriber or EventTopicSubscriber to subscribe, or a WeakReference to either + * + * @return boolean if the subscriber is subscribed (was not subscribed). + * + * @throws IllegalArgumentException if subscriber or topicOrClass is null + */ + protected boolean subscribe(final Object classTopicOrPatternWrapper, final Map subscriberMap, final Object subscriber) { + if (classTopicOrPatternWrapper == null) { + throw new IllegalArgumentException("Can't subscribe to null."); + } + if (subscriber == null) { + throw new IllegalArgumentException("Can't subscribe null subscriber to " + classTopicOrPatternWrapper); + } + boolean alreadyExists = false; + + //Find the real subscriber underlying weak refs and proxies + Object realSubscriber = subscriber; + boolean isWeakRef = subscriber instanceof WeakReference; + if (isWeakRef) { + realSubscriber = ((WeakReference) subscriber).get(); + } + if (realSubscriber instanceof Prioritized) { + hasEverUsedPrioritized = true; + } + boolean isWeakProxySubscriber = false; + if (subscriber instanceof ProxySubscriber) { + ProxySubscriber proxySubscriber = (ProxySubscriber) subscriber; + if (proxySubscriber instanceof Prioritized) { + hasEverUsedPrioritized = true; + } + isWeakProxySubscriber = proxySubscriber.getReferenceStrength() == ReferenceStrength.WEAK; + if (isWeakProxySubscriber) { + realSubscriber = ((ProxySubscriber) subscriber).getProxiedSubscriber(); + } + } + if (isWeakRef && isWeakProxySubscriber) { + throw new IllegalArgumentException("ProxySubscribers should always be subscribed strongly."); + } + if (realSubscriber == null) { + return false;//already garbage collected? Weird. + } + synchronized (listenerLock) { + List currentSubscribers = (List) subscriberMap.get(classTopicOrPatternWrapper); + if (currentSubscribers == null) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Creating new subscriber map for:" + classTopicOrPatternWrapper); + } + currentSubscribers = new ArrayList(); + subscriberMap.put(classTopicOrPatternWrapper, currentSubscribers); + } else { + //Double subscription check and stale subscriber cleanup + //Need to compare the underlying referents for WeakReferences and ProxySubscribers + //to make sure a weak ref and a hard ref aren't both subscribed + //to the same topic and object. + //Use the proxied subscriber for comparison if a ProxySubscribers is used + //Subscribing the same object by proxy and subscribing explicitly should + //not subscribe the same object twice + for (Iterator iterator = currentSubscribers.iterator(); iterator.hasNext();) { + Object currentSubscriber = iterator.next(); + Object realCurrentSubscriber = getRealSubscriberAndCleanStaleSubscriberIfNecessary(iterator, currentSubscriber); + if (realSubscriber.equals(realCurrentSubscriber)) { + //Already subscribed. + //Remove temporarily, to add to the end of the calling list + iterator.remove(); + alreadyExists = true; + } + } + } + currentSubscribers.add(subscriber); + if (isWeakProxySubscriber || isWeakRef) { + incWeakRefPlusProxySubscriberCount(); + } + return !alreadyExists; + } + } + + /** @see EventService#unsubscribe(Class,EventSubscriber) */ + public boolean unsubscribe(Class cl, EventSubscriber eh) { + return unsubscribe(cl, subscribersByEventClass, eh); + } + + /** @see EventService#unsubscribeExactly(Class,EventSubscriber) */ + public boolean unsubscribeExactly(Class cl, EventSubscriber eh) { + return unsubscribe(cl, subscribersByExactEventClass, eh); + } + + /** @see EventService#unsubscribe(String,EventTopicSubscriber) */ + public boolean unsubscribe(String name, EventTopicSubscriber eh) { + return unsubscribe(name, subscribersByTopic, eh); + } + + /** @see EventService#unsubscribe(String,EventTopicSubscriber) */ + public boolean unsubscribe(Pattern topicPattern, EventTopicSubscriber eh) { + PatternWrapper patternWrapper = new PatternWrapper(topicPattern); + return unsubscribe(patternWrapper, subscribersByTopicPattern, eh); + } + + /** @see EventService#unsubscribe(Class,Object) */ + public boolean unsubscribe(Class eventClass, Object subscribedByProxy) { + EventSubscriber subscriber = (EventSubscriber) getProxySubscriber(eventClass, subscribedByProxy); + if (subscriber == null) { + return false; + } else { + return unsubscribe(eventClass, subscriber); + } + } + + /** @see EventService#unsubscribeExactly(Class,Object) */ + public boolean unsubscribeExactly(Class eventClass, Object subscribedByProxy) { + EventSubscriber subscriber = (EventSubscriber) getProxySubscriber(eventClass, subscribedByProxy); + if (subscriber == null) { + return false; + } else { + return unsubscribeExactly(eventClass, subscriber); + } + } + + /** @see EventService#unsubscribe(String,Object) */ + public boolean unsubscribe(String topic, Object subscribedByProxy) { + EventTopicSubscriber subscriber = (EventTopicSubscriber) getProxySubscriber(topic, subscribedByProxy); + if (subscriber == null) { + return false; + } else { + return unsubscribe(topic, subscriber); + } + } + + /** @see EventService#unsubscribe(java.util.regex.Pattern,Object) */ + public boolean unsubscribe(Pattern pattern, Object subscribedByProxy) { + EventTopicSubscriber subscriber = (EventTopicSubscriber) getProxySubscriber(pattern, subscribedByProxy); + if (subscriber == null) { + return false; + } else { + return unsubscribe(pattern, subscriber); + } + } + + /** + * All event subscriber unsubscriptions call this method. Extending classes only have to override this method to + * subscribe all subscriber unsubscriptions. + * + * @param o the topic or event class to unsubscribe from + * @param subscriberMap the map of subscribers to use (by topic of class) + * @param subscriber the subscriber to unsubscribe, either an EventSubscriber or an EventTopicSubscriber, or a WeakReference + * to either + * + * @return boolean if the subscriber is unsubscribed (was subscribed). + */ + protected boolean unsubscribe(Object o, Map subscriberMap, Object subscriber) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("unsubscribe(" + o + "," + subscriber + ")"); + } + if (o == null) { + throw new IllegalArgumentException("Can't unsubscribe to null."); + } + if (subscriber == null) { + throw new IllegalArgumentException("Can't unsubscribe null subscriber to " + o); + } + synchronized (listenerLock) { + return removeFromSetResolveWeakReferences(subscriberMap, o, subscriber); + } + } + + /** @see EventService#unsubscribeVeto(Class,Object) */ + public boolean unsubscribeVeto(Class eventClass, Object subscribedByProxy) { + VetoEventListener subscriber = (VetoEventListener) getVetoProxySubscriber(eventClass, subscribedByProxy); + if (subscriber == null) { + return false; + } else { + return unsubscribeVetoListener(eventClass, subscriber); + } + } + + /** @see EventService#unsubscribeVetoExactly(Class,Object) */ + public boolean unsubscribeVetoExactly(Class eventClass, Object subscribedByProxy) { + VetoEventListener subscriber = (VetoEventListener) getVetoProxySubscriber(eventClass, subscribedByProxy); + if (subscriber == null) { + return false; + } else { + return unsubscribeVetoListenerExactly(eventClass, subscriber); + } + } + + /** @see EventService#unsubscribeVeto(String,Object) */ + public boolean unsubscribeVeto(String topic, Object subscribedByProxy) { + VetoTopicEventListener subscriber = (VetoTopicEventListener) getVetoProxySubscriber(topic, subscribedByProxy); + if (subscriber == null) { + return false; + } else { + return unsubscribeVetoListener(topic, subscriber); + } + } + + /** @see EventService#unsubscribeVeto(java.util.regex.Pattern,Object) */ + public boolean unsubscribeVeto(Pattern pattern, Object subscribedByProxy) { + VetoTopicEventListener subscriber = (VetoTopicEventListener) getVetoProxySubscriber(pattern, subscribedByProxy); + if (subscriber == null) { + return false; + } else { + return unsubscribeVetoListener(pattern, subscriber); + } + } + + /** @see EventService#unsubscribeVetoListener(Class,VetoEventListener) */ + public boolean unsubscribeVetoListener(Class eventClass, VetoEventListener vetoListener) { + return unsubscribeVetoListener(eventClass, vetoListenersByClass, vetoListener); + } + + /** @see EventService#unsubscribeVetoListenerExactly(Class,VetoEventListener) */ + public boolean unsubscribeVetoListenerExactly(Class eventClass, VetoEventListener vetoListener) { + return unsubscribeVetoListener(eventClass, vetoListenersByExactClass, vetoListener); + } + + /** @see EventService#unsubscribeVetoListener(String,VetoTopicEventListener) */ + public boolean unsubscribeVetoListener(String topic, VetoTopicEventListener vetoListener) { + return unsubscribeVetoListener(topic, vetoListenersByTopic, vetoListener); + } + + /** @see EventService#unsubscribeVetoListener(Pattern,VetoTopicEventListener) */ + public boolean unsubscribeVetoListener(Pattern topicPattern, VetoTopicEventListener vetoListener) { + PatternWrapper patternWrapper = new PatternWrapper(topicPattern); + return unsubscribeVetoListener(patternWrapper, vetoListenersByTopicPattern, vetoListener); + } + + /** + * All veto unsubscriptions methods call this method. Extending classes only have to override this method to + * subscribe all veto unsubscriptions. + * + * @param o the topic or event class to unsubscribe from + * @param vetoListenerMap the map of veto listeners to use (by topic or class) + * @param vl the veto listener to unsubscribe, or a WeakReference to one + * + * @return boolean if the veto listener is unsubscribed (was subscribed). + */ + protected boolean unsubscribeVetoListener(Object o, Map vetoListenerMap, Object vl) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("unsubscribeVetoListener(" + o + "," + vl + ")"); + } + if (o == null) { + throw new IllegalArgumentException("Can't unsubscribe veto listener to null."); + } + if (vl == null) { + throw new IllegalArgumentException("Can't unsubscribe null veto listener to " + o); + } + synchronized (listenerLock) { + return removeFromSetResolveWeakReferences(vetoListenerMap, o, vl); + } + } + + private ProxySubscriber getProxySubscriber(Class eventClass, Object subscribedByProxy) { + List subscribers = getSubscribers(eventClass); + return getProxySubscriber(subscribers, subscribedByProxy); + } + + private ProxySubscriber getProxySubscriber(String topic, Object subscribedByProxy) { + List subscribers = getSubscribers(topic); + return getProxySubscriber(subscribers, subscribedByProxy); + } + + private ProxySubscriber getProxySubscriber(Pattern pattern, Object subscribedByProxy) { + List subscribers = getSubscribersToPattern(pattern); + return getProxySubscriber(subscribers, subscribedByProxy); + } + + private ProxySubscriber getVetoProxySubscriber(Class eventClass, Object subscribedByProxy) { + List subscribers = getVetoSubscribers(eventClass); + return getProxySubscriber(subscribers, subscribedByProxy); + } + + private ProxySubscriber getVetoProxySubscriber(String topic, Object subscribedByProxy) { + List subscribers = getVetoSubscribers(topic); + return getProxySubscriber(subscribers, subscribedByProxy); + } + + private ProxySubscriber getVetoProxySubscriber(Pattern pattern, Object subscribedByProxy) { + List subscribers = getVetoSubscribers(pattern); + return getProxySubscriber(subscribers, subscribedByProxy); + } + + private ProxySubscriber getProxySubscriber(List subscribers, Object subscribedByProxy) { + for (Iterator iter = subscribers.iterator(); iter.hasNext();) { + Object subscriber = iter.next(); + if (subscriber instanceof WeakReference) { + WeakReference wr = (WeakReference) subscriber; + subscriber = wr.get(); + } + if (subscriber instanceof ProxySubscriber) { + ProxySubscriber proxy = (ProxySubscriber) subscriber; + subscriber = proxy.getProxiedSubscriber(); + if (subscriber == subscribedByProxy) { + return proxy; + } + } + } + return null; + } + + /** @see EventService#publish(Object) */ + public void publish(Object event) { + if (event == null) { + throw new IllegalArgumentException("Cannot publish null event."); + } + publish(event, null, null, getSubscribers(event.getClass()), getVetoSubscribers(event.getClass()), null); + } + + /** @see EventService#publish(java.lang.reflect.Type, Object) */ + public void publish(Type genericType, Object event) { + if (genericType == null) { + throw new IllegalArgumentException("genericType must not be null."); + } + if (event == null) { + throw new IllegalArgumentException("Cannot publish null event."); + } + publish(event, null, null, getSubscribers(genericType), null/*getVetoSubscribers(genericType)*/, null); + } + + /** @see EventService#publish(String,Object) */ + public void publish(String topicName, Object eventObj) { + publish(null, topicName, eventObj, getSubscribers(topicName), getVetoEventListeners(topicName), null); + } + + /** + * All publish methods call this method. Extending classes only have to override this method to handle all + * publishing cases. + * + * @param event the event to publish, null if publishing on a topic + * @param topic if publishing on a topic, the topic to publish on, else null + * @param eventObj if publishing on a topic, the eventObj to publish, else null + * @param subscribers the subscribers to publish to - must be a snapshot copy + * @param vetoSubscribers the veto subscribers to publish to - must be a snapshot copy. + * @param callingStack the stack that called this publication, helpful for reporting errors on other threads + * @throws IllegalArgumentException if eh or o is null + */ + protected void publish(final Object event, final String topic, final Object eventObj, + final List subscribers, final List vetoSubscribers, StackTraceElement[] callingStack) { + + if (event == null && topic == null) { + throw new IllegalArgumentException("Can't publish to null topic/event."); + } + + setStatus(PublicationStatus.Initiated, event, topic, eventObj); + //topic or event + logEvent(event, topic, eventObj); + + //Check all veto subscribers, if any veto, then don't publish or cache + if (checkVetoSubscribers(event, topic, eventObj, vetoSubscribers, callingStack)) { + setStatus(PublicationStatus.Vetoed, event, topic, eventObj); + return; + } else { + setStatus(PublicationStatus.Queued, event, topic, eventObj); + } + + addEventToCache(event, topic, eventObj); + + if (subscribers == null || subscribers.isEmpty()) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("No subscribers for event or topic. Event:" + event + ", Topic:" + topic); + } + } else { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Publishing to subscribers:" + subscribers); + } + setStatus(PublicationStatus.Publishing, event, topic, eventObj); + for (int i = 0; i < subscribers.size(); i++) { + Object eh = subscribers.get(i); + if (event != null) { + EventSubscriber eventSubscriber = (EventSubscriber) eh; + long start = System.currentTimeMillis(); + try { + eventSubscriber.onEvent(event); + checkTimeLimit(start, event, eventSubscriber, null); + } catch (Throwable e) { + checkTimeLimit(start, event, eventSubscriber, null); + handleException(event, e, callingStack, eventSubscriber); + } + } else { + EventTopicSubscriber eventTopicSubscriber = (EventTopicSubscriber) eh; + try { + eventTopicSubscriber.onEvent(topic, eventObj); + } catch (Throwable e) { + onEventException(topic, eventObj, e, callingStack, eventTopicSubscriber); + } + } + } + } + setStatus(PublicationStatus.Completed, event, topic, eventObj); + } + + /** + * Called during publication to set the status on an event. Can be used by subclasses + * to be notified when an event transitions from one state to another. Implementers + * are required to call setPublicationStatus + * @param status the status to set on the object + * @param event the event being published, will be null if topic is not null + * @param topic the topic eventObj is being published on, will be null if event is not null + * @param eventObj the payload being published on the topic , will be null if event is not null + */ + @SuppressWarnings({"UnusedDeclaration"}) + protected void setStatus(PublicationStatus status, Object event, String topic, Object eventObj) { + if (event instanceof PublicationStatusTracker) { + ((PublicationStatusTracker)event).setPublicationStatus(status); + } + if (eventObj instanceof PublicationStatusTracker) { + ((PublicationStatusTracker)eventObj).setPublicationStatus(status); + } + } + + /** + * Handles subscribers that are Prioritized by putting the most negative prioritized subscribers + * first, the most positive prioritized subscribers last, and leaving non-Prioritized in their + * original FIFO order. + * @param subscribers the subscribers to sort + * @return the same list if there are no prioritized subscribers in the list, otherwise a new sorted result + */ + private List sortSubscribers(List subscribers) { + if (subscribers == null) { + return null; + } + List prioritizedSubscribers = null; + Iterator iterator = subscribers.iterator(); + while (iterator.hasNext()) { + Object subscriber = iterator.next(); + if (subscriber instanceof Prioritized) { + Prioritized prioritized = ((Prioritized)subscriber); + if (prioritized.getPriority() != 0) { + iterator.remove(); + if (prioritizedSubscribers == null) { + prioritizedSubscribers = new ArrayList(); + } + prioritizedSubscribers.add(prioritized); + } + } + } + if (prioritizedSubscribers == null) { + return subscribers; + } else { + List result = new ArrayList(prioritizedSubscribers.size()+subscribers.size()); + Collections.sort(prioritizedSubscribers, PRIORITIZED_SUBSCRIBER_COMPARATOR); + boolean haveAddedFIFOSubscribers = false; + for (Prioritized prioritizedSubscriber : prioritizedSubscribers) { + if (prioritizedSubscriber.getPriority() > 0 && !haveAddedFIFOSubscribers) { + for (Object subscriber : subscribers) { + result.add(subscriber); + } + haveAddedFIFOSubscribers = true; + } + result.add(prioritizedSubscriber); + } + //Issue 26 - of all priorities are negative, then add the FIFO after processing all of them + if (!haveAddedFIFOSubscribers) { + for (Object subscriber : subscribers) { + result.add(subscriber); + } + } + return result; + } + } + + private boolean checkVetoSubscribers(Object event, String topic, Object eventObj, List vetoSubscribers, + StackTraceElement[] callingStack) { + if (vetoSubscribers != null && !vetoSubscribers.isEmpty()) { + for (Iterator vlIter = vetoSubscribers.iterator(); vlIter.hasNext();) { + Object vetoer = vlIter.next(); + VetoEventListener vl = null; + VetoTopicEventListener vtl = null; + if (event == null) { + vtl = (VetoTopicEventListener) vetoer; + } else { + vl = (VetoEventListener) vetoer; + } + long start = System.currentTimeMillis(); + try { + boolean shouldVeto = false; + if (event == null) { + shouldVeto = vtl.shouldVeto(topic, eventObj); + } else { + shouldVeto = vl.shouldVeto(event); + } + if (shouldVeto) { + handleVeto(vl, event, vtl, topic, eventObj); + checkTimeLimit(start, event, null, vl); + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Publication vetoed. Event:" + event + ", Topic:" + topic + ", veto subscriber:" + vl); + } + return true; + } + } catch (Throwable ex) { + checkTimeLimit(start, event, null, vl); + subscribeVetoException(event, topic, eventObj, ex, callingStack, vl); + } + } + } + return false; + } + + private void logEvent(Object event, String topic, Object eventObj) { + if (LOG.isLoggable(Level.DEBUG)) { + if (event != null) { + LOG.debug("Publishing event: class=" + event.getClass() + ", event=" + event); + } else if (topic != null) { + LOG.debug("Publishing event: topic=" + topic + ", eventObj=" + eventObj); + } + } + } + + /** + * Adds an event to the event cache, if appropriate. This method is called just before publication to listeners, + * after the event passes any veto listeners. + *

      + * Using protected visibility to open the caching to other implementations. + * + * @param event the event about to be published, null if topic is non-null + * @param topic the topic about to be published to, null if the event is non-null + * @param eventObj the eventObj about to be published on a topic, null if the event is non-null + */ + protected void addEventToCache(Object event, String topic, Object eventObj) { + //Taking the listener lock here, since a listener that is now subscribing will want + //this event since they are not in this subscriber list. + synchronized (listenerLock) { + if (event != null) { + int cacheSizeForEventClass = getCacheSizeForEventClass(event.getClass()); + List eventClassCache = (List) cacheByEvent.get(event.getClass()); + if (cacheSizeForEventClass <= 0) { + if (eventClassCache != null) { + //the cache threshold was lowered to 0 + cacheByEvent.remove(event.getClass()); + } + } else { + if (eventClassCache == null) { + eventClassCache = new LinkedList(); + cacheByEvent.put(event.getClass(), eventClassCache); + } + eventClassCache.add(0, event); + while (eventClassCache.size() > cacheSizeForEventClass) { + eventClassCache.remove(eventClassCache.size() - 1); + } + } + } else { + //topic + int cacheSizeForTopic = getCacheSizeForTopic(topic); + List topicCache = (List) cacheByTopic.get(topic); + if (cacheSizeForTopic <= 0) { + if (topicCache != null) { + //the cache threshold was lowered to 0 + topicCache.remove(topic); + } + } else { + if (topicCache == null) { + topicCache = new LinkedList(); + cacheByTopic.put(topic, topicCache); + } + topicCache.add(0, eventObj); + while (topicCache.size() > cacheSizeForTopic) { + topicCache.remove(topicCache.size() - 1); + } + } + } + } + } + + /** @see EventService#getSubscribers(Class) */ + public List getSubscribers(Class eventClass) { + List hierarchyMatches; + List exactMatches; + synchronized (listenerLock) { + hierarchyMatches = getSubscribersToClass(eventClass); + exactMatches = getSubscribersToExactClass(eventClass); + } + List result = new ArrayList(); + if (exactMatches != null) { + result.addAll(exactMatches); + } + if (hierarchyMatches != null) { + result.addAll(hierarchyMatches); + } + if (hasEverUsedPrioritized) { + result = sortSubscribers(result); + } + return result; + + } + + /** @see EventService#getSubscribersToClass(Class) */ + public List getSubscribersToClass(Class eventClass) { + synchronized (listenerLock) { + Map classMap = subscribersByEventClass; + List result = getEventOrVetoSubscribersToClass(classMap, eventClass); + if (hasEverUsedPrioritized) { + result = sortSubscribers(result); + } + return result; + } + } + + /** @see EventService#getSubscribersToExactClass(Class) */ + public List getSubscribersToExactClass(Class eventClass) { + synchronized (listenerLock) { + return getSubscribers(eventClass, subscribersByExactEventClass); + } + } + + /** @see EventService#getSubscribers(Type) */ + public List getSubscribers(Type eventType) { + List result; + synchronized (listenerLock) { + result = getEventOrVetoSubscribersToType(subscribersByEventType, eventType); + } + if (hasEverUsedPrioritized) { + result = sortSubscribers(result); + } + return result; + } + + /** @see EventService#getSubscribers(String) */ + public List getSubscribers(String topic) { + List result = new ArrayList(); + List exactMatches; + List patternMatches; + synchronized (listenerLock) { + exactMatches = getSubscribersToTopic(topic); + patternMatches = getSubscribersByPattern(topic); + } + if (exactMatches != null) { + result.addAll(exactMatches); + } + if (patternMatches != null) { + result.addAll(patternMatches); + } + if (hasEverUsedPrioritized) { + result = sortSubscribers(result); + } + return result; + } + + /** @see EventService#getSubscribersToTopic(String) */ + public List getSubscribersToTopic(String topic) { + synchronized (listenerLock) { + return getSubscribers(topic, subscribersByTopic); + } + } + + /** @see EventService#getSubscribers(Pattern) */ + public List getSubscribers(Pattern pattern) { + synchronized (listenerLock) { + return getSubscribers(pattern, subscribersByTopicPattern); + } + } + + /** @see EventService#getSubscribersByPattern(String) */ + public List getSubscribersByPattern(String topic) { + return getSubscribersByPattern(topic, subscribersByTopicPattern); + } + + /** @see EventService#getVetoSubscribers(Class) */ + public List getVetoSubscribers(Class eventClass) { + List result = new ArrayList(); + List exactMatches; + List hierarchyMatches; + synchronized (listenerLock) { + exactMatches = getVetoSubscribersToClass(eventClass); + hierarchyMatches = getVetoSubscribersToExactClass(eventClass); + } + if (exactMatches != null) { + result.addAll(exactMatches); + } + if (hierarchyMatches != null) { + result.addAll(hierarchyMatches); + } + if (hasEverUsedPrioritized) { + result = sortSubscribers(result); + } + return result; + } + + /** @see EventService#getVetoSubscribersToClass(Class) */ + public List getVetoSubscribersToClass(Class eventClass) { + List result; + synchronized (listenerLock) { + Map classMap = vetoListenersByClass; + result = getEventOrVetoSubscribersToClass(classMap, eventClass); + } + if (hasEverUsedPrioritized) { + result = sortSubscribers(result); + } + return result; + } + + /** @see EventService#getVetoSubscribersToExactClass(Class) */ + public List getVetoSubscribersToExactClass(Class eventClass) { + synchronized (listenerLock) { + return getSubscribers(eventClass, vetoListenersByExactClass); + } + } + + /** @see EventService#getVetoEventListeners(String) */ + public List getVetoEventListeners(String topicOrPattern) { + List result = new ArrayList(); + List exactMatches; + List patternMatches; + synchronized (listenerLock) { + exactMatches = getVetoSubscribersToTopic(topicOrPattern); + patternMatches = getVetoSubscribersByPattern(topicOrPattern); + } + if (exactMatches != null) { + result.addAll(exactMatches); + } + if (patternMatches != null) { + result.addAll(patternMatches); + } + if (hasEverUsedPrioritized) { + result = sortSubscribers(result); + } + return result; + } + + /** @see EventService#getVetoSubscribersToTopic(String) */ + public List getVetoSubscribersToTopic(String topic) { + synchronized (listenerLock) { + return getSubscribers(topic, vetoListenersByTopic); + } + } + + /** + * Note: this is inconsistent with getSubscribers(String) + * @see EventService#getVetoSubscribersToTopic(String) + * @deprecated use getVetoSubscribersToTopic instead for direct replacement, + * or use getVetoEventListeners to get topic and pattern matchers. + * In EventBus 2.0 this name will replace getVetoEventListeners() + * and have it's union functionality + */ + public List getVetoSubscribers(String topic) { + synchronized (listenerLock) { + return getVetoSubscribersToTopic(topic); + } + } + + /** @see EventService#getVetoSubscribers(Pattern) */ + public List getVetoSubscribers(Pattern topicPattern) { + synchronized (listenerLock) { + PatternWrapper patternWrapper = new PatternWrapper(topicPattern); + return getSubscribers(patternWrapper, vetoListenersByTopicPattern); + } + } + + /** @see EventService#getVetoSubscribersByPattern(String) */ + public List getVetoSubscribersByPattern(String pattern) { + return getSubscribersByPattern(pattern, vetoListenersByTopicPattern); + } + + /** Used for subscribers and veto subscribers */ + private List getSubscribersByPattern(String topic, Map subscribersByTopicPattern) { + List result = new ArrayList(); + synchronized (listenerLock) { + Set keys = subscribersByTopicPattern.keySet(); + for (Iterator iterator = keys.iterator(); iterator.hasNext();) { + PatternWrapper patternKey = (PatternWrapper) iterator.next(); + if (patternKey.matches(topic)) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Pattern " + patternKey + " matched topic name " + topic); + } + Collection subscribers = (Collection) subscribersByTopicPattern.get(patternKey); + result.addAll(createCopyOfContentsRemoveWeakRefs(subscribers)); + } + } + if (hasEverUsedPrioritized) { + result = sortSubscribers(result); + } + return result; + } + } + + protected List getSubscribersToPattern(Pattern topicPattern) { + synchronized (listenerLock) { + PatternWrapper patternWrapper = new PatternWrapper(topicPattern); + return getSubscribers(patternWrapper, subscribersByTopicPattern); + } + } + + private List getSubscribers(Object classOrTopic, Map subscriberMap) { + List result; + synchronized (listenerLock) { + List subscribers = (List) subscriberMap.get(classOrTopic); + //Make a defensive copy of subscribers and veto listeners so listeners + //can change the listener list while the listeners are being called + //Resolve WeakReferences and unsubscribe if necessary. + result = createCopyOfContentsRemoveWeakRefs(subscribers); + } + if (hasEverUsedPrioritized) { + result = sortSubscribers(result); + } + return result; + } + + private List getEventOrVetoSubscribersToClass(Map classMap, Class eventClass) { + List result = new ArrayList(); + Set keys = classMap.keySet(); + for (Iterator iterator = keys.iterator(); iterator.hasNext();) { + Class cl = (Class) iterator.next(); + if (cl.isAssignableFrom(eventClass)) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Hierarchical match " + cl + " matched event of class " + eventClass); + } + Collection subscribers = (Collection) classMap.get(cl); + result.addAll(createCopyOfContentsRemoveWeakRefs(subscribers)); + } + } + return result; + } + + private List getEventOrVetoSubscribersToType(Map typeMap, Type eventType) { + List result = new ArrayList(); + Set mapKeySet = typeMap.keySet(); + for (Object mapKey : mapKeySet) { + Type subscriberType = (Type) mapKey; + if (eventType instanceof ParameterizedType && subscriberType instanceof ParameterizedType) { + ParameterizedType subscriberPT = (ParameterizedType) subscriberType; + ParameterizedType eventPT = (ParameterizedType) eventType; + if (eventPT.getRawType().equals(subscriberPT.getRawType())) { + Type[] mapTypeArgs = subscriberPT.getActualTypeArguments(); + Type[] eventTypeArgs = eventPT.getActualTypeArguments(); + if (mapTypeArgs == null || eventTypeArgs == null || mapTypeArgs.length != eventTypeArgs.length) { + continue; + } + boolean parameterArgsMatch = true; + for (int argCount = 0; argCount < mapTypeArgs.length; argCount++) { + Type eventTypeArg = eventTypeArgs[argCount]; + if (eventTypeArg instanceof WildcardType) { + throw new IllegalArgumentException("Only simple Class parameterized types can be published, not wildcards, etc. Published attempt made for:"+eventTypeArg); + } + Type subscriberTypeArg = mapTypeArgs[argCount]; + if (subscriberTypeArg instanceof WildcardType) { + WildcardType wildcardSubscriberTypeArg = (WildcardType) subscriberTypeArg; + Type[] upperBound = wildcardSubscriberTypeArg.getUpperBounds(); + Type[] lowerBound = wildcardSubscriberTypeArg.getLowerBounds(); + if (upperBound != null && upperBound.length > 0) { + if (upperBound[0] instanceof Class) { + Class upper = (Class) upperBound[0]; + if (eventTypeArg instanceof Class) { + if (!upper.isAssignableFrom((Class) eventTypeArg)) { + parameterArgsMatch = false; + break; + } + } else { + parameterArgsMatch = false; + break; + } + } else { + throw new IllegalArgumentException("Only Class and Interface types are supported as types of wildcard subscriptions. Type:"+upperBound[0]); + } + } + if (lowerBound != null && lowerBound.length > 0) { + if (lowerBound[0] instanceof Class) { + Class lower = (Class) lowerBound[0]; + if (eventTypeArg instanceof Class) { + if (!((Class)eventTypeArg).isAssignableFrom(lower)) { + parameterArgsMatch = false; + break; + } + } else { + parameterArgsMatch = false; + break; + } + } else { + throw new IllegalArgumentException("Only Class and Interface types are supported as types of wildcard subscriptions. Type:"+upperBound[0]); + } + } + } else if (!subscriberTypeArg.equals(eventTypeArg)) { + parameterArgsMatch = false; + break; + } + } + if (parameterArgsMatch) { + if (LOG.isLoggable(Level.DEBUG)) { + LOG.debug("Exact parameterized subscriberType match for event subscriberType " + eventType); + } + Collection subscribers = (Collection) typeMap.get(subscriberType); + if (subscribers != null) { + result.addAll(createCopyOfContentsRemoveWeakRefs(subscribers)); + } + } + } + } + } + return result; +// Type o = p.getOwnerType(); +// if (o != null) { +// +// } +// p.getActualTypeArguments(); +// } + /* + } else if (type instanceof TypeVariable) { + TypeVariable v = (TypeVariable)type; + out.print(v.getName()); + } else if (type instanceof GenericArrayType) { + GenericArrayType a = (GenericArrayType)type; + printType(a.getGenericComponentType()); + out.print("[]"); + } else if (type instanceof WildcardType) { + WildcardType w = (WildcardType)type; + Type[] upper = w.getUpperBounds(); + Type[] lower = w.getLowerBounds(); + if (upper.length==1 && lower.length==0) { + out.print("? extends "); + printType(upper[0]); + } else if (upper.length==0 && lower.length==1) { + out.print("? super "); + printType(lower[0]); + } else assert false; + } + */ + } + + private void checkTimeLimit(long start, Object event, EventSubscriber subscriber, VetoEventListener l) { + if (timeThresholdForEventTimingEventPublication == null) { + return; + } + long end = System.currentTimeMillis(); + if (end - start > timeThresholdForEventTimingEventPublication.longValue()) { + publish(new SubscriberTimingEvent(this, new Long(start), new Long(end), timeThresholdForEventTimingEventPublication, event, subscriber, l)); + } + } + + protected void subscribeTiming(SubscriberTimingEvent event) { + LOG.log(Level.INFO, event + ""); + } + + /** + * Handle vetos of an event or topic, by default logs finely. + * + * @param vl the veto listener for an event + * @param event the event, can be null if topic is not + * @param vtl the veto listener for a topic + * @param topic can be null if event is not + * @param eventObj the object published with the topic + */ + protected void handleVeto(VetoEventListener vl, Object event, + VetoTopicEventListener vtl, String topic, Object eventObj) { + if (LOG.isLoggable(Level.DEBUG)) { + if (event != null) { + LOG.debug("Vetoing event: class=" + event.getClass() + ", event=" + event + ", vetoer:" + vl); + } else { + LOG.debug("Vetoing event: topic=" + topic + ", eventObj=" + eventObj + ", vetoer:" + vtl); + } + } + } + + /** + * Given a Map (of Lists of subscribers or veto listeners), removes the toRemove element from the List in the map for + * the given key. The entire map is checked for WeakReferences and ProxySubscribers and they are all unsubscribed + * if stale. + * + * @param map map of lists + * @param key key for a List in the map + * @param toRemove the object to remove form the list with the key of the map + * + * @return true if toRemove was unsubscribed + */ + private boolean removeFromSetResolveWeakReferences(Map map, Object key, Object toRemove) { + List subscribers = (List) map.get(key); + if (subscribers == null) { + return false; + } + if (subscribers.remove(toRemove)) { + if (toRemove instanceof WeakReference) { + decWeakRefPlusProxySubscriberCount(); + } + if (toRemove instanceof ProxySubscriber) { + ((ProxySubscriber)toRemove).proxyUnsubscribed(); + decWeakRefPlusProxySubscriberCount(); + } + return true; + } + + //search for WeakReferences and ProxySubscribers + for (Iterator iter = subscribers.iterator(); iter.hasNext();) { + Object existingSubscriber = iter.next(); + if (existingSubscriber instanceof ProxySubscriber) { + ProxySubscriber proxy = (ProxySubscriber) existingSubscriber; + existingSubscriber = proxy.getProxiedSubscriber(); + if (existingSubscriber == toRemove) { + removeProxySubscriber(proxy, iter); + return true; + } + } + if (existingSubscriber instanceof WeakReference) { + WeakReference wr = (WeakReference) existingSubscriber; + Object realRef = wr.get(); + if (realRef == null) { + //clean up a garbage collected reference + iter.remove(); + decWeakRefPlusProxySubscriberCount(); + return true; + } else if (realRef == toRemove) { + iter.remove(); + decWeakRefPlusProxySubscriberCount(); + return true; + } else if (realRef instanceof ProxySubscriber) { + ProxySubscriber proxy = (ProxySubscriber) realRef; + existingSubscriber = proxy.getProxiedSubscriber(); + if (existingSubscriber == toRemove) { + removeProxySubscriber(proxy, iter); + return true; + } + } + } + } + return false; + } + + /** + * Given a set (or subscribers or veto listeners), makes a copy of the set, resolving WeakReferences to hard + * references, and removing garbage collected references from the original set. + * + * @param subscribersOrVetoListeners + * + * @return a copy of the set + */ + private List createCopyOfContentsRemoveWeakRefs(Collection subscribersOrVetoListeners) { + if (subscribersOrVetoListeners == null) { + return null; + } + List copyOfSubscribersOrVetolisteners = new ArrayList(subscribersOrVetoListeners.size()); + for (Iterator iter = subscribersOrVetoListeners.iterator(); iter.hasNext();) { + Object elem = iter.next(); + if (elem instanceof ProxySubscriber) { + ProxySubscriber proxy = (ProxySubscriber)elem; + elem = proxy.getProxiedSubscriber(); + if (elem == null) { + removeProxySubscriber(proxy, iter); + } else { + copyOfSubscribersOrVetolisteners.add(proxy); + } + } else if (elem instanceof WeakReference) { + Object hardRef = ((WeakReference) elem).get(); + if (hardRef == null) { + //Was reclaimed, unsubscribe + iter.remove(); + decWeakRefPlusProxySubscriberCount(); + } else { + copyOfSubscribersOrVetolisteners.add(hardRef); + } + } else { + copyOfSubscribersOrVetolisteners.add(elem); + } + } + return copyOfSubscribersOrVetolisteners; + } + + /** + * Sets the default cache size for each kind of event, default is 0 (no caching). + *

      + * If this value is set to a positive number, then when an event is published, the EventService caches the event or + * topic payload data for later retrieval. This allows subscribers to find out what has most recently happened + * before they subscribed. The cached event(s) are returned from #getLastEvent(Class), #getLastTopicData(String), + * #getCachedEvents(Class), or #getCachedTopicData(String) + *

      + * The default can be overridden on a by-event-class or by-topic basis. + * + * @param defaultCacheSizePerClassOrTopic + */ + public void setDefaultCacheSizePerClassOrTopic(int defaultCacheSizePerClassOrTopic) { + synchronized (cacheLock) { + this.defaultCacheSizePerClassOrTopic = defaultCacheSizePerClassOrTopic; + } + } + + /** @return the default number of event payloads kept per event class or topic */ + public int getDefaultCacheSizePerClassOrTopic() { + synchronized (cacheLock) { + return defaultCacheSizePerClassOrTopic; + } + } + + /** + * Set the number of events cached for a particular class of event. By default, no events are cached. + *

      + * This overrides any setting for the DefaultCacheSizePerClassOrTopic. + *

      + * Class hierarchy semantics are respected. That is, if there are three events, A, X and Y, and X and Y are both + * derived from A, then setting the cache size for A applies the cache size for all three. Setting the cache size + * for X applies to X and leaves the settings for A and Y in tact. Interfaces can be passed to this method, but they + * only take effect if the cache size of a class or it's superclasses has been set. Just like Class.getInterfaces(), + * if multiple cache sizes are set, the interface names declared earliest in the implements clause of the eventClass + * takes effect. + *

      + * The cache for an event is not adjusted until the next event of that class is published. + * + * @param eventClass the class of event + * @param cacheSize the number of published events to cache for this event + */ + public void setCacheSizeForEventClass(Class eventClass, int cacheSize) { + synchronized (cacheLock) { + if (rawCacheSizesForEventClass == null) { + rawCacheSizesForEventClass = new HashMap(); + } + rawCacheSizesForEventClass.put(eventClass, new Integer(cacheSize)); + rawCacheSizesForEventClassChanged = true; + } + } + + /** + * Returns the number of events cached for a particular class of event. By default, no events are cached. + *

      + * This result is computed for a particular class from the values passed to #setCacheSizeForEventClass(Class, int), + * and respects the class hierarchy. + * + * @param eventClass the class of event + * + * @return the maximum size of the event cache for the given event class + * + * @see #setCacheSizeForEventClass(Class,int) + */ + public int getCacheSizeForEventClass(Class eventClass) { + if (eventClass == null) { + throw new IllegalArgumentException("eventClass must not be null."); + } + synchronized (cacheLock) { + if (rawCacheSizesForEventClass == null || rawCacheSizesForEventClass.size() == 0) { + return getDefaultCacheSizePerClassOrTopic(); + } + if (cacheSizesForEventClass == null) { + cacheSizesForEventClass = new HashMap(); + } + if (rawCacheSizesForEventClassChanged) { + cacheSizesForEventClass.clear(); + cacheSizesForEventClass.putAll(rawCacheSizesForEventClass); + rawCacheSizesForEventClassChanged = false; + } + + //Has this been computed yet or set directly? + Integer size = (Integer) cacheSizesForEventClass.get(eventClass); + if (size != null) { + return size.intValue(); + } else { + //must be computed + Class parent = eventClass.getSuperclass(); + while (parent != null) { + Integer parentSize = (Integer) cacheSizesForEventClass.get(parent); + if (parentSize != null) { + cacheSizesForEventClass.put(eventClass, parentSize); + return parentSize.intValue(); + } + parent = parent.getSuperclass(); + } + //try interfaces + Class[] interfaces = eventClass.getInterfaces(); + for (int i = 0; i < interfaces.length; i++) { + Class anInterface = interfaces[i]; + Integer interfaceSize = (Integer) cacheSizesForEventClass.get(anInterface); + if (interfaceSize != null) { + cacheSizesForEventClass.put(eventClass, interfaceSize); + return interfaceSize.intValue(); + } + } + } + return getDefaultCacheSizePerClassOrTopic(); + } + } + + /** + * Set the number of published data objects cached for a particular event topic. By default, no caching is done. + *

      + * This overrides any setting for the DefaultCacheSizePerClassOrTopic. + *

      + * Settings for exact topic names take precedence over pattern matching. + *

      + * The cache for a topic is not adjusted until the next publication on that topic. + * + * @param topicName the topic name + * @param cacheSize the number of published data Objects to cache for this topic + */ + public void setCacheSizeForTopic(String topicName, int cacheSize) { + synchronized (cacheLock) { + if (rawCacheSizesForTopic == null) { + rawCacheSizesForTopic = new HashMap(); + } + rawCacheSizesForTopic.put(topicName, new Integer(cacheSize)); + rawCacheSizesForTopicChanged = true; + } + } + + /** + * Set the number of published data objects cached for topics matching a pattern. By default, caching is done. + *

      + * This overrides any setting for the DefaultCacheSizePerClassOrTopic. + *

      + * Settings for exact topic names take precedence over pattern matching. If a topic matches the cache settings for + * more than one pattern, the cache size chosen is an undetermined one from one of the matched pattern settings. + *

      + * The cache for a topic is not adjusted until the next publication on that topic. + * + * @param pattern the pattern matching topic names + * @param cacheSize the number of data Objects to cache for this topic + */ + public void setCacheSizeForTopic(Pattern pattern, int cacheSize) { + synchronized (cacheLock) { + if (rawCacheSizesForPattern == null) { + rawCacheSizesForPattern = new HashMap(); + } + PatternWrapper patternWrapper = new PatternWrapper(pattern); + rawCacheSizesForPattern.put(patternWrapper, new Integer(cacheSize)); + rawCacheSizesForPatternChanged = true; + } + } + + /** + * Returns the number of cached data objects published on a particular topic. By default, no caching is performed. + *

      + * This result is computed for a particular topic from the values passed to #setCacheSizeForTopic(String, int) and + * #setCacheSizeForTopic(Pattern, int). + * + * @param topic the topic name + * + * @return the maximum size of the data Object cache for the given topic + * + * @see #setCacheSizeForTopic(String,int) + * @see #setCacheSizeForTopic(java.util.regex.Pattern,int) + */ + public int getCacheSizeForTopic(String topic) { + if (topic == null) { + throw new IllegalArgumentException("topic must not be null."); + } + synchronized (cacheLock) { + if ((rawCacheSizesForTopic == null || (rawCacheSizesForTopic != null && rawCacheSizesForTopic.size() == 0)) && + (rawCacheSizesForPattern == null || (rawCacheSizesForPattern != null && rawCacheSizesForPattern.size() == 0))) { + return getDefaultCacheSizePerClassOrTopic(); + } + if (cacheSizesForTopic == null) { + cacheSizesForTopic = new HashMap(); + } + if (rawCacheSizesForTopicChanged || rawCacheSizesForPatternChanged) { + cacheSizesForTopic.clear(); + cacheSizesForTopic.putAll(rawCacheSizesForTopic); + rawCacheSizesForTopicChanged = false; + rawCacheSizesForPatternChanged = false; + } + + //Is this an exact match or has it been matched to a pattern yet? + Integer size = cacheSizesForTopic.get(topic); + if (size != null) { + return size; + } else { + //try matching patterns + if (rawCacheSizesForPattern != null) { + Set patterns = rawCacheSizesForPattern.keySet(); + for (Iterator iterator = patterns.iterator(); iterator.hasNext();) { + PatternWrapper pattern = (PatternWrapper) iterator.next(); + if (pattern.matches(topic)) { + size = rawCacheSizesForPattern.get(pattern); + cacheSizesForTopic.put(topic, size); + return size; + } + } + } + } + return getDefaultCacheSizePerClassOrTopic(); + } + } + + /** + * @param eventClass an index into the cache, cannot be an interface + * + * @return the last event published for this event class, or null if caching is turned off (the default) + */ + public Object getLastEvent(Class eventClass) { + if (eventClass.isInterface()) { + throw new IllegalArgumentException("Interfaces are not accepted in get last event, use a specific event class."); + } + synchronized (cacheLock) { + List eventCache = cacheByEvent.get(eventClass); + if (eventCache == null || eventCache.size() == 0) { + return null; + } + return eventCache.get(0); + } + } + + /** + * @param eventClass an index into the cache, cannot be an interface + * + * @return the last events published for this event class, or null if caching is turned off (the default) + */ + public List getCachedEvents(Class eventClass) { + if (eventClass.isInterface()) { + throw new IllegalArgumentException("Interfaces are not accepted in get last event, use a specific event class."); + } + synchronized (cacheLock) { + List eventCache = cacheByEvent.get(eventClass); + if (eventCache == null || eventCache.size() == 0) { + return null; + } + return eventCache; + } + } + + /** + * @param topic an index into the cache + * + * @return the last data Object published on this topic, or null if caching is turned off (the default) + */ + public Object getLastTopicData(String topic) { + synchronized (cacheLock) { + List topicCache = cacheByTopic.get(topic); + if (topicCache == null || topicCache.size() == 0) { + return null; + } + return topicCache.get(0); + } + } + + /** + * @param topic an index into the cache + * + * @return the last data Objects published on this topic, or null if caching is turned off (the default) + */ + public List getCachedTopicData(String topic) { + synchronized (cacheLock) { + List topicCache = cacheByTopic.get(topic); + if (topicCache == null || topicCache.size() == 0) { + return null; + } + return topicCache; + } + } + + /** + * Clears the event cache for a specific event class or interface and it's any of it's subclasses or implementing + * classes. + * + * @param eventClassToClear the event class to clear the cache for + */ + public void clearCache(Class eventClassToClear) { + synchronized (cacheLock) { + Set classes = cacheByEvent.keySet(); + for (Iterator iterator = classes.iterator(); iterator.hasNext();) { + Class cachedClass = (Class) iterator.next(); + if (eventClassToClear.isAssignableFrom(cachedClass)) { + iterator.remove(); + } + } + } + } + + /** + * Clears the topic data cache for a specific topic name. + * + * @param topic the topic name to clear the cache for + */ + public void clearCache(String topic) { + synchronized (cacheLock) { + cacheByTopic.remove(topic); + } + } + + /** + * Clears the topic data cache for all topics that match a particular pattern. + * + * @param pattern the pattern to match topic caches to + */ + public void clearCache(Pattern pattern) { + synchronized (cacheLock) { + Set classes = cacheByTopic.keySet(); + for (Iterator iterator = classes.iterator(); iterator.hasNext();) { + String cachedTopic = (String) iterator.next(); + if (pattern.matcher(cachedTopic).matches()) { + iterator.remove(); + } + } + } + } + + /** Clear all event caches for all topics and event. */ + public void clearCache() { + synchronized (cacheLock) { + cacheByEvent.clear(); + cacheByTopic.clear(); + } + } + + /** Called during veto exceptions, calls handleException */ + protected void subscribeVetoException(final Object event, final String topic, final Object eventObj, + Throwable e, StackTraceElement[] callingStack, VetoEventListener vetoer) { + String str = "EventService veto event listener r:" + vetoer; + if (vetoer != null) { + str = str + ". Vetoer class:" + vetoer.getClass(); + } + handleException("vetoing", event, topic, eventObj, e, callingStack, str); + } + + /** Called during event handling exceptions, calls handleException */ + protected void onEventException(final String topic, final Object eventObj, Throwable e, + StackTraceElement[] callingStack, EventTopicSubscriber eventTopicSubscriber) { + String str = "EventService topic subscriber:" + eventTopicSubscriber; + if (eventTopicSubscriber != null) { + str = str + ". Subscriber class:" + eventTopicSubscriber.getClass(); + } + handleException("handling event", null, topic, eventObj, e, callingStack, str); + } + + /** Called during event handling exceptions, calls handleException */ + protected void handleException(final Object event, Throwable e, + StackTraceElement[] callingStack, EventSubscriber eventSubscriber) { + String str = "EventService subscriber:" + eventSubscriber; + if (eventSubscriber != null) { + str = str + ". Subscriber class:" + eventSubscriber.getClass(); + } + handleException("handling event topic", event, null, null, e, callingStack, str); + } + + /** + * All exception handling goes through this method. Logs a warning by default. + */ + protected void handleException(final String action, final Object event, final String topic, + final Object eventObj, Throwable e, StackTraceElement[] callingStack, String sourceString) { + String eventClassString = (event == null ? "none" : event.getClass().getName()); + String eventString = event + ""; + String contextMsg = "Exception " + action + " event class=" + eventClassString + + ", event=" + eventString + ", topic=" + topic + ", eventObj=" + eventObj; + SwingException clientEx = new SwingException(contextMsg, e, callingStack); + String msg = "Exception thrown by;" + sourceString; + LOG.log(Level.WARN, msg, clientEx); + } + + /** + * Unsubscribe a subscriber if it is a stale ProxySubscriber. Used during subscribe() and + * in the cleanup Timer. See the class javadoc. + *

      + * Not private since I don't claim I'm smart enough to anticipate all needs, but I + * am smart enough to doc the rules you must follow to override this method. Those + * rules may change (changes will be doc'ed), override at your own risk. + *

      + * Overriders MUST call iterator.remove() to unsubscribe the proxy if the subscriber is + * a ProxySubscriber and is stale and should be cleaned up. If the ProxySubscriber + * is unsubscribed, then implementers MUST also call proxyUnsubscribed() on the subscriber. + * Overriders MUST also remove the proxy from the weakProxySubscriber list by calling + * removeStaleProxyFromList. Method assumes caller is holding the listenerList + * lock (else how can you pass the iterator?). + * @param iterator current iterator + * @param existingSubscriber the current value of the iterator + * @return the real value of the param, or the proxied subscriber of the param if + * the param is a a ProxySubscriber + */ + protected Object getRealSubscriberAndCleanStaleSubscriberIfNecessary(Iterator iterator, Object existingSubscriber) { + ProxySubscriber existingProxySubscriber = null; + if (existingSubscriber instanceof WeakReference) { + existingSubscriber = ((WeakReference) existingSubscriber).get(); + if (existingSubscriber == null) { + iterator.remove(); + decWeakRefPlusProxySubscriberCount(); + } + } + if (existingSubscriber instanceof ProxySubscriber) { + existingProxySubscriber = (ProxySubscriber) existingSubscriber; + existingSubscriber = existingProxySubscriber.getProxiedSubscriber(); + if (existingProxySubscriber == null) { + removeProxySubscriber(existingProxySubscriber, iterator); + } + } + return existingSubscriber; + } + + protected void removeProxySubscriber(ProxySubscriber proxy, Iterator iter) { + iter.remove(); + proxy.proxyUnsubscribed(); + decWeakRefPlusProxySubscriberCount(); + } + + /** + * Increment the count of stale proxies and start a cleanup task if necessary + */ + protected void incWeakRefPlusProxySubscriberCount() { + synchronized(listenerLock) { + weakRefPlusProxySubscriberCount++; + if (cleanupStartThreshhold == null || cleanupPeriodMS == null) { + return; + } + if (weakRefPlusProxySubscriberCount >= cleanupStartThreshhold) { + startCleanup(); + } + } + } + + /** + * Decrement the count of stale proxies + */ + protected void decWeakRefPlusProxySubscriberCount() { + synchronized(listenerLock) { + weakRefPlusProxySubscriberCount--; + if (weakRefPlusProxySubscriberCount < 0) { + weakRefPlusProxySubscriberCount = 0; + } + } + } + + private void startCleanup() { + synchronized(listenerLock) { + if (cleanupTimer == null) { + cleanupTimer = new Timer(); + } + if (cleanupTimerTask == null) { + cleanupTimerTask = new CleanupTimerTask(); + cleanupTimer.schedule(cleanupTimerTask, 0L, cleanupPeriodMS); + } + } + } + + class CleanupTimerTask extends TimerTask { + @Override + public void run() { + synchronized(listenerLock) { + ThreadSafeEventService.this.publish(new CleanupEvent(CleanupEvent.Status.STARTING, weakRefPlusProxySubscriberCount, null)); + if (weakRefPlusProxySubscriberCount <= cleanupStopThreshold) { + this.cancel(); + cleanupTimer = null; + cleanupTimerTask = null; + LOG.debug("Cancelled scheduled weak reference and proxy cleanup."); + ThreadSafeEventService.this.publish(new CleanupEvent(CleanupEvent.Status.UNDER_STOP_THRESHOLD_CLEANING_CANCELLED, weakRefPlusProxySubscriberCount, null)); + return; + } + LOG.debug("Starting a weak reference and proxy cleanup."); + ThreadSafeEventService.this.publish(new CleanupEvent(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, weakRefPlusProxySubscriberCount, null)); + List allSubscriberMaps = new ArrayList(); + allSubscriberMaps.add(subscribersByEventType); + allSubscriberMaps.add(subscribersByEventClass); + allSubscriberMaps.add(subscribersByExactEventClass); + allSubscriberMaps.add(subscribersByTopic); + allSubscriberMaps.add(subscribersByTopicPattern); + allSubscriberMaps.add(vetoListenersByClass); + allSubscriberMaps.add(vetoListenersByExactClass); + allSubscriberMaps.add(vetoListenersByTopic); + allSubscriberMaps.add(vetoListenersByTopicPattern); + + int staleCount = 0; + for (Map subscriberMap : allSubscriberMaps) { + Set subscriptions = subscriberMap.keySet(); + for (Object subscription : subscriptions) { + List subscribers = (List) subscriberMap.get(subscription); + for (Iterator iter = subscribers.iterator(); iter.hasNext();) { + Object subscriber = iter.next(); + Object realSubscriber = getRealSubscriberAndCleanStaleSubscriberIfNecessary(iter, subscriber); + if (realSubscriber == null) { + staleCount++; + } + } + } + } + ThreadSafeEventService.this.publish(new CleanupEvent(CleanupEvent.Status.FINISHED_CLEANING, weakRefPlusProxySubscriberCount, staleCount)); + } + } + } + + private static class PrioritizedSubscriberComparator implements Comparator { + public int compare(Prioritized prioritized1, Prioritized prioritized2) { + if (prioritized1 == null) { + return -1; + } + if (prioritized2 == null) { + return 1; + } + if (prioritized1.getPriority() < prioritized2.getPriority()) { + return -1; + } else if (prioritized1.getPriority() > prioritized2.getPriority()) { + return 1; + } else { + return 0; + } + } + } + + /** + * Since Pattern doesn't implement equals(), we need one of these + */ + private class PatternWrapper { + private Pattern pattern; + + public PatternWrapper(Pattern pat) { + pattern = pat; + } + + public boolean matches(CharSequence input) { + return pattern.matcher(input).matches(); + } + + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + PatternWrapper that = (PatternWrapper) o; + + if (pattern != null) { + if (!pattern.equals(that.pattern)) {//give the JVM a shot for forward compatibility + return pattern.pattern() != null && this.pattern.pattern().equals(this.pattern.pattern()); + } + } else { + if (that.pattern != null) { + return false; + } + } + + return true; + } + + public int hashCode() { + if (this.pattern != null && this.pattern.pattern() != null) { + return this.pattern.pattern().hashCode(); + } + return (pattern != null ? pattern.hashCode() : 0); + } + } +} diff --git a/src/main/java/org/scijava/event/bushe/VetoEventListener.java b/src/main/java/org/scijava/event/bushe/VetoEventListener.java new file mode 100644 index 000000000..693a15a36 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/VetoEventListener.java @@ -0,0 +1,38 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * Interface for classes that can veto class-based event publication from the {@link EventService}. + * + * @author Michael Bushe michael@bushe.com + */ +public interface VetoEventListener { + + /** + * Determine whether an event should be vetoed or published. + *

      + * The EventService calls this method before class-based publication of objects. If any of the + * VetoEventListeners return true, then none of the subscribers for that event are called.

      Prerequisite: + * VetoEventListener has to be subscribed with the EventService for the event object's class.

      Guaranteed to be + * called in the SwingEventThread when using the SwingEventService (EventBus). See {@link EventService}

      + * + * @param event The event object to veto or allow to be published. + * + * @return true if the event should be vetoed and not published, false if the event should be published. + */ + public boolean shouldVeto(T event); +} diff --git a/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java b/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java new file mode 100644 index 000000000..8bfbb5755 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java @@ -0,0 +1,25 @@ +package org.scijava.event.bushe; + +/** + * Interface for classes that can veto publication on topic names from the {@link org.scijava.event.bushe.EventService}. + * + * @author Michael Bushe michael@bushe.com + */ +public interface VetoTopicEventListener { + + /** + * Determine whether a topic publication should be vetoed or allowed. + *

      + * The EventService calls this method before publication of on a topic name. If any of the + * VetoTopicEventListeners return true, then none of the subscribers to that topic are called.

      Prerequisite: + * VetoTopicEventListener has to be subscribed with the EventService for the topic name.

      Guaranteed to be + * called in the SwingEventThread when using the SwingEventService (EventBus). See {@link EventService}

      + * + * @param topic The topic name the data object is published on. + * @param data The data object being published on the topic. + * + * @return true if the publication on the topic should be vetoed and not published, false if the data should be + * published on the topic. + */ + public boolean shouldVeto(String topic, T data); +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/AbstractProxySubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/AbstractProxySubscriber.java new file mode 100644 index 000000000..f7a7a84f2 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/AbstractProxySubscriber.java @@ -0,0 +1,169 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.ref.WeakReference; +import java.lang.reflect.Method; +import java.lang.reflect.AccessibleObject; +import java.lang.reflect.InvocationTargetException; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.ProxySubscriber; +import org.scijava.event.bushe.Prioritized; + +/** + * Common base class for EventService Proxies. + *

      + * Implementing Prioritized even when Priority is not used is always OK. The default + * value of 0 retains the FIFO order. + */ +public abstract class AbstractProxySubscriber implements ProxySubscriber, Prioritized { + private Object proxiedSubscriber; + private Method subscriptionMethod; + private ReferenceStrength referenceStrength; + private EventService eventService; + private int priority; + protected boolean veto; + + protected AbstractProxySubscriber(Object proxiedSubscriber, Method subscriptionMethod, + ReferenceStrength referenceStrength, EventService es, boolean veto) { + this(proxiedSubscriber, subscriptionMethod, referenceStrength, 0, es, veto); + } + + protected AbstractProxySubscriber(Object proxiedSubscriber, Method subscriptionMethod, + ReferenceStrength referenceStrength, int priority, EventService es, boolean veto) { + this.referenceStrength = referenceStrength; + this.priority = priority; + eventService = es; + this.veto = veto; + if (proxiedSubscriber == null) { + throw new IllegalArgumentException("The realSubscriber cannot be null when constructing a proxy subscriber."); + } + if (subscriptionMethod == null) { + throw new IllegalArgumentException("The subscriptionMethod cannot be null when constructing a proxy subscriber."); + } + Class returnType = subscriptionMethod.getReturnType(); + if (veto && returnType != Boolean.TYPE) { + throw new IllegalArgumentException("The subscriptionMethod must have the two parameters, the first one must be a String and the second a non-primitive (Object or derivative)."); + } + if (ReferenceStrength.WEAK.equals(referenceStrength)) { + this.proxiedSubscriber = new WeakReference(proxiedSubscriber); + } else { + this.proxiedSubscriber = proxiedSubscriber; + } + this.subscriptionMethod = subscriptionMethod; + } + + /** @return the object this proxy is subscribed on behalf of */ + public Object getProxiedSubscriber() { + if (proxiedSubscriber instanceof WeakReference) { + return ((WeakReference)proxiedSubscriber).get(); + } + return proxiedSubscriber; + } + + /** @return the subscriptionMethod passed in the constructor */ + public Method getSubscriptionMethod() { + return subscriptionMethod; + } + + /** @return the EventService passed in the constructor */ + public EventService getEventService() { + return eventService; + } + + /** @return the ReferenceStrength passed in the constructor */ + public ReferenceStrength getReferenceStrength() { + return referenceStrength; + } + + /** + * @return the priority, no effect if priority is 0 (the default value) + */ + public int getPriority() { + return priority; + } + + /** + * Called by EventServices to inform the proxy that it is unsubscribed. + * The ProxySubscriber should perform any necessary cleanup. + *

      + * Overriding classes must call super.proxyUnsubscribed() or risk + * things not being cleanup up properly. + */ + public void proxyUnsubscribed() { + proxiedSubscriber = null; + } + + @Override + public final int hashCode() { + throw new RuntimeException("Proxy subscribers are not allowed in Hash " + + "Maps, since the underlying values use Weak References that" + + "may disappear, the calculations may not be the same in" + + "successive calls as required by hashCode."); + } + + protected boolean retryReflectiveCallUsingAccessibleObject(Object[] args, Method subscriptionMethod, Object obj, + IllegalAccessException e, String message) { + boolean accessibleTriedAndFailed = false; + if (subscriptionMethod != null) { + AccessibleObject[] accessibleMethod = {subscriptionMethod}; + try { + AccessibleObject.setAccessible(accessibleMethod, true); + Object returnValue = subscriptionMethod.invoke(obj, args); + return Boolean.valueOf(returnValue+""); + } catch (SecurityException ex) { + accessibleTriedAndFailed = true; + } catch (InvocationTargetException e1) { + throw new RuntimeException(message, e); + } catch (IllegalAccessException e1) { + throw new RuntimeException(message, e); + } + } + if (accessibleTriedAndFailed) { + message = message + ". An attempt was made to make the method accessible, but the SecurityManager denied the attempt."; + } + throw new RuntimeException(message, e); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof AbstractProxySubscriber) { + AbstractProxySubscriber bps = (AbstractProxySubscriber) obj; + if (referenceStrength != bps.referenceStrength) { + return false; + } + if (subscriptionMethod != bps.subscriptionMethod) { + return false; + } + if (ReferenceStrength.WEAK == referenceStrength) { + if (((WeakReference)proxiedSubscriber).get() != ((WeakReference)bps.proxiedSubscriber).get()) { + return false; + } + } else { + if (proxiedSubscriber != bps.proxiedSubscriber) { + return false; + } + } + if (veto != bps.veto) { + return false; + } + if (eventService != bps.eventService) { + return false; + } + return true; + } else { + return false; + } + } + + @Override + public String toString() { + return "AbstractProxySubscriber{" + + "realSubscriber=" + (proxiedSubscriber instanceof WeakReference? + ((WeakReference)proxiedSubscriber).get():proxiedSubscriber) + + ", subscriptionMethod=" + subscriptionMethod + + ", veto=" + veto + + ", referenceStrength=" + referenceStrength + + ", eventService=" + eventService + + '}'; + } +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/AnnotationProcessor.java b/src/main/java/org/scijava/event/bushe/annotation/AnnotationProcessor.java new file mode 100644 index 000000000..2a9810322 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/AnnotationProcessor.java @@ -0,0 +1,562 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.annotation.Annotation; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.regex.Pattern; +import java.util.Arrays; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceExistsException; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.Logger; + +/** + * Enhances classes that use EventService Annotations. + *

      + * This class makes the EventService annotations "come alive." This can be used in code like so: + *

      + * 
      + * public class MyAppController {
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EventSubscriber
      + *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
      + *      //do something
      + *   }
      + *   @EventSubscriber
      + *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
      + *      //do something
      + *   }
      + * }
      + * ... some other place, needed in some cases when the like a window disposal before it's garbage collected ....
      + * AnnotationProcessor.unprocess(this);
      + * 
      + * 
      + *

      + * This class can be leveraged in outside of source code in other ways in which Annotations are used:

      • In an + * Aspect-Oriented tool
      • In a Swing Framework classloader that wants to load and understand events.
      • In other + * Inversion of Control containers, such as Spring or PicoContainer.
      • In the apt tool, though this does not generate + * code.
      • In a Annotation Processing Tool plugin, when it becomes available.
      Support for these other methods + * are not yet implemented. + */ +public class AnnotationProcessor { + + protected static final Logger LOG = Logger.getLogger(EventService.class.getName()); + + /** + * Add the appropriate subscribers to one or more EventServices for an instance of a class with + * EventBus annotations. + * @param obj the instance that may or may not have annotations + */ + public static void process(Object obj) { + processOrUnprocess(obj, true); + } + + /** + * Remove the appropriate subscribers from one or more EventServices for an instance of a class with + * EventBus annotations. + * @param obj the instance that may or may not have annotations + */ + public static void unprocess(Object obj) { + processOrUnprocess(obj, false); + } + + private static void processOrUnprocess(Object obj, boolean add) { + if (obj == null) { + return; + } + Class cl = obj.getClass(); + Method[] methods = cl.getMethods(); + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Looking for EventBus annotations for class " + cl + ", methods:" + Arrays.toString(methods)); + } + for (Method method : methods) { + + EventSubscriber classAnnotation = method.getAnnotation(EventSubscriber.class); + if (classAnnotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found EventSubscriber:"+classAnnotation +" on method:" + method); + } + process(classAnnotation, obj, method, add); + } + EventTopicSubscriber topicAnnotation = method.getAnnotation(EventTopicSubscriber.class); + if (topicAnnotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found EventTopicSubscriber: "+topicAnnotation +" on method:" + method); + } + process(topicAnnotation, obj, method, add); + } + EventTopicPatternSubscriber topicPatternAnnotation = method.getAnnotation(EventTopicPatternSubscriber.class); + if (topicPatternAnnotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found EventTopicPatternSubscriber: "+topicPatternAnnotation+" on method:" + method); + } + process(topicPatternAnnotation, obj, method, add); + } + RuntimeTopicEventSubscriber runtimeTopicAnnotation = method.getAnnotation(RuntimeTopicEventSubscriber.class); + if (runtimeTopicAnnotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found RuntimeTopicEventSubscriber: "+runtimeTopicAnnotation+" on method:" + method); + } + process(runtimeTopicAnnotation, obj, method, add); + } + RuntimeTopicPatternEventSubscriber annotation = method.getAnnotation(RuntimeTopicPatternEventSubscriber.class); + if (annotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found RuntimeTopicPatternEventSubscriber:"+annotation+" on method:" + method); + } + process(annotation, obj, method, add); + } + + + VetoSubscriber vetoClassAnnotation = method.getAnnotation(VetoSubscriber.class); + if (vetoClassAnnotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found VetoSubscriber:"+vetoClassAnnotation +" on method:" + method); + } + process(vetoClassAnnotation, obj, method, add); + } + VetoTopicSubscriber vetoTopicAnnotation = method.getAnnotation(VetoTopicSubscriber.class); + if (vetoTopicAnnotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found VetoTopicSubscriber: "+vetoTopicAnnotation +" on method:" + method); + } + process(vetoTopicAnnotation, obj, method, add); + } + VetoTopicPatternSubscriber vetoTopicPatternAnnotation = method.getAnnotation(VetoTopicPatternSubscriber.class); + if (vetoTopicPatternAnnotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found VetoTopicPatternSubscriber: "+vetoTopicPatternAnnotation+" on method:" + method); + } + process(vetoTopicPatternAnnotation, obj, method, add); + } + VetoRuntimeTopicSubscriber vetoRuntimeTopicAnnotation = method.getAnnotation(VetoRuntimeTopicSubscriber.class); + if (vetoRuntimeTopicAnnotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found VetoRuntimeTopicSubscriber: "+vetoRuntimeTopicAnnotation+" on method:" + method); + } + process(vetoRuntimeTopicAnnotation, obj, method, add); + } + VetoRuntimeTopicPatternSubscriber vetoAnnotation = method.getAnnotation(VetoRuntimeTopicPatternSubscriber.class); + if (vetoAnnotation != null) { + if (LOG.isLoggable(Logger.Level.DEBUG)) { + LOG.debug("Found VetoRuntimeTopicPatternSubscriber:"+vetoAnnotation+" on method:" + method); + } + process(vetoAnnotation, obj, method, add); + } + } + } + + + private static void process(EventTopicPatternSubscriber topicPatternAnnotation, Object obj, + Method method, boolean add) { + //Check args + String topicPattern = topicPatternAnnotation.topicPattern(); + if (topicPattern == null) { + throw new IllegalArgumentException("Topic pattern cannot be null for EventTopicPatternSubscriber annotation"); + } + + //Get event service + Class eventServiceClass = topicPatternAnnotation.autoCreateEventServiceClass(); + String eventServiceName = topicPatternAnnotation.eventServiceName(); + EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); + int priority = topicPatternAnnotation.priority(); + + //Create proxy and subscribe + Pattern pattern = Pattern.compile(topicPattern); + //See Issue #18 + //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. + if (add) { + ProxyTopicPatternSubscriber subscriber = new ProxyTopicPatternSubscriber(obj, method, + topicPatternAnnotation.referenceStrength(), priority, eventService, + topicPattern, pattern, false); + + eventService.subscribeStrongly(pattern, subscriber); + } else { + eventService.unsubscribe(pattern, obj); + } + } + + private static void process(EventTopicSubscriber topicAnnotation, Object obj, Method method, boolean add) { + //Check args + String topic = topicAnnotation.topic(); + if (topic == null) { + throw new IllegalArgumentException("Topic cannot be null for EventTopicSubscriber annotation"); + } + + //Get event service + Class eventServiceClass = topicAnnotation.autoCreateEventServiceClass(); + String eventServiceName = topicAnnotation.eventServiceName(); + EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); + + int priority = topicAnnotation.priority(); + + //See Issue #18 + //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. + if (add) { + //Create proxy and subscribe + ProxyTopicSubscriber subscriber = new ProxyTopicSubscriber(obj, method, + topicAnnotation.referenceStrength(), priority, eventService, topic, false); + + eventService.subscribeStrongly(topic, subscriber); + } else { + eventService.unsubscribe(topic, obj); + } + } + + private static void process(EventSubscriber annotation, Object obj, Method method, boolean add) { + //Check args + Class eventClass = annotation.eventClass(); + if (eventClass == null) { + throw new IllegalArgumentException("Event class cannot be null for EventSubscriber annotation"); + } else if (UseTheClassOfTheAnnotatedMethodsParameter.class.equals(eventClass)) { + Class[] params = method.getParameterTypes(); + if (params.length < 1) { + throw new RuntimeException("Expected annotated method to have one parameter."); + } else { + eventClass = params[0]; + } + } + + //Get event service + Class eventServiceClass = annotation.autoCreateEventServiceClass(); + String eventServiceName = annotation.eventServiceName(); + EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); + + if (add) { + int priority = annotation.priority(); + + //Create proxy and subscribe + //See https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + BaseProxySubscriber subscriber = new BaseProxySubscriber(obj, method, annotation.referenceStrength(), + priority, eventService, eventClass, false); + if (annotation.exact()) { + //See Issue #18 + //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. + eventService.subscribeExactlyStrongly(eventClass, subscriber); + } else { + //See Issue #18 + //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. + eventService.subscribeStrongly(eventClass, subscriber); + } + } else { + if (annotation.exact()) { + eventService.unsubscribeExactly(eventClass, obj); + } else { + eventService.unsubscribe(eventClass, obj); + } + } + } + + + + private static void process(final RuntimeTopicEventSubscriber annotation, final Object subscriber, final Method method, boolean add) { + EventTopicSubscriber eventTopicSubscriber = new EventTopicSubscriber() { + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public Class autoCreateEventServiceClass() { + return annotation.autoCreateEventServiceClass(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public String eventServiceName() { + return annotation.eventServiceName(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public ReferenceStrength referenceStrength() { + return annotation.referenceStrength(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public int priority() { + return annotation.priority(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public String topic() { + return getTopic(annotation.methodName(), subscriber, method); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public Class annotationType() { + return annotation.annotationType(); + } + }; + process(eventTopicSubscriber, subscriber, method, add); + } + + private static void process(final RuntimeTopicPatternEventSubscriber annotation, final Object subscriber, final Method method, boolean add) { + EventTopicPatternSubscriber eventTopicPatternSubscriber = new EventTopicPatternSubscriber() { + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public Class autoCreateEventServiceClass() { + return annotation.autoCreateEventServiceClass(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public String eventServiceName() { + return annotation.eventServiceName(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public ReferenceStrength referenceStrength() { + return annotation.referenceStrength(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public int priority() { + return annotation.priority(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public boolean exact() { + return annotation.exact(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public String topicPattern() { + return getTopic(annotation.methodName(), subscriber, method); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public Class annotationType() { + return annotation.annotationType(); + } + }; + process(eventTopicPatternSubscriber, subscriber, method, add); + } + + /* This is a cut and paste from above practically, sure which Annotations could be extended. + * TODO: When Java 7 comes out, or whatever JSR-308 is delivered, reduce this file by 70% */ + private static void process(VetoTopicPatternSubscriber topicPatternAnnotation, Object obj, Method method, boolean add) { + //Check args + String topicPattern = topicPatternAnnotation.topicPattern(); + if (topicPattern == null) { + throw new IllegalArgumentException("Topic pattern cannot be null for VetoTopicPatternSubscriber annotation"); + } + + //Get event service + Class eventServiceClass = topicPatternAnnotation.autoCreateEventServiceClass(); + String eventServiceName = topicPatternAnnotation.eventServiceName(); + EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); + int priority = topicPatternAnnotation.priority(); + + //Create proxy and subscribe + Pattern pattern = Pattern.compile(topicPattern); + ProxyTopicPatternSubscriber subscriber = new ProxyTopicPatternSubscriber(obj, method, topicPatternAnnotation.referenceStrength(), + priority, eventService, topicPattern, pattern, true); + + //See Issue #18 + //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. + if (add) { + eventService.subscribeVetoListenerStrongly(pattern, subscriber); + } else { + eventService.unsubscribeVeto(pattern, obj); + } + } + + private static void process(VetoTopicSubscriber topicAnnotation, Object obj, Method method, boolean add) { + //Check args + String topic = topicAnnotation.topic(); + if (topic == null) { + throw new IllegalArgumentException("Topic cannot be null for VetoTopicSubscriber annotation"); + } + + //Get event service + Class eventServiceClass = topicAnnotation.autoCreateEventServiceClass(); + String eventServiceName = topicAnnotation.eventServiceName(); + EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); + + int priority = topicAnnotation.priority(); + + //Create proxy and subscribe + ProxyTopicSubscriber subscriber = new ProxyTopicSubscriber(obj, method, + topicAnnotation.referenceStrength(), priority, eventService, topic, true); + + //See Issue #18 + //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. + if (add) { + eventService.subscribeVetoListenerStrongly(topic, subscriber); + } else { + eventService.unsubscribeVeto(topic, obj); + } + } + + private static void process(VetoSubscriber annotation, Object obj, Method method, boolean add) { + //Check args + Class eventClass = annotation.eventClass(); + if (eventClass == null) { + throw new IllegalArgumentException("Event class cannot be null for VetoSubscriber annotation"); + } else if (UseTheClassOfTheAnnotatedMethodsParameter.class.equals(eventClass)) { + Class[] params = method.getParameterTypes(); + if (params.length < 1) { + throw new RuntimeException("Expected annotated method to have one parameter."); + } else { + eventClass = params[0]; + } + } + + //Get event service + Class eventServiceClass = annotation.autoCreateEventServiceClass(); + String eventServiceName = annotation.eventServiceName(); + EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); + + int priority = annotation.priority(); + + //Create proxy and subscribe + //See https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + BaseProxySubscriber subscriber = new BaseProxySubscriber(obj, method, annotation.referenceStrength(), + priority, eventService, eventClass, true); + if (add) { + if (annotation.exact()) { + //See Issue #18 + //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. + eventService.subscribeVetoListenerExactlyStrongly(eventClass, subscriber); + } else { + //See Issue #18 + //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 + //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. + eventService.subscribeVetoListenerStrongly(eventClass, subscriber); + } + } else { + if (annotation.exact()) { + eventService.unsubscribeVetoExactly(eventClass, obj); + } else { + eventService.unsubscribeVeto(eventClass, obj); + } + } + } + + + private static void process(final VetoRuntimeTopicSubscriber annotation, final Object subscriber, final Method method, boolean add) { + VetoTopicSubscriber eventTopicSubscriber = new VetoTopicSubscriber() { + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public Class autoCreateEventServiceClass() { + return annotation.autoCreateEventServiceClass(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public String eventServiceName() { + return annotation.eventServiceName(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public ReferenceStrength referenceStrength() { + return annotation.referenceStrength(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public int priority() { + return annotation.priority(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public String topic() { + return getTopic(annotation.methodName(), subscriber, method); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public Class annotationType() { + return annotation.annotationType(); + } + }; + process(eventTopicSubscriber, subscriber, method, add); + } + + private static void process(final VetoRuntimeTopicPatternSubscriber annotation, final Object subscriber, final Method method, boolean add) { + VetoTopicPatternSubscriber eventTopicPatternSubscriber = new VetoTopicPatternSubscriber() { + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public Class autoCreateEventServiceClass() { + return annotation.autoCreateEventServiceClass(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public String eventServiceName() { + return annotation.eventServiceName(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public ReferenceStrength referenceStrength() { + return annotation.referenceStrength(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public int priority() { + return annotation.priority(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public boolean exact() { + return annotation.exact(); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public String topicPattern() { + return getTopic(annotation.methodName(), subscriber, method); + } + + //TODO uncomment when language level is set to 1.6 (2.0) @Override + public Class annotationType() { + return annotation.annotationType(); + } + }; + process(eventTopicPatternSubscriber, subscriber, method, add); + } + + + private static String getTopic(String methodName, Object subscriber, Method method) { + try { + Method runtimeEvalMethod = subscriber.getClass().getMethod(methodName, new Class[0]); + //necessary in case the method does not have public access or if the class it belongs + //to isn't public + runtimeEvalMethod.setAccessible(true); + return runtimeEvalMethod.invoke(subscriber, new Object[0]).toString(); + } catch (SecurityException e) { + throw new RuntimeException("Could not retrieve method for subscription. Method: " + methodName, e); + } catch (NoSuchMethodException e) { + throw new RuntimeException("Could not retrieve method for subscription. Method: " + methodName, e); + } catch (InvocationTargetException e) { + e.getTargetException().printStackTrace(); + throw new RuntimeException("Could not invoke method for subscription. Method: " + methodName, e); + } catch (IllegalAccessException e) { + throw new RuntimeException("Could not invoke method for subscription. Method: " + methodName, e); + } + } + + + private static EventService getEventServiceFromAnnotation(String eventServiceName, + Class eventServiceClass) { + EventService eventService = EventServiceLocator.getEventService(eventServiceName); + if (eventService == null) { + if (EventServiceLocator.SERVICE_NAME_EVENT_BUS.equals(eventServiceName)) { + //This may be the first time the EventBus is accessed. + eventService = EventServiceLocator.getSwingEventService(); + } else { + //The event service does not yet exist, create it + try { + eventService = eventServiceClass.newInstance(); + } catch (InstantiationException e) { + throw new RuntimeException("Could not instance of create EventService class " + eventServiceClass, e); + } catch (IllegalAccessException e) { + throw new RuntimeException("Could not instance of create EventService class " + eventServiceClass, e); + } + try { + EventServiceLocator.setEventService(eventServiceName, eventService); + } catch (EventServiceExistsException e) { + //ignore it, it's OK + eventService = EventServiceLocator.getEventService(eventServiceName); + } + } + } + return eventService; + } + +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/BaseProxySubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/BaseProxySubscriber.java new file mode 100644 index 000000000..f877d35e2 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/BaseProxySubscriber.java @@ -0,0 +1,133 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.VetoEventListener; + +/** A class is subscribed to an EventService on behalf of another object. */ +public class BaseProxySubscriber extends AbstractProxySubscriber + implements org.scijava.event.bushe.EventSubscriber, VetoEventListener { + private Class subscriptionClass; + + /** + * Creates a proxy. This does not subscribe it. + * + * @param proxiedSubscriber the subscriber that the proxy will call when an event is published + * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter + * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should + * be too + * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer + * exist + * @param subscription the class to subscribe to, used for unsubscription only + * @param veto whether this is a veto subscriber + */ + public BaseProxySubscriber(Object proxiedSubscriber, Method subscriptionMethod, ReferenceStrength referenceStrength, + EventService es, Class subscription, boolean veto) { + this(proxiedSubscriber, subscriptionMethod, referenceStrength, 0, es, subscription, veto); + } + + /** + * Creates a proxy with a priority. This does not subscribe it. + * + * @param proxiedSubscriber the subscriber that the proxy will call when an event is published + * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter + * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should + * be too + * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer + * exist + * @param subscription the class to subscribe to, used for unsubscription only + * @param veto whether this is a veto subscriber + */ + public BaseProxySubscriber(Object proxiedSubscriber, Method subscriptionMethod, ReferenceStrength referenceStrength, + int priority, EventService es, Class subscription, boolean veto) { + super(proxiedSubscriber, subscriptionMethod, referenceStrength, priority, es, veto); + this.subscriptionClass = subscription; + Class[] params = subscriptionMethod.getParameterTypes(); + if (params == null || params.length != 1 || params[0].isPrimitive()) { + throw new IllegalArgumentException("The subscriptionMethod must have a single non-primitive parameter."); + } + } + + /** + * Handles the event publication by pushing it to the real subscriber's subscription Method. + * + * @param event The Object that is being published. + */ + public void onEvent(Object event) { + Object[] args = new Object[]{event}; + Method subscriptionMethod = null; + Object obj = null; + try { + obj = getProxiedSubscriber(); + if (obj == null) { + //has been garbage collected + return; + } + subscriptionMethod = getSubscriptionMethod(); + subscriptionMethod.invoke(obj, args); + } catch (IllegalAccessException e) { + String message = "Exception when invoking annotated method from EventService publication. Event class:" + event.getClass() + ", Event:" + event + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(); + retryReflectiveCallUsingAccessibleObject(args, subscriptionMethod, obj, e, message); + } catch (InvocationTargetException e) { + throw new RuntimeException("InvocationTargetException when invoking annotated method from EventService publication. Event class:" + event.getClass() + ", Event:" + event + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(), e); + } + } + + + public boolean shouldVeto(Object event) { + Object[] args = new Object[]{event}; + Method subscriptionMethod = null; + Object obj = null; + try { + obj = getProxiedSubscriber(); + if (obj == null) { + //has been garbage collected + return false; + } + subscriptionMethod = getSubscriptionMethod(); + return Boolean.valueOf(subscriptionMethod.invoke(obj, args)+""); + } catch (IllegalAccessException e) { + String message = "Exception when invoking annotated method from EventService publication. Event class:" + event.getClass() + ", Event:" + event + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(); + return retryReflectiveCallUsingAccessibleObject(args, subscriptionMethod, obj, e, message); + } catch (InvocationTargetException e) { + throw new RuntimeException("InvocationTargetException when invoking annotated method from EventService publication. Event class:" + event.getClass() + ", Event:" + event + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(), e); + } + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof BaseProxySubscriber) { + if (!super.equals(obj)) { + return false; + } + BaseProxySubscriber bps = (BaseProxySubscriber) obj; + if (subscriptionClass != bps.subscriptionClass) { + if (subscriptionClass == null) { + return false; + } else { + if (!subscriptionClass.equals(bps.subscriptionClass)) { + return false; + } + } + } + return true; + } else { + return false; + } + } + + @Override + public String toString() { + return "BaseProxySubscriber{" + + "subscription=" + subscriptionClass + + "veto=" + veto + + "realSubscriber=" + getProxiedSubscriber() + + ", subscriptionMethod=" + getSubscriptionMethod() + + ", referenceStrength=" + getReferenceStrength() + + ", eventService=" + getEventService() + + '}'; + } + +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/EventSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/EventSubscriber.java new file mode 100644 index 000000000..e75b79568 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/EventSubscriber.java @@ -0,0 +1,110 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +/** + * An Annotation for subscribing to EventService Events. + *

      + * This annotation simplifies much of the repetitive boilerplate used for subscribing to EventService Events. + *

      + * Instead of this: + *

      + * public class MyAppController implements EventSubscriber {
      + *   public MyAppController {
      + *      EventBus.subscribe(AppClosingEvent.class, this);
      + *   }
      + *   public void onEvent(EventServiceEvent event) {
      + *      AppClosingEvent appClosingEvent = (AppClosingEvent)event;
      + *      //do something
      + *   }
      + * }
      + * 
      + * You can do this: + *
      + * public class MyAppController {  //no interface necessary
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//if not using AOP
      + *   }
      + *   @EventSubscriber
      + *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {//Use your own method name with typesafety
      + *      //do something
      + *   }
      + * }
      + * 
      + *

      + * That's pretty good, but when the controller does more, annotations are even nicer. + *

      + * public class MyAppController implements EventSubscriber {
      + *   public MyAppController {
      + *      EventBus.subscribe(AppStartingEvent.class, this);
      + *      EventBus.subscribe(AppClosingEvent.class, this);
      + *   }
      + *   public void onEvent(EventServiceEvent event) {
      + *      //wicked bad pattern, but we have to this
      + *      //...or create multiple subscriber classes and hold instances of them fields, which is even more verbose...
      + *      if (event instanceof AppStartingEvent) {
      + *         onAppStartingEvent((AppStartingEvent)event);
      + *      } else (event instanceof AppClosingEvent) {
      + *         onAppStartingEvent((AppClosingEvent)event);
      + *      }
      + *
      + *   }
      + *
      + *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
      + *      //do something
      + *   }
      + *
      + *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
      + *      //do something
      + *   }
      + * }
      + * 
      + * You can do this: + *
      + * public class MyAppController {
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EventSubscriber(eventClass=AppStartingEvent.class)
      + *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
      + *      //do something
      + *   }
      + *   @EventSubscriber(eventClass=AppAppClosingEvent.class)
      + *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
      + *      //do something
      + *   }
      + * }
      + * 
      + * Brief, clear, and easy. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface EventSubscriber { + /** The class to subscribe to, if not specified, a subscription is created for the type of the method parameter. */ + Class eventClass() default UseTheClassOfTheAnnotatedMethodsParameter.class; + + /** Determines the order in which this subscriber is called, default is FIFO.*/ + int priority() default 0; + + /** Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ + boolean exact() default false; + + /** Whether to subscribe weakly or strongly. */ + ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ + String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** + * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the + * service needs to be created, it must have a default constructor. + */ + Class autoCreateEventServiceClass() default ThreadSafeEventService.class; +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/EventTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/EventTopicPatternSubscriber.java new file mode 100644 index 000000000..3611d2c79 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/EventTopicPatternSubscriber.java @@ -0,0 +1,35 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface EventTopicPatternSubscriber { + /** The Regular Expression to subscribe to. */ + String topicPattern(); + + /** Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ + boolean exact() default false; + + /** Whether to subscribe weakly or strongly. */ + ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ + String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** + * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the + * service needs to be created, it must have a default constructor. + */ + Class autoCreateEventServiceClass() default ThreadSafeEventService.class; + + /** Determines the order in which this subscriber is called, default is FIFO.*/ + int priority() default 0; +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/EventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/EventTopicSubscriber.java new file mode 100644 index 000000000..5f99c4895 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/EventTopicSubscriber.java @@ -0,0 +1,108 @@ +package org.scijava.event.bushe.annotation; + + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +/** + * An Annotation for subscribing to EventService Topics. + *

      + * This annotation simplifies much of the repetitive boilerplate used for subscribing to EventService Topics. + *

      + * Instead of this: + *

      + * public class MyAppController implements EventTopicSubscriber {
      + *   public MyAppController {
      + *      EventBus.subscribe("AppClosing", this);
      + *   }
      + *   public void onEvent(String topic, Object data) {
      + *      JComponent source = (JComponent)data;
      + *      //do something
      + *   }
      + * }
      + * 
      + * You can do this: + *
      + * public class MyAppController {  //no interface necessary
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EventTopicSubscriber{topic="AppClosingEvent"}
      + *   public void onAppClosing(String topic, Object data) {
      + *      //do something
      + *   }
      + * }
      + * 
      + *

      + * That's pretty good, but when the controller does more, annotations are even nicer. + *

      + * public class MyAppController implements EventTopicSubscriber {
      + *   public MyAppController {
      + *      EventBus.subscribe("AppStartingEvent", this);
      + *      EventBus.subscribe("AppClosingEvent", this);
      + *   }
      + *   public void onEvent(String topic, Object data) {
      + *      //wicked bad pattern, but we have to this
      + *      //...or create multiple subscriber classes and hold instances of them fields, which is even more verbose...
      + *      if ("AppStartingEvent".equals(topic)) {
      + *         onAppStartingEvent((JComponent)data);
      + *      } else ("AppClosingEvent".equals(topic)) {
      + *         onAppClosingEvent((JComponet)data);
      + *      }
      + *
      + *   }
      + *
      + *   public void onAppStartingEvent(JComponent requestor) {
      + *      //do something
      + *   }
      + *
      + *   public void onAppClosingEvent(JComponent requestor) {
      + *      //do something
      + *   }
      + * }
      + * 
      + * Instead of all that, you can do this: + *
      + * public class MyAppController {
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EventTopicSubscriber{topic="AppStartingEvent"}
      + *   public void onAppStartingEvent(Object data) {
      + *      //do something
      + *   }
      + *   @EventTopicSubscriber{topic="AppClosingEvent"}
      + *   public void onAppClosingEvent(Foo data) {
      + *      //do something
      + *   }
      + * }
      + * 
      + * Brief, clear, and easy. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface EventTopicSubscriber { + /** The topic to subscribe to */ + String topic(); + + /** Whether to subscribe weakly or strongly. */ + ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ + String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** Determines the order in which this subscriber is called, default is FIFO.*/ + int priority() default 0; + + /** + * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the + * service needs to be created, it must have a default constructor. + */ + Class autoCreateEventServiceClass() default ThreadSafeEventService.class; +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicPatternSubscriber.java new file mode 100644 index 000000000..c3a65d33d --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicPatternSubscriber.java @@ -0,0 +1,88 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.reflect.Method; +import java.util.regex.Pattern; + +import org.scijava.event.bushe.EventService; + +/** + * A Proxy Subscriber for Annotations that use topic patterns + */ +public class ProxyTopicPatternSubscriber extends ProxyTopicSubscriber { + private Pattern pattern; + + /** + * Creates a proxy. This does not subscribe it. + * + * @param proxiedSubscriber the subscriber that the proxy will call when an event is published + * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter + * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should + * be too + * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer + * exist + * @param patternString the Regular Expression for topics to subscribe to, used for unsubscription only + */ + public ProxyTopicPatternSubscriber(Object proxiedSubscriber, Method subscriptionMethod, + ReferenceStrength referenceStrength, EventService es, String patternString, + Pattern pattern, boolean veto) { + this(proxiedSubscriber, subscriptionMethod, referenceStrength, 0, es, patternString, pattern, veto); + } + + /** + * Creates a proxy. This does not subscribe it. + * + * @param proxiedSubscriber the subscriber that the proxy will call when an event is published + * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter + * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should + * be too + * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer + * exist + * @param patternString the Regular Expression for topics to subscribe to, used for unsubscription only + */ + public ProxyTopicPatternSubscriber(Object proxiedSubscriber, Method subscriptionMethod, + ReferenceStrength referenceStrength, int priority, + EventService es, String patternString, Pattern pattern, boolean veto) { + super(proxiedSubscriber, subscriptionMethod, referenceStrength, priority, es, patternString, veto); + this.pattern = pattern; + } + + protected void unsubscribe(String topic) { + if (veto) { + getEventService().unsubscribeVetoListener(pattern, this); + } else { + getEventService().unsubscribe(pattern, this); + } + pattern = null; + } + + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } + + ProxyTopicPatternSubscriber that = (ProxyTopicPatternSubscriber) o; + + if (pattern != null ? !pattern.equals(that.pattern) : that.pattern != null) { + return false; + } + + return true; + } + + public String toString() { + return "ProxyTopicPatternSubscriber{" + + "pattern=" + pattern + + "veto=" + veto + + "realSubscriber=" + getProxiedSubscriber() + + ", subscriptionMethod=" + getSubscriptionMethod() + + ", referenceStrength=" + getReferenceStrength() + + ", eventService=" + getEventService() + + '}'; + } +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicSubscriber.java new file mode 100644 index 000000000..8b900c8fe --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicSubscriber.java @@ -0,0 +1,147 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.VetoTopicEventListener; + +/** A class that subscribes to an EventService on behalf of another object. + * This class is not used directly (though you could), but rather through the use of the + * {@link @org.scijava.event.bushe.annotation.EventTopicSubscriber}. Advanced EventBus + * users could use this class in Aspect-Oriented code. Consider using the + * {@link AnnotationProcessor} instead, it may suit your needs and be easier.*/ +public class ProxyTopicSubscriber extends AbstractProxySubscriber + implements org.scijava.event.bushe.EventTopicSubscriber, VetoTopicEventListener { + private String topic; + + /** + * Creates a proxy. This does not subscribe it. + * + * @param proxiedSubscriber the subscriber that the proxy will call when an event is published + * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter + * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should + * be too + * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer + * exist + * @param topic the topic to subscribe to, used for unsubscription only + * @param veto if this proxy is for a veto subscriber + */ + public ProxyTopicSubscriber(Object proxiedSubscriber, Method subscriptionMethod, ReferenceStrength referenceStrength, + EventService es, String topic, boolean veto) { + this(proxiedSubscriber, subscriptionMethod, referenceStrength, 0, es, topic, veto); + } + + /** + * Creates a proxy. This does not subscribe it. + * + * @param proxiedSubscriber the subscriber that the proxy will call when an event is published + * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter + * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should + * be too + * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer + * exist + * @param topic the topic to subscribe to, used for unsubscription only + * @param veto if this proxy is for a veto subscriber + */ + public ProxyTopicSubscriber(Object proxiedSubscriber, Method subscriptionMethod, ReferenceStrength referenceStrength, + int priority, EventService es, String topic, boolean veto) { + super(proxiedSubscriber, subscriptionMethod, referenceStrength, priority, es, veto); + this.topic = topic; + if (topic == null) { + throw new IllegalArgumentException("Proxies for topic subscribers require a non-null topic."); + } + Class[] params = subscriptionMethod.getParameterTypes(); + if (params == null || params.length != 2 || !String.class.equals(params[0]) || params[1].isPrimitive()) { + throw new IllegalArgumentException("The subscriptionMethod must have the two parameters, the first one must be a String and the second a non-primitive (Object or derivative)."); + } + } + + /** + * Handles the event publication by pushing it to the real subscriber's subscription Method. + * + * @param topic the topic on which the object is being published + * @param data The Object that is being published on the topic. + */ + public void onEvent(String topic, Object data) { + Object[] args = new Object[]{topic, data}; + Object obj = null; + Method subscriptionMethod = null; + try { + obj = getProxiedSubscriber(); + if (obj == null) { + return; + } + subscriptionMethod = getSubscriptionMethod(); + subscriptionMethod.invoke(obj, args); + } catch (IllegalAccessException e) { + String message = "IllegalAccessException when invoking annotated method from EventService publication. Topic:" + topic + ", data:" + data + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(); + retryReflectiveCallUsingAccessibleObject(args, subscriptionMethod, obj, e, message); + } catch (InvocationTargetException e) { + throw new RuntimeException("InvocationTargetException when invoking annotated method from EventService publication. Topic:" + topic + ", data:" + data + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(), e); + } + } + + + public boolean shouldVeto(String topic, Object data) { + Object[] args = new Object[]{topic, data}; + Object obj = null; + Method subscriptionMethod = null; + try { + obj = getProxiedSubscriber(); + if (obj == null) { + return false; + } + subscriptionMethod = getSubscriptionMethod(); + return Boolean.valueOf(subscriptionMethod.invoke(obj, args)+""); + } catch (IllegalAccessException e) { + String message = "IllegalAccessException when invoking annotated veto method from EventService publication. Topic:" + topic + ", data:" + data + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(); + return retryReflectiveCallUsingAccessibleObject(args, subscriptionMethod, obj, e, message); + } catch (InvocationTargetException e) { + throw new RuntimeException("InvocationTargetException when invoking annotated veto method from EventService publication. Topic:" + topic + ", data:" + data + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(), e); + } + } + + protected void unsubscribe(String topic) { + if (veto) { + getEventService().unsubscribeVetoListener(topic, this); + } else { + getEventService().unsubscribe(topic, this); + } + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof ProxyTopicSubscriber) { + if (!super.equals(obj)) { + return false; + } + ProxyTopicSubscriber proxyTopicSubscriber = (ProxyTopicSubscriber) obj; + if (topic.equals(proxyTopicSubscriber.topic)) { + if (topic == null) { + return false; + } else { + if (!topic.equals(proxyTopicSubscriber.topic)) { + return false; + } + } + } + return true; + } else { + return false; + } + } + + + @Override + public String toString() { + return "ProxyTopicSubscriber{" + + "topic='" + topic + '\'' + + "veto='" + veto + '\'' + + "realSubscriber=" + getProxiedSubscriber() + + ", subscriptionMethod=" + getSubscriptionMethod() + + ", referenceStrength=" + getReferenceStrength() + + ", eventService=" + getEventService() + + '}'; + } +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/ReferenceStrength.java b/src/main/java/org/scijava/event/bushe/annotation/ReferenceStrength.java new file mode 100644 index 000000000..739255b3f --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/ReferenceStrength.java @@ -0,0 +1,11 @@ +package org.scijava.event.bushe.annotation; + +/** + * The two kinds of references that are used in the EventBus. + * + * @author Michael Bushe + */ +public enum ReferenceStrength { + WEAK, + STRONG +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicEventSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicEventSubscriber.java new file mode 100644 index 000000000..fb54e4432 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicEventSubscriber.java @@ -0,0 +1,38 @@ +package org.scijava.event.bushe.annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +/** + * A subscriber to a topic that is determined at runtime. + */ + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface RuntimeTopicEventSubscriber { + /** + * @return name of a method (that must return a String) and whose return value will become the subscription topic. + */ + String methodName() default "getTopicName"; + + /** @return Whether to subscribe weakly or strongly. */ + ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** + * @return event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. + */ + String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** @return Determines the order in which this subscriber is called, default is FIFO.*/ + int priority() default 0; + + /** + * @return Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the service needs to be created, it must have a default constructor. + */ + Class autoCreateEventServiceClass() default ThreadSafeEventService.class; +} \ No newline at end of file diff --git a/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicPatternEventSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicPatternEventSubscriber.java new file mode 100644 index 000000000..8e92cf22d --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicPatternEventSubscriber.java @@ -0,0 +1,38 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface RuntimeTopicPatternEventSubscriber { + /** + * @return name of a method (which should return a String) and whose return value will become the subscription topic. + */ + String methodName() default "getTopicPatternName"; + + /** @return Whether to subscribe weakly or strongly. */ + ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** + * @return event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. + */ + String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** @return Determines the order in which this subscriber is called, default is FIFO.*/ + int priority() default 0; + + /** @return Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ + boolean exact() default false; + + /** + * @return Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the service needs to be created, it must have a default constructor. + */ + Class autoCreateEventServiceClass() default ThreadSafeEventService.class; +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/UseTheClassOfTheAnnotatedMethodsParameter.java b/src/main/java/org/scijava/event/bushe/annotation/UseTheClassOfTheAnnotatedMethodsParameter.java new file mode 100644 index 000000000..dd7936fbd --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/UseTheClassOfTheAnnotatedMethodsParameter.java @@ -0,0 +1,15 @@ +package org.scijava.event.bushe.annotation; + +/** + * This is a dummy class to get around a limitation with annotations. + *

      + * It's nice to use an @EventSubscriber annotation without any parameters. For example: + *

      + * @EventSubscriber public void onEvent(FooEvent event) { //do something } 
      In this case, the method should + * obviously be subscribed to the FooEvent class. Since the eventClass is not required, annotations require a default to + * be supplied. A default of null is not allowed by the compiler since it is not a class literal. A default of + * Object.class cannot be used, since it is legal to subscribe to Object. hence, this class was created which documents + * the issue and provides decent feedback when using an IDE's parameter insight. + */ +public final class UseTheClassOfTheAnnotatedMethodsParameter { +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/VetoRuntimeTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/VetoRuntimeTopicPatternSubscriber.java new file mode 100644 index 000000000..7c7d2870c --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/VetoRuntimeTopicPatternSubscriber.java @@ -0,0 +1,38 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface VetoRuntimeTopicPatternSubscriber { + /** + * @return name of a method (which should return a String) and whose return value will become the subscription topic. + */ + public abstract String methodName() default "getTopicPatternName"; + + /** @return Whether to subscribe weakly or strongly. */ + public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** + * @return event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. + */ + public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** @return Determines the order in which this subscriber is called, default is FIFO.*/ + public abstract int priority() default 0; + + /** @return Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ + public abstract boolean exact() default false; + + /** + * @return Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the service needs to be created, it must have a default constructor. + */ + public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/VetoRuntimeTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/VetoRuntimeTopicSubscriber.java new file mode 100644 index 000000000..614de1382 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/VetoRuntimeTopicSubscriber.java @@ -0,0 +1,38 @@ +package org.scijava.event.bushe.annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +/** + * A veto subscriber to a topic that is determined at runtime. + */ + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface VetoRuntimeTopicSubscriber { + /** + * @return name of a method (that must return a String) and whose return value will become the subscription topic. + */ + public abstract String methodName() default "getTopicName"; + + /** @return Whether to subscribe weakly or strongly. */ + public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** + * @return event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. + */ + public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** @return Determines the order in which this subscriber is called, default is FIFO.*/ + public abstract int priority() default 0; + + /** + * @return Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the service needs to be created, it must have a default constructor. + */ + public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/VetoSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/VetoSubscriber.java new file mode 100644 index 000000000..67e01db4b --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/VetoSubscriber.java @@ -0,0 +1,69 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +/** + * An Annotation for adding VetoListener subscriptions to EventService Events. + *

      + * This annotation simplifies much of the repetitive boilerplate used for adding veto listeners + * (which in EventBus 2.0 will be called VetoSubscribers, thus this annotation name difference) + * to EventService Events. Example: + *

      + *

      + * public class MyAppController {
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EventSubscriber(eventClass=AppAppClosingEvent.class)
      + *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
      + *      //close connections, close windows
      + *   }
      + * }
      + *
      + * public class MyDocumentController {
      + *   @VetoSubscriber(eventClass=AppAppClosingEvent.class)
      + *   public boolean ensureDocumentIsSaved(AppAppClosingEvent appClosingEvent) {
      + *      if (docHasUnsavedChanges()) {
      + *         boolean answer = MyModalDialog.show("Are you sure you want to close and lose your changes?");
      + *         if (answer == StandardButtonValues.Cancel) {
      + *            //stop processing this event
      + *            return true;
      + *         }
      + *      }
      + *      //It's OK to close
      + *      return false;
      + *   }
      + * }
      + * 
      + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface VetoSubscriber { + /** The class to subscribe to, if not specified, a subscription is created for the type of the method parameter. */ + public abstract Class eventClass() default UseTheClassOfTheAnnotatedMethodsParameter.class; + + /** Determines the order in which this veto subscriber is called, default is FIFO.*/ + public abstract int priority() default 0; + + /** Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ + public abstract boolean exact() default false; + + /** Whether to subscribe weakly or strongly. */ + public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ + public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** + * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the + * service needs to be created, it must have a default constructor. + */ + public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/VetoTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/VetoTopicPatternSubscriber.java new file mode 100644 index 000000000..6fddb9b02 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/VetoTopicPatternSubscriber.java @@ -0,0 +1,66 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +/** + * An Annotation for adding VetoTopicPatternListener subscriptions to EventService Events. + *

      + * This annotation simplifies much of the repetitive boilerplate used for adding veto topic pattern listeners + * (which in EventBus 2.0 will be called VetoTopicPatternSubscribers, thus this annotation name difference) + * to EventService Events. Example: + *

      + *

      + * public class MyAppController {
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EvenTopicSubscriber(topic="App.Close.*")
      + *   public void onAppClosingEvent(String topic, Object payload) {
      + *      //close connections, close windows
      + *   }
      + * }
      + *
      + * public class MyDocumentController {
      + *   @VetoTopicSubscriber(topic="App.Close.*")
      + *   public boolean ensureDocumentIsSaved(String topic, Object payload) {
      + *      if (docHasUnsavedChanges()) {
      + *         boolean answer = MyModalDialog.show("Are you sure you want to close and lose your changes?");
      + *         if (answer == StandardButtonValues.Cancel) {
      + *            //stop processing this event
      + *            return true;
      + *         }
      + *      }
      + *      //It's OK to close
      + *      return false;
      + *   }
      + * }
      + * 
      + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface VetoTopicPatternSubscriber { + /** The topic to subscribe to */ + public abstract String topicPattern(); + + /** Determines the order in which this veto subscriber is called, default is FIFO.*/ + public abstract int priority() default 0; + + /** Whether to subscribe weakly or strongly. */ + public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ + public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** + * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the + * service needs to be created, it must have a default constructor. + */ + public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; +} diff --git a/src/main/java/org/scijava/event/bushe/annotation/VetoTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/VetoTopicSubscriber.java new file mode 100644 index 000000000..1ff069b69 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/annotation/VetoTopicSubscriber.java @@ -0,0 +1,66 @@ +package org.scijava.event.bushe.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.ThreadSafeEventService; + +/** + * An Annotation for adding VetoTopicListener subscriptions to EventService Events. + *

      + * This annotation simplifies much of the repetitive boilerplate used for adding veto topic listeners + * (which in EventBus 2.0 will be called VetoTopicSubscribers, thus this annotation name difference) + * to EventService Events. Example: + *

      + *

      + * public class MyAppController {
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EvenTopicSubscriber(topic="App.Close")
      + *   public void onAppClosingEvent(String topic, Object payload) {
      + *      //close connections, close windows
      + *   }
      + * }
      + *
      + * public class MyDocumentController {
      + *   @VetoTopicSubscriber(topic="App.Close")
      + *   public boolean ensureDocumentIsSaved(String topic, Object payload) {
      + *      if (docHasUnsavedChanges()) {
      + *         boolean answer = MyModalDialog.show("Are you sure you want to close and lose your changes?");
      + *         if (answer == StandardButtonValues.Cancel) {
      + *            //stop processing this event
      + *            return true;
      + *         }
      + *      }
      + *      //It's OK to close
      + *      return false;
      + *   }
      + * }
      + * 
      + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface VetoTopicSubscriber { + /** The topic to subscribe to */ + String topic(); + + /** Determines the order in which this veto subscriber is called, default is FIFO.*/ + public abstract int priority() default 0; + + /** Whether to subscribe weakly or strongly. */ + public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ + public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** + * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the + * service needs to be created, it must have a default constructor. + */ + public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; +} diff --git a/src/main/java/org/scijava/event/bushe/exception/SwingException.java b/src/main/java/org/scijava/event/bushe/exception/SwingException.java new file mode 100644 index 000000000..dfc3a048d --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/exception/SwingException.java @@ -0,0 +1,128 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe.exception; + +import java.io.PrintStream; +import java.io.PrintWriter; + +/** + * Aids in troubleshooting Swing application exceptions or any exception where the caller's stack may not be the + * exception stack (such as producer-consumer patterns that cross threads). + *

      + * Swing exceptions usually occur on the Swing Event Dispatch Thread, and often occur when code puts events on the EDT. + * This code is often in a non-EDT thread such as a thread that is receiving data from a server. If the non-EDT threads + * puts a call on the EDT and that EDT call causes and exception, the stack trace of the exception is lost, and it often + * difficult or impossible to determine where the non-EDT call came from. + *

      + * This Exception class is used to handle exceptions that occur when events are posted on the Swing EDT or occur on + * another thread from the Swing EDT. It includes a "swing" call stack to record from where the event occurred, and + * overrides so that the exception and the swing calling stack print nicely to logs. + *

      + * The swing calling stack is different from the cause of the exception since it is gathered before the exception occurs + * in a different stack from the cause and used after the exception in a new thread occurs. + * + * @author Michael Bushe michael@bushe.com + * @todo in SwingUtils, make an invokeLater() method that saves the calling stack and catches all exceptions from a + * subsequent call to SwingUtilities.invokeLater(), then throws a Swing Exception so the calling stack is saved. + */ +public class SwingException extends Exception { + protected StackTraceElement[] callingStackTrace; + + /** Default constructor */ + public SwingException() { + super(); + } + + /** + * Constructor for compatibility with Exception. Use ClientException(String, Throwable, StackTraceElement[]) + * instead + */ + public SwingException(String message) { + super(message); + } + + /** Constructor for compatibility with Exception Use ClientException(String, Throwable, StackTraceElement[]) instead */ + public SwingException(Throwable cause) { + super(cause); + } + + /** Constructor for compatibility with Exception Use ClientException(String, Throwable, StackTraceElement[]) instead */ + public SwingException(String message, Throwable cause) { + super(message, cause); + } + + /** + * Preferred constructor. + *

      + * + * @param message The message of exception + * @param cause The cause of the exception in the same call stack + * @param callingStack the stack trace that the client used to call the exception to occur. + */ + public SwingException(String message, Throwable cause, StackTraceElement[] callingStack) { + super(message, cause); + setCallingStack(callingStack); + } + + /** + * Swing exceptions often have two stacks - one thread causes the posting of an action on another thread - usually + * the Swing EDT thread. The other is the stack of the actual thread the exception occurred on, the exception occurs + * after the post. + * + * @param swingCallingStack the stack trace that the client used to cause the exception to occur. + */ + public void setCallingStack(StackTraceElement[] swingCallingStack) { + this.callingStackTrace = swingCallingStack; + } + + /** + * Client exceptions often have two stacks - one thread causes the posting of an action on another thread - usually + * the Swing EDT thread. The other is the stack of the actual thread the exception occurred on. + * + * @return the stack trace that the client used to cause the exception to occur. + */ + public StackTraceElement[] getCallingStack() { + return callingStackTrace; + } + + /** + * Calls printWriter(ps, true) + * + * @param ps the print stream + */ + public void printStackTrace(PrintStream ps) { + PrintWriter pw = new PrintWriter(ps, true); + printStackTrace(pw); + } + + /** + * Prints the calling stack and the exception stack trace. + * + * @param pw + */ + public void printStackTrace(PrintWriter pw) { + pw.println(this); + if (callingStackTrace != null) { + pw.println("Calling stack:"); + for (int i = 0; i < callingStackTrace.length; i++) { + pw.println("\tat " + callingStackTrace[i]); + } + pw.println("Stack after call:"); + } + super.printStackTrace(pw); + } +} + diff --git a/src/main/java/org/scijava/event/bushe/generics/TypeReference.java b/src/main/java/org/scijava/event/bushe/generics/TypeReference.java new file mode 100644 index 000000000..2befb0a41 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/generics/TypeReference.java @@ -0,0 +1,52 @@ +package org.scijava.event.bushe.generics; + +import java.lang.reflect.Type; +import java.lang.reflect.Constructor; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.InvocationTargetException; + +/** + * Courtesy of Neil Gafter's blog. + * Thanks to Curt Cox for the pointer. + */ +public abstract class TypeReference { + + private final Type type; + private volatile Constructor constructor; + + protected TypeReference() { + Type superclass = getClass().getGenericSuperclass(); + if (superclass instanceof Class) { + throw new RuntimeException("Missing type parameter."); + } + this.type = ((ParameterizedType) superclass).getActualTypeArguments()[0]; + } + + /** + * @return a new instance of {@code T} using the default, no-arg + * constructor. + * @throws IllegalAccessException on security reflection issues + * @throws NoSuchMethodException there's not getRawType on the type + * @throws java.lang.reflect.InvocationTargetException if a reflective call causes an exception in the underlying instance + * @throws InstantiationException if the instance cannot be instantiated + */ + @SuppressWarnings("unchecked") + public T newInstance() + throws NoSuchMethodException, IllegalAccessException, + InvocationTargetException, InstantiationException { + if (constructor == null) { + Class rawType = type instanceof Class + ? (Class) type + : (Class) ((ParameterizedType) type).getRawType(); + constructor = rawType.getConstructor(); + } + return (T) constructor.newInstance(); + } + + /** + * @return the referenced type. + */ + public Type getType() { + return this.type; + } +} diff --git a/src/test/java/org/scijava/event/bushe/BadEventService.java b/src/test/java/org/scijava/event/bushe/BadEventService.java new file mode 100644 index 000000000..2046821a2 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/BadEventService.java @@ -0,0 +1,10 @@ +package org.scijava.event.bushe; + +public class BadEventService extends ThreadSafeEventService { + + + /** @see org.scijava.event.bushe.EventService#subscribe(String,org.scijava.event.bushe.EventTopicSubscriber) */ + public boolean subscribe(String topic, EventTopicSubscriber eh) { + throw new RuntimeException("For testing"); + } +} diff --git a/src/test/java/org/scijava/event/bushe/EBTestCounter.java b/src/test/java/org/scijava/event/bushe/EBTestCounter.java new file mode 100644 index 000000000..8ebf75160 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/EBTestCounter.java @@ -0,0 +1,10 @@ +package org.scijava.event.bushe; + +/** + * @author Michael Bushe + * @since Nov 19, 2005 11:12:35 PM + */ +public class EBTestCounter { + public int eventsHandledCount; + public int subscribeExceptionCount; +} diff --git a/src/test/java/org/scijava/event/bushe/EDTUtil.java b/src/test/java/org/scijava/event/bushe/EDTUtil.java new file mode 100644 index 000000000..c74d4846f --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/EDTUtil.java @@ -0,0 +1,36 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.scijava.event.bushe; + +import java.awt.EventQueue; +import java.awt.Toolkit; + +/** + * + * @author Michael Bushe + */ +public class EDTUtil { + + /** + * Since we are using the event bus from a non-awt thread, stay alive for a sec to give time for the EDT to start and + * post the message + */ + public static void waitForEDT() { + EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue(); + long start = System.currentTimeMillis(); + do { + //wait at least once - plenty of time for the event sent to the queue to get there + long now = System.currentTimeMillis(); + if (now > start + (1000*5) ) { + throw new RuntimeException("Waited too long for the EDT to finish."); + } + try { + Thread.sleep(100); + } catch (Throwable e) { + } + } while(eventQueue.peekEvent() != null); + } +} diff --git a/src/test/java/org/scijava/event/bushe/EventServiceLocatorTestCase.java b/src/test/java/org/scijava/event/bushe/EventServiceLocatorTestCase.java new file mode 100644 index 000000000..8fb87e534 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/EventServiceLocatorTestCase.java @@ -0,0 +1,32 @@ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +/** + * Cleans out the event service locators before each test + */ +public class EventServiceLocatorTestCase extends TestCase { + public EventServiceLocatorTestCase(String name) { + super(name); + } + + public void testEmptyTestCaseToAvoidWarning() { + + } + + @Override + public void setUp() throws Exception { + clearEventServiceLocator(); + } + + public static void clearEventServiceLocator() { + System.clearProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS); + System.clearProperty(EventServiceLocator.EVENT_BUS_CLASS); + EventServiceLocator.clearAll(); + } + + @Override + protected void tearDown() throws Exception { + clearEventServiceLocator(); + } +} diff --git a/src/test/java/org/scijava/event/bushe/SubscriberForTest.java b/src/test/java/org/scijava/event/bushe/SubscriberForTest.java new file mode 100644 index 000000000..2fac88e57 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/SubscriberForTest.java @@ -0,0 +1,43 @@ +package org.scijava.event.bushe; + +import java.util.Date; + +/** + * @author Michael Bushe + * @since Nov 19, 2005 11:01:06 PM + */ +public class SubscriberForTest implements EventSubscriber { + private boolean throwException; + private Long waitTime; + private EBTestCounter testDefaultEventService; + Date callTime = null; + + public SubscriberForTest(EBTestCounter testDefaultEventService, Long waitTime) { + this.testDefaultEventService = testDefaultEventService; + this.waitTime = waitTime; + } + + public SubscriberForTest(EBTestCounter testDefaultEventService, boolean throwException) { + this.testDefaultEventService = testDefaultEventService; + this.throwException = throwException; + } + + public void onEvent(Object evt) { + callTime = new Date(); + if (waitTime != null) { + try { + Thread.sleep(waitTime.longValue()); + } catch (InterruptedException e) { + } + } + testDefaultEventService.eventsHandledCount++; + if (throwException) { + testDefaultEventService.subscribeExceptionCount++; + throw new IllegalArgumentException(); + } + } + + public boolean equals(Object obj) { + return (this == obj); + } +} diff --git a/src/test/java/org/scijava/event/bushe/TestContainerEventService.java b/src/test/java/org/scijava/event/bushe/TestContainerEventService.java new file mode 100644 index 000000000..5c7c6a322 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestContainerEventService.java @@ -0,0 +1,218 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +import javax.swing.*; +import java.awt.*; +import java.util.ArrayList; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestContainerEventService extends TestCase { + private ArrayList subscribedEvents; + private Object aSource = new Object(); + private JFrame frame; + private JPanel panel; + private Object lastEventObject; + + public TestContainerEventService(String name) { + super(name); + } + + protected void setUp() throws Exception { + subscribedEvents = new ArrayList(); + frame = new JFrame(); + panel = new JPanel(); + frame.setContentPane(panel); + } + + public void testContainerEventServiceFinder() { + JButton button = new JButton("Foo"); + panel.add(button); + JButton barButton = new JButton("Bar"); + panel.add(barButton); + EventService es = ContainerEventServiceFinder.getEventService(button); + assertTrue(EventBus.getGlobalEventService() != es); + EventService esBar = ContainerEventServiceFinder.getEventService(barButton); + assertEquals(esBar, es); + assertEquals(0, subscribedEvents.size()); + es.subscribe("FooTopic", new EventTopicSubscriber() { + public void onEvent(String topic, Object evt) { + subscribedEvents.add(evt); + } + }); + esBar.publish("FooTopic", "Foo"); + EDTUtil.waitForEDT(); + assertEquals(1, subscribedEvents.size()); + subscribedEvents.clear(); + Point location = frame.getLocation(); + frame.setLocation(33, 33); + EDTUtil.waitForEDT(); + assertTrue(subscribedEvents.size() == 0); + } + + public void testContainerEventServiceSupplier() { + JButton button = new JButton("Foo"); + JPanel subPanel = new JPanel(); + subPanel.add(button); + panel.add(subPanel); + JButton barButton = new JButton("Bar"); + JPanel subPanel2 = new ContainerEventServiceSupplierPanel(); + subPanel2.add(barButton); + panel.add(subPanel2); + EventService es = ContainerEventServiceFinder.getEventService(button); + assertTrue(EventBus.getGlobalEventService() != es); + EventService esBar = ContainerEventServiceFinder.getEventService(barButton); + assertTrue(esBar != es); + assertEquals(0, subscribedEvents.size()); + es.subscribe("FooTopic", new EventTopicSubscriber() { + public void onEvent(String topic, Object evt) { + subscribedEvents.add(evt); + } + }); + esBar.publish("FooTopic", "Foo"); + EDTUtil.waitForEDT(); + assertEquals(0, subscribedEvents.size()); + } + + public void testContainerEventServiceRegistrar() { + //Set the lastEventObject whenever the event fires on the right Container Event Service + EventTopicSubscriber buttonContainerTopicSubscriber = new EventTopicSubscriber() { + public void onEvent(String topic, Object data) { + System.out.println("topic=" + topic + ", data=" + data); + setLastEventObject(data); + } + }; + //Set the lastEventObject whenever the event fires on the right Container Event Service + VetoTopicEventListener buttonContainerVetoTopicSubscriber = new VetoTopicEventListener() { + public boolean shouldVeto(String topic, Object data) { + return "VetoMe".equals(data); + } + }; + //Set the lastEventObject whenever the event fires on the right Container Event Service + EventSubscriber buttonContainerSubscriber = new EventSubscriber() { + public void onEvent(Object data) { + System.out.println("class=" + data); + setLastEventObject(data); + } + }; + //Set the lastEventObject whenever the event fires on the right Container Event Service + VetoEventListener buttonContainerVetoSubscriber = new VetoEventListener() { + public boolean shouldVeto(Object data) { + return "VetoMe".equals(data.toString()); + } + }; + JButton button = new JButton("Foo"); + + ContainerEventServiceRegistrar reg = new ContainerEventServiceRegistrar(button, buttonContainerTopicSubscriber, + "RegEvent"); + EventService es = reg.getContainerEventService(); + assertTrue(es != null); + + ContainerEventServiceRegistrar reg2 = new ContainerEventServiceRegistrar(button, buttonContainerVetoTopicSubscriber, + "RegEvent"); + EventService es4reg2 = reg2.getContainerEventService(); + assertTrue(es4reg2 != null); + + ContainerEventServiceRegistrar reg3 = new ContainerEventServiceRegistrar(button, buttonContainerSubscriber, + String.class); + EventService es4reg3 = reg3.getContainerEventService(); + assertTrue(es4reg3 != null); + + ContainerEventServiceRegistrar reg4 = new ContainerEventServiceRegistrar(button, buttonContainerVetoSubscriber, + String.class); + EventService es4reg4 = reg4.getContainerEventService(); + assertTrue(es4reg4 != null); + + //Publishing on the global event bus should not have an effect + EventBus.publish("RegEvent", "WrongBus"); + assertEquals(getLastEventObject(), null); + + //Make a container that has another container inside it that supplies a container event service + JPanel subPanel = new JPanel(); + subPanel.add(button); + ContainerEventServiceSupplierPanel subPanel2 = new ContainerEventServiceSupplierPanel(); + panel.add(subPanel); + panel.add(subPanel2); + EventService es2 = reg.getContainerEventService(); + //the registrar kept up with the move + assertTrue(es2 != es); + + EventBus.publish("RegEvent", "WrongBus"); + assertEquals(getLastEventObject(), null); + EventBus.publish("StringClassEvent"); + assertEquals(getLastEventObject(), null); + + EventService topPanelES = ContainerEventServiceFinder.getEventService(panel); + + topPanelES.publish("RegEvent", "TopLevelBus"); + EDTUtil.waitForEDT(); + assertEquals("TopLevelBus", getLastEventObject()); + + topPanelES.publish("Don'tVetoMe"); + EDTUtil.waitForEDT(); + assertEquals("Don'tVetoMe", getLastEventObject()); + + topPanelES.publish("VetoMe"); + EDTUtil.waitForEDT(); + assertEquals("Don'tVetoMe", getLastEventObject());//veto worked + + topPanelES.publish("RegEvent", "TopLevelBus"); + EDTUtil.waitForEDT(); + assertEquals("TopLevelBus", getLastEventObject()); + + EventService subPanel2ES = subPanel2.getContainerEventService(); + subPanel2ES.publish("RegEvent", "SuppliedBus"); + EDTUtil.waitForEDT(); + assertEquals("TopLevelBus", getLastEventObject());//still + + subPanel2.add(button); + EDTUtil.waitForEDT(); + subPanel2ES.publish("RegEvent", "SuppliedBus"); + EDTUtil.waitForEDT(); + assertEquals("SuppliedBus", getLastEventObject());//detected move + + subPanel2ES.publish("RegEvent", "VetoMe"); + EDTUtil.waitForEDT(); + assertEquals("SuppliedBus", getLastEventObject());//veto moved + + subPanel.add(button); + topPanelES.publish("RegEvent", "TopLevelBus"); + EDTUtil.waitForEDT(); + assertEquals("TopLevelBus", getLastEventObject()); + + subPanel2ES.publish("RegEvent", "SuppliedBus"); + EDTUtil.waitForEDT(); + assertEquals("TopLevelBus", getLastEventObject()); + } + + private synchronized void setLastEventObject(Object data) { + lastEventObject = data; + } + + public synchronized Object getLastEventObject() { + return lastEventObject; + } + + class ContainerEventServiceSupplierPanel extends JPanel implements ContainerEventServiceSupplier { + private EventService es = new SwingEventService(); + + public EventService getContainerEventService() { + return es; + } + } +} diff --git a/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java b/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java new file mode 100644 index 000000000..05f2d3ac2 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java @@ -0,0 +1,1397 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.io.Serializable; +import java.util.List; +import java.util.Collection; +import java.util.Map; +import java.util.regex.Pattern; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Type; + +import java.awt.Container; +import java.awt.Component; +import javax.swing.JComponent; + +import junit.framework.TestCase; + +import org.scijava.event.bushe.generics.DataRequestEvent; +import org.scijava.event.bushe.generics.TypeReference; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestDefaultEventService extends TestCase { + + private ThreadSafeEventService eventService = null; + private EventSubscriber eventSubscriber = null; + private EventTopicSubscriber eventTopicSubscriber; + private SubscriberTimingEvent timing; + private EBTestCounter testCounter = new EBTestCounter(); + + public TestDefaultEventService(String name) { + super(name); + } + + protected void setUp() throws Exception { + eventService = new ThreadSafeEventService(null, false); + EventServiceLocatorTestCase.clearEventServiceLocator(); + } + + protected void tearDown() throws Exception { + eventService = null; + EventServiceLocatorTestCase.clearEventServiceLocator(); + } + + private EventServiceEvent createEvent() { + return new EventServiceEvent() { + public Object getSource() { + return ""; + } + }; + } + + private Class getEventClass() { + return createEvent().getClass(); + } + + private EventSubscriber createEventSubscriber(boolean throwException) { + return new SubscriberForTest(testCounter, throwException); + } + + private EventTopicSubscriber createEventTopicSubscriber(boolean throwException) { + return new TopicSubscriberForTest(testCounter, throwException); + } + + private EventSubscriber createEventSubscriber(Long waitTime) { + return new SubscriberForTest(testCounter, waitTime); + } + + private EventSubscriber getEventSubscriber() { + return getEventSubscriber(true); + } + + private EventSubscriber getEventSubscriber(boolean throwException) { + if (eventSubscriber == null) { + eventSubscriber = createEventSubscriber(throwException); + } + return eventSubscriber; + } + + private EventTopicSubscriber getEventTopicSubscriber() { + if (eventTopicSubscriber == null) { + eventTopicSubscriber = createEventTopicSubscriber(false); + } + return eventTopicSubscriber; + } + + public void testTyping() { + EventSubscriber subscriber = createEventSubscriber(false); + + Double doub = 3.14; + Number numb = doub; + eventService.subscribe(Number.class, subscriber); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(doub); + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + eventService.publish(numb); + assertEquals("testPublish(total)", 2, testCounter.eventsHandledCount); + eventService.unsubscribe(Number.class, subscriber); + eventService.subscribe(Double.class, subscriber); + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(doub); + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + eventService.publish(numb); + assertEquals("testPublish(total)", 2, testCounter.eventsHandledCount); + } + + public void testSubscribe() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = eventService.subscribe(getEventClass(), subscriber); + assertTrue("testSubscribe(new subscriber)", actualReturn); + + actualReturn = eventService.subscribe(getEventClass(), subscriber); + assertFalse("testSubscribe(duplicate subscriber)", actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + try { + actualReturn = eventService.subscribe((Class) null, getEventSubscriber()); + fail("subscribeStrongly(null, x) should have thrown exception"); + } catch (Exception e) { + } + + try { + actualReturn = eventService.subscribe(getEventClass(), null); + fail("subscribeStrongly(x, null) should have thrown exception"); + } catch (Exception e) { + } + + } + + public void testSubscribeOrder() { + boolean actualReturn; + SubscriberForTest subscriber1 = (SubscriberForTest) createEventSubscriber(new Long(100)); + SubscriberForTest subscriber2 = (SubscriberForTest) createEventSubscriber(new Long(100)); + SubscriberForTest subscriber3 = (SubscriberForTest) createEventSubscriber(new Long(100)); + + actualReturn = eventService.subscribe(getEventClass(), subscriber1); + actualReturn = eventService.subscribe(getEventClass(), subscriber2); + actualReturn = eventService.subscribe(getEventClass(), subscriber3); + + eventService.publish(createEvent()); + + assertTrue(subscriber1.callTime.before(subscriber2.callTime)); + assertTrue(subscriber2.callTime.before(subscriber3.callTime)); + + actualReturn = eventService.subscribe(getEventClass(), subscriber1); + eventService.publish(createEvent()); + + assertTrue(subscriber2.callTime.before(subscriber3.callTime)); + assertTrue(subscriber3.callTime.before(subscriber1.callTime)); + + List subscribers = eventService.getSubscribers(getEventClass()); + assertEquals(3, subscribers.size()); + for (int i = 0; i < subscribers.size(); i++) { + EventSubscriber subscriber = (EventSubscriber) subscribers.get(i); + eventService.unsubscribe(getEventClass(), subscriber); + } + eventService.subscribe(getEventClass(), (EventSubscriber) subscribers.get(1)); + eventService.subscribe(getEventClass(), (EventSubscriber) subscribers.get(0)); + eventService.subscribe(getEventClass(), (EventSubscriber) subscribers.get(2)); + eventService.publish(createEvent()); + assertTrue(subscriber3.callTime.before(subscriber2.callTime)); + assertTrue(subscriber2.callTime.before(subscriber1.callTime)); + } + + public void testSubscribeWeakly() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = eventService.subscribe(getEventClass(), subscriber); + assertTrue("testSubscribeWeakly(new subscriber)", actualReturn); + + actualReturn = eventService.subscribe(getEventClass(), subscriber); + assertFalse("testSubscribe(duplicate subscriber)", actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + subscriber = null; + System.gc(); + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + try { + actualReturn = eventService.subscribeStrongly((Class) null, getEventSubscriber()); + fail("subscribeStrongly(null, x) should have thrown exception"); + } catch (Exception e) { + } + + try { + actualReturn = eventService.subscribeStrongly(getEventClass(), null); + fail("subscribeStrongly(x, null) should have thrown exception"); + } catch (Exception e) { + } + } + + public void testSubscribeStrongly() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = eventService.subscribeStrongly(getEventClass(), subscriber); + assertTrue("testSubscribeWeakly(new subscriber)", actualReturn); + + actualReturn = eventService.subscribeStrongly(getEventClass(), subscriber); + assertFalse("testSubscribe(duplicate subscriber)", actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + subscriber = null; + System.gc(); + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + try { + actualReturn = eventService.subscribeStrongly((Class) null, getEventSubscriber()); + fail("subscribeStrongly(null, x) should have thrown exception"); + } catch (Exception e) { + } + + try { + actualReturn = eventService.subscribeStrongly(getEventClass(), null); + fail("subscribeStrongly(x, null) should have thrown exception"); + } catch (Exception e) { + } + } + + + public void testIllegalArgs() { + try { + EventBus.subscribeVetoListenerStrongly((Class) null, new VetoEventListenerForTest()); + fail(); + } catch (Throwable t) { + } + try { + EventBus.subscribeVetoListenerStrongly((String) null, new VetoTopicEventListenerForTest()); + fail(); + } catch (Throwable t) { + } + try { + EventBus.subscribeVetoListenerStrongly("foo", null); + fail(); + } catch (Throwable t) { + } + try { + EventBus.subscribeVetoListenerStrongly(getEventClass(), null); + fail(); + } catch (Throwable t) { + } + + + try { + EventBus.unsubscribeVetoListener((Class) null, new VetoEventListenerForTest()); + fail(); + } catch (Throwable t) { + } + try { + EventBus.unsubscribeVetoListener((String) null, new VetoTopicEventListenerForTest()); + fail(); + } catch (Throwable t) { + } + try { + EventBus.unsubscribeVetoListener("foo", null); + fail(); + } catch (Throwable t) { + } + try { + EventBus.unsubscribeVetoListener(getEventClass(), null); + fail(); + } catch (Throwable t) { + } + + } + + public void testVeto() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = eventService.subscribe(getEventClass(), subscriber); + + VetoEventListener vetoListener = new VetoEventListenerForTest(); + actualReturn = eventService.subscribeVetoListener(getEventClass(), vetoListener); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + eventService.unsubscribeVetoListener(getEventClass(), vetoListener); + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + + } + + public void testVetoException() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = eventService.subscribe(getEventClass(), subscriber); + + VetoEventListener vetoListener = new VetoEventListenerForTest(true); + actualReturn = eventService.subscribeVetoListenerStrongly(getEventClass(), vetoListener); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + eventService.unsubscribeVetoListener(getEventClass(), vetoListener); + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 2, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + + } + + public void testVetoTopic() { + boolean actualReturn; + EventTopicSubscriber subscriber = createEventTopicSubscriber(false); + + actualReturn = eventService.subscribe("FooTopic", subscriber); + + VetoTopicEventListener vetoListener = new VetoTopicEventListener() { + public boolean shouldVeto(String topic, Object data) { + return true; + } + }; + actualReturn = eventService.subscribeVetoListenerStrongly("FooTopic", vetoListener); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish("FooTopic", "Bar"); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + eventService.unsubscribeVetoListener("FooTopic", vetoListener); + eventService.publish("FooTopic", "Bar"); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + + public void testVetoWeak() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = eventService.subscribe(getEventClass(), subscriber); + + VetoEventListener vetoListener = new VetoEventListener() { + public boolean shouldVeto(Object evt) { + return true; + } + }; + actualReturn = eventService.subscribeVetoListener(getEventClass(), vetoListener); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + vetoListener = null; + System.gc(); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + public void testVetoTopicWeak() { + boolean actualReturn; + EventTopicSubscriber subscriber = createEventTopicSubscriber(false); + + actualReturn = eventService.subscribe("FooTopic", subscriber); + + VetoTopicEventListener vetoListener = new VetoTopicEventListener() { + public boolean shouldVeto(String topic, Object data) { + return true; + } + }; + actualReturn = eventService.subscribeVetoListener("FooTopic", vetoListener); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish("FooTopic", createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + vetoListener = null; + System.gc(); + eventService.publish("FooTopic", createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + + public void testUnsubscribe() { + eventService.subscribe(getEventClass(), getEventSubscriber(false)); + + boolean actualReturn; + + try { + actualReturn = eventService.unsubscribe((Class) null, getEventSubscriber()); + fail("unsubscribe(null, x) should have thrown exception"); + } catch (Exception e) { + } + + try { + actualReturn = eventService.unsubscribe(getEventClass(), null); + fail("unsubscribe(x, null) should have thrown exception"); + } catch (Exception e) { + } + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + actualReturn = eventService.unsubscribe(getEventClass(), getEventSubscriber()); + assertTrue("return value", actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + public void testUnsubscribeTopic() { + EventTopicSubscriber eventTopicSubscriber = createEventTopicSubscriber(false); + eventService.subscribe("FooTopic", eventTopicSubscriber); + + boolean actualReturn; + + try { + actualReturn = eventService.unsubscribe((String) null, eventTopicSubscriber); + fail("unsubscribe(null, x) should have thrown exception"); + } catch (Exception e) { + } + + try { + actualReturn = eventService.unsubscribe("FooTopic", null); + fail("unsubscribe(x, null) should have thrown exception"); + } catch (Exception e) { + } + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish("FooTopic", "Foo"); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + actualReturn = eventService.unsubscribe("FooTopic", eventTopicSubscriber); + assertTrue("return value", actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish("FooTopic", "Foo"); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + /** + * Test that the publish method works and that exceptions thrown in event subscribers don't halt publishing. In the + * test 2 subscribers are good and 2 subscribers throw exceptions. + */ + public void testPublish() { + try { + eventService.publish(null); + fail("publish(null) should have thrown exception"); + } catch (Exception e) { + } + + try { + eventService.publish((String) null, createEvent()); + fail("publish(null, x) should have thrown exception"); + } catch (Exception e) { + } + + eventService.publish(createEvent()); + assertEquals("testPublish(completed)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + eventService.publish("Foo", "Bar"); + assertEquals("testPublish(completed)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + eventService.subscribe(getEventClass(), createEventSubscriber(true)); + eventService.subscribe(getEventClass(), createEventSubscriber(false)); + eventService.subscribe(getEventClass(), createEventSubscriber(true)); + eventService.subscribe(getEventClass(), createEventSubscriber(false)); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + eventService.publish(createEvent()); + + //The test passes if 2 subscribers completed and 2 subscribers threw exception. + assertEquals("testPublish(completed)", 4, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 2, testCounter.subscribeExceptionCount); + + EventBus.subscribe(ObjectEvent.class, createEventSubscriber(false)); + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + ObjectEvent evt = new ObjectEvent("Foo", "Bar"); + assertEquals(evt.getEventObject(), "Bar"); + EventBus.publish(evt); + //Since we are using hte event bus from a non-awt thread, stay alive for a sec + //to give time for the EDT to start and post the message + try { + Thread.sleep(500); + } catch (InterruptedException e) { + } + assertEquals("testPublish(completed)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + public void testTimeHandling() { + eventService.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); + final Boolean[] wasCalled = new Boolean[1]; + eventService.subscribe(SubscriberTimingEvent.class, new EventSubscriber() { + public void onEvent(Object evt) { + wasCalled[0] = Boolean.TRUE; + } + }); + eventService.publish(createEvent()); + assertTrue(wasCalled[0] == null); + eventService = new ThreadSafeEventService(new Long(100), true); + eventService.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); + final Boolean[] wasCalled2 = new Boolean[1]; + eventService.subscribe(SubscriberTimingEvent.class, new EventSubscriber() { + public void onEvent(Object evt) { + wasCalled2[0] = Boolean.TRUE; + timing = (SubscriberTimingEvent) evt; + } + }); + eventService.publish(createEvent()); + assertTrue(wasCalled2[0] == Boolean.TRUE); + assertNotNull(timing.getSource()); + assertNotNull(timing.getEnd()); + assertNotNull(timing.getEvent()); + assertNotNull(timing.getSubscriber()); + assertNotNull(timing.getStart()); + assertNotNull(timing.getTimeLimitMilliseconds()); + assertFalse(timing.isEventHandlingExceeded()); + assertFalse(timing.isVetoExceeded()); + assertNull(timing.getVetoEventListener()); + } + + public void testEventLocator() { + EventServiceLocatorTestCase.clearEventServiceLocator(); + EventService es = EventServiceLocator.getSwingEventService(); + assertTrue(es instanceof SwingEventService); + es = new ThreadSafeEventService(null, false); + try { + EventServiceLocator.setEventService("foo", es); + } catch (EventServiceExistsException e) { + fail("First set should succeed."); + } + EventService es2 = EventServiceLocator.getEventService("foo"); + assertTrue(es2 == es); + try { + es = new ThreadSafeEventService(null, false); + EventServiceLocator.setEventService("foo", es); + fail("Second set should fail."); + } catch (EventServiceExistsException e) { + } + es2 = EventServiceLocator.getEventService("foo"); + assertFalse(es2 == es); + try { + EventServiceLocator.setEventService("foo", null); + } catch (EventServiceExistsException e) { + fail("Null should succeed."); + } + es2 = EventServiceLocator.getEventService("foo"); + assertNull(es2); + assertEquals(EventServiceLocator.getSwingEventService(), EventBus.getGlobalEventService()); + } + + /** + * Test for ISSUE #1: If a class implements both subscriber interfaces I've seen a topic 'event' be published from a + * publish method with the correct (topic) signature, yet be subscribed at the wrong subscriber method (the one with + * the signature for real event classes, not topics + */ + public void testSimultaneousTopicAndClass() { + DoubleSubscriber doubleSubscriber = new DoubleSubscriber(); + eventService.subscribe(org.scijava.event.bushe.ObjectEvent.class, doubleSubscriber); + eventService.subscribe("org.scijava.event.bushe.ObjectEvent.class", doubleSubscriber); + ObjectEvent evt = new ObjectEvent("Foo", "Bar"); + assertEquals(evt.getEventObject(), "Bar"); + eventService.publish(evt); + assertEquals(1, doubleSubscriber.timesEventCalled); + assertEquals(0, doubleSubscriber.timesTopicCalled); + assertEquals(evt, doubleSubscriber.lastEvent); + assertEquals(null, doubleSubscriber.lastEventString); + eventService.publish("org.scijava.event.bushe.ObjectEvent.class", "Bar"); + assertEquals(1, doubleSubscriber.timesEventCalled); + assertEquals(1, doubleSubscriber.timesTopicCalled); + assertEquals(evt, doubleSubscriber.lastEvent); + assertEquals("org.scijava.event.bushe.ObjectEvent.class", doubleSubscriber.lastEventString); + } + + public void testRegex() { + DoubleSubscriber doubleSubscriber = new DoubleSubscriber(); + Pattern pat = Pattern.compile("Foo[1-5]"); + eventService.subscribe(pat, doubleSubscriber); + List subscribers = eventService.getSubscribersToPattern(pat); + assertNotNull(subscribers); + assertEquals(1, subscribers.size()); + subscribers = eventService.getSubscribersByPattern("Foo1"); + assertNotNull(subscribers); + assertEquals(1, subscribers.size()); + subscribers = eventService.getSubscribers("Foo1"); + assertNotNull(subscribers); + assertEquals(1, subscribers.size()); + + eventService.publish("Foo1", "Bar"); + assertEquals(0, doubleSubscriber.timesEventCalled); + assertEquals(1, doubleSubscriber.timesTopicCalled); + assertEquals(null, doubleSubscriber.lastEvent); + assertEquals("Foo1", doubleSubscriber.lastEventString); + eventService.publish("Foo2", "Bar"); + assertEquals(0, doubleSubscriber.timesEventCalled); + assertEquals(2, doubleSubscriber.timesTopicCalled); + assertEquals(null, doubleSubscriber.lastEvent); + assertEquals("Foo2", doubleSubscriber.lastEventString); + } + + public void testTypeSubscription() { + DoubleSubscriber subscriber = new DoubleSubscriber(); + + eventService.subscribe(TopLevelEvent.class, subscriber); + List subscribers = eventService.getSubscribersToClass(TopLevelEvent.class); + assertNotNull(subscribers); + assertEquals(1, subscribers.size()); + subscribers = eventService.getSubscribersToClass(DerivedEvent.class); + assertNotNull(subscribers); + assertEquals(1, subscribers.size()); + subscribers = eventService.getSubscribers(DerivedEvent.class); + assertNotNull(subscribers); + assertEquals(1, subscribers.size()); + subscribers = eventService.getSubscribers(TopLevelEvent.class); + assertNotNull(subscribers); + assertEquals(1, subscribers.size()); + + DerivedEvent derivedEvent = new DerivedEvent(this); + eventService.publish(derivedEvent); + assertEquals(1, subscriber.timesEventCalled); + assertEquals(0, subscriber.timesTopicCalled); + assertEquals(derivedEvent, subscriber.lastEvent); + assertEquals(null, subscriber.lastEventString); + TopLevelEvent topLevelEvent = new TopLevelEvent(this); + eventService.publish(topLevelEvent); + assertEquals(2, subscriber.timesEventCalled); + assertEquals(0, subscriber.timesTopicCalled); + assertEquals(topLevelEvent, subscriber.lastEvent); + assertEquals(null, subscriber.lastEventString); + } + + //Parameterized Type + public void testParameterizedEvent() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException, InstantiationException { + final int[] timesCalled = new int[1]; + ParameterizedEvent stringRequestEvent = new ParameterizedEvent(); + ParameterizedEvent integerRequestEvent = new ParameterizedEvent(); + + TypeReference> stringTypeReference = new TypeReference>(){}; + TypeReference> integerTypeReference = new TypeReference>(){}; +// ParameterizedEvent dre = stringTypeReference.newInstance(); +// System.out.println("dre.getClass()"+dre.getClass()); +// System.out.println("stringTypeReference"+ stringTypeReference); +// System.out.println("stringTypeReference.getType()"+ stringTypeReference.getType()); + +// You can't simply do this, the TypeReference's generic type is important here +// Type superclass = integerRequestEvent.getClass().getGenericSuperclass(); +// Type type = ((ParameterizedType) superclass).getActualTypeArguments()[0]; +// System.out.println("superclass="+superclass); +// System.out.println("type="+type); + + eventService.subscribe(stringTypeReference.getType(), new EventSubscriber() { + public void onEvent(Object event) { + timesCalled[0]++; + } + }); + eventService.publish(stringTypeReference.getType(), stringRequestEvent); + eventService.publish(integerTypeReference.getType(), integerRequestEvent); + assertEquals(1, timesCalled[0]); + } + + public void testParameterizedEventMultiParams() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException, InstantiationException { + final int[] timesCalled = new int[1]; + DoublyParameterizedEvent stringRequestEvent = new DoublyParameterizedEvent(); + DoublyParameterizedEvent integerRequestEvent = new DoublyParameterizedEvent(); + DoublyParameterizedEvent switchRequestEvent = new DoublyParameterizedEvent(); + + TypeReference> stringTypeReference = new TypeReference>(){}; + TypeReference> integerTypeReference = new TypeReference>(){}; + TypeReference> switchTypeReference = new TypeReference>(){}; + + eventService.subscribe(stringTypeReference.getType(), new EventSubscriber() { + public void onEvent(Object event) { + timesCalled[0]++; + } + }); + eventService.subscribe(integerTypeReference.getType(), new EventSubscriber() { + public void onEvent(Object event) { + timesCalled[0]++; + } + }); + eventService.publish(stringTypeReference.getType(), stringRequestEvent); + assertEquals(1, timesCalled[0]); + eventService.publish(integerTypeReference.getType(), integerRequestEvent); + assertEquals(2, timesCalled[0]); + eventService.publish(switchTypeReference.getType(), switchRequestEvent); + assertEquals(2, timesCalled[0]); + } + + public void testWildcardSubscription() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException, InstantiationException { + final int[] timesCalled = new int[1]; + ParameterizedEvent jComponentRequestEvent = new ParameterizedEvent(); + + TypeReference> containerWildcardTypeRef = new TypeReference>(){}; + + eventService.subscribe(containerWildcardTypeRef.getType(), new EventSubscriber() { + public void onEvent(Object event) { + timesCalled[0]++; + } + }); + TypeReference> jComponentTypeRef = new TypeReference>(){}; + + eventService.publish(jComponentTypeRef.getType(), jComponentRequestEvent); + assertEquals(1, timesCalled[0]); + + //publishing a Component should not hit the wildcard since it doesn't extend Component + TypeReference> componentTypeRef = new TypeReference>(){}; + ParameterizedEvent componentRequestEvent = new ParameterizedEvent(); + eventService.publish(componentTypeRef.getType(), componentRequestEvent); + assertEquals(1, timesCalled[0]); + + //publish wildcards is a not yet supported + try { + eventService.publish(containerWildcardTypeRef.getType(), jComponentRequestEvent); + fail(); + } catch (IllegalArgumentException ex) { + } + assertEquals(1, timesCalled[0]); + + //Test super wildcard, should be opposite of above + eventService.clearAllSubscribers(); + TypeReference> containerSuperWildcardTypeRef = new TypeReference>(){}; + eventService.subscribe(containerSuperWildcardTypeRef.getType(), new EventSubscriber() { + public void onEvent(Object event) { + timesCalled[0]++; + } + }); + eventService.publish(jComponentTypeRef.getType(), jComponentRequestEvent); + assertEquals(1, timesCalled[0]); + eventService.publish(componentTypeRef.getType(), componentRequestEvent); + assertEquals(2, timesCalled[0]); + + //Test exact matches + } + + public class ParameterizedEvent { + private Collection data; + public Collection getData() { + return data; + } + } + + public class DoublyParameterizedEvent { + private Map data; + public Map getData() { + return data; + } + } + + class DoubleSubscriber implements EventTopicSubscriber, EventSubscriber { + public int timesTopicCalled = 0; + public int timesEventCalled = 0; + public String lastEventString; + public Object lastEvent; + + public void onEvent(String topic, Object data) { + timesTopicCalled++; + lastEventString = topic; + } + + public void onEvent(Object evt) { + timesEventCalled++; + lastEvent = evt; + } + } + + class TopLevelEvent extends AbstractEventServiceEvent { + public TopLevelEvent(Object source) { + super(source); + } + } + + class DerivedEvent extends TopLevelEvent { + public DerivedEvent(Object source) { + super(source); + } + } + + + /** + * Test match for generic type's of generic types + */ + public void testGenericGeneric() { + final int[] timesCalled = new int[1]; + DataRequestEvent> request = new DataRequestEvent>(); + Type type = new TypeReference>>() {}.getType(); + eventService.subscribe(type, new EventSubscriber() { + public void onEvent(Object event) { + timesCalled[0]++; + } + }); + eventService.publish(type, request); + assertEquals(1, timesCalled[0]); + DataRequestEvent> stringRequest = new DataRequestEvent>(); + Type stringType = new TypeReference>>() {}.getType(); + eventService.publish(stringType , stringRequest); + assertEquals(1, timesCalled[0]); + } + + public void testTopicsCache() { + Object a1 = new Object(); + //All of the above should be checked with topics. + //Topics should test that exact matches are preferred over pattern matches + //Test that a default setting does not cache + EventService es = new ThreadSafeEventService(null); + es.publish("IceCream.Vanilla", a1); + List events = es.getCachedTopicData("IceCream.Vanilla"); + assertNull(events); + Object lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertNull(lastEventObj); + assertEquals(0, es.getCacheSizeForTopic("IceCream.Vanilla")); + assertEquals(0, es.getDefaultCacheSizePerClassOrTopic()); + //Test that changing the default to 1 caches 1 + es.setDefaultCacheSizePerClassOrTopic(1); + assertEquals(1, es.getDefaultCacheSizePerClassOrTopic()); + Object publishedEventObj = new Object(); + es.publish("IceCream.Vanilla", publishedEventObj); + events = es.getCachedTopicData("IceCream.Vanilla"); + assertNotNull(events); + assertEquals(1, events.size()); + lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertTrue(lastEventObj == publishedEventObj); + assertEquals(1, es.getCacheSizeForTopic("IceCream.Vanilla")); + //subscribe and see if it still works and that the new event is cached + EventTopicSubscriber sub = new EventTopicSubscriber() { + public void onEvent(String topic, Object data) { + System.out.println("Barrrr"); + } + }; + es.subscribe("IceCream.Vanilla", sub); + publishedEventObj = new Object(); + es.publish("IceCream.Vanilla", publishedEventObj); + events = es.getCachedTopicData("IceCream.Vanilla"); + assertNotNull(events); + assertEquals(1, events.size()); + lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertTrue(lastEventObj == publishedEventObj); + assertEquals(1, es.getCacheSizeForTopic("IceCream.Vanilla")); + + //Test that changing the default to 5 caches 5 + es.setDefaultCacheSizePerClassOrTopic(5); + assertEquals(5, es.getDefaultCacheSizePerClassOrTopic()); + Object publishedEventObj2 = new Object(); + Object publishedEventObj3 = new Object(); + Object publishedEventObj4 = new Object(); + Object publishedEventObj5 = new Object(); + es.publish("IceCream.Vanilla", publishedEventObj2); + es.publish("IceCream.Vanilla", publishedEventObj3); + es.publish("IceCream.Vanilla", publishedEventObj4); + es.publish("IceCream.Vanilla", publishedEventObj5); + events = es.getCachedTopicData("IceCream.Vanilla"); + assertNotNull(events); + assertEquals(5, events.size()); + lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertTrue(lastEventObj == publishedEventObj5); + assertEquals(5, es.getCacheSizeForTopic("IceCream.Vanilla")); + Object publishedEventObj6 = new Object(); + es.publish("IceCream.Vanilla", publishedEventObj6); + assertEquals(5, events.size()); + lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertTrue(lastEventObj == publishedEventObj6); + assertEquals(5, es.getCacheSizeForTopic("IceCream.Vanilla")); + + //Test that setting a topic cache with 10 caches 10 for that topic, but the default for the others + es.setCacheSizeForTopic("IceCream.Vanilla", 10); + Object publishedEventObjB1 = new Object(); + Object publishedEventObjB2 = new Object(); + Object publishedEventObjB3 = new Object(); + Object publishedEventObjB4 = new Object(); + Object publishedEventObjB5 = new Object(); + Object publishedEventObjB6 = new Object(); + es.publish("IceCream.Vanilla", publishedEventObj6); + es.publish("IceCream.Vanilla", publishedEventObj6);//see if reuse is OK + es.publish("IceCream.Blueberry", publishedEventObjB1); + es.publish("IceCream.Blueberry", publishedEventObjB2); + es.publish("IceCream.Blueberry", publishedEventObjB3); + es.publish("IceCream.Blueberry", publishedEventObjB4); + es.publish("IceCream.Blueberry", publishedEventObjB5); + es.publish("IceCream.Blueberry", publishedEventObjB6); + es.publish("IceCream.Vanilla", publishedEventObj6); + es.publish("IceCream.Vanilla", publishedEventObj6); + Object publishedEvent10 = new Object(); + es.publish("IceCream.Vanilla", publishedEvent10); + lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertTrue(lastEventObj == publishedEvent10); + events = es.getCachedTopicData("IceCream.Vanilla"); + assertNotNull(events); + assertEquals(10, events.size()); + assertEquals(10, es.getCacheSizeForTopic("IceCream.Vanilla")); + assertTrue(publishedEvent10 == events.get(0)); + assertTrue(publishedEventObj6 == events.get(1)); + assertTrue(publishedEventObj6 == events.get(2)); + assertTrue(publishedEventObj6 == events.get(3)); + assertTrue(publishedEventObj6 == events.get(4)); + assertTrue(publishedEventObj6 == events.get(5)); + assertTrue(publishedEventObj5 == events.get(6)); + assertTrue(publishedEventObj4 == events.get(7)); + assertTrue(publishedEventObj3 == events.get(8)); + assertTrue(publishedEventObj2 == events.get(9)); + lastEventObj = es.getLastTopicData("IceCream.Blueberry"); + assertTrue(lastEventObj == publishedEventObjB6); + events = es.getCachedTopicData("IceCream.Blueberry"); + assertNotNull(events); + assertEquals(5, events.size()); + assertEquals(5, es.getCacheSizeForTopic("IceCream.Blueberry")); + assertTrue(publishedEventObjB6 == events.get(0)); + assertTrue(publishedEventObjB5 == events.get(1)); + assertTrue(publishedEventObjB4 == events.get(2)); + assertTrue(publishedEventObjB3 == events.get(3)); + assertTrue(publishedEventObjB2 == events.get(4)); + //this makes the cache resize to a smaller amount + es.setCacheSizeForTopic("IceCream.Vanilla", 1); + es.publish("IceCream.Vanilla", publishedEventObj4); + lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertTrue(lastEventObj == publishedEventObj4); + events = es.getCachedTopicData("IceCream.Vanilla"); + assertNotNull(events); + assertEquals(1, events.size()); + assertEquals(1, es.getCacheSizeForTopic("IceCream.Vanilla")); + es.publish("IceCream.Blueberry", publishedEventObjB4); + lastEventObj = es.getLastTopicData("IceCream.Blueberry"); + assertTrue(lastEventObj == publishedEventObjB4); + events = es.getCachedTopicData("IceCream.Blueberry"); + assertNotNull(events); + assertEquals(5, events.size()); + assertEquals(5, es.getCacheSizeForTopic("IceCream.Blueberry")); + assertTrue(publishedEventObjB4 == events.get(0)); + assertTrue(publishedEventObjB6 == events.get(1)); + assertTrue(publishedEventObjB5 == events.get(2)); + assertTrue(publishedEventObjB4 == events.get(3)); + assertTrue(publishedEventObjB3 == events.get(4)); + + //Test pattern cache size works, but does not override a specific topic setting + Pattern pattern = Pattern.compile("IceCream.*"); + es.setDefaultCacheSizePerClassOrTopic(5); + es.setCacheSizeForTopic(pattern, 2); + es.setCacheSizeForTopic("IceCream.Vanilla", 3); + Object publishedEventObjX1 = new Object(); + Object publishedEventObjX2 = new Object(); + Object publishedEventObjX3 = new Object(); + Object publishedEventObjX4 = new Object(); + Object publishedEventObjX5 = new Object(); + Object publishedEventObjX6 = new Object(); + Object publishedEventObjC1 = new Object(); + Object publishedEventObjC2 = new Object(); + Object publishedEventObjC3 = new Object(); + Object publishedEventObjC4 = new Object(); + es.publish("X", publishedEventObjX1); + es.publish("IceCream.Vanilla", publishedEventObj6); + es.publish("IceCream.Chocolate", publishedEventObjC1); + es.publish("X", publishedEventObjX2);//see if reuse is OK + es.publish("X", publishedEventObjX3); + es.publish("IceCream.Chocolate", publishedEventObjC2); + es.publish("X", publishedEventObjX4); + es.publish("IceCream.Vanilla", publishedEventObj4); + es.publish("IceCream.Vanilla", publishedEventObj5); + es.publish("IceCream.Vanilla", publishedEventObj6); + es.publish("X", publishedEventObjX5); + es.publish("IceCream.Chocolate", publishedEventObjC3); + es.publish("X", publishedEventObjX6); + es.publish("IceCream.Chocolate", publishedEventObjC4); + + lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertTrue(lastEventObj == publishedEventObj6); + events = es.getCachedTopicData("IceCream.Vanilla"); + assertNotNull(events); + assertEquals(3, events.size()); + assertEquals(3, es.getCacheSizeForTopic("IceCream.Vanilla")); + lastEventObj = es.getLastTopicData("X"); + assertTrue(lastEventObj == publishedEventObjX6); + events = es.getCachedTopicData("X"); + assertNotNull(events); + assertEquals(5, events.size()); + assertEquals(5, es.getCacheSizeForEventClass(EventX.class)); + assertTrue(publishedEventObjX6 == events.get(0)); + assertTrue(publishedEventObjX5 == events.get(1)); + assertTrue(publishedEventObjX4 == events.get(2)); + assertTrue(publishedEventObjX3 == events.get(3)); + assertTrue(publishedEventObjX2 == events.get(4)); + events = es.getCachedTopicData("IceCream.Chocolate"); + assertNotNull(events); + assertEquals(2, events.size()); + assertEquals(2, es.getCacheSizeForTopic("IceCream.Chocolate")); + assertTrue(publishedEventObjC4 == events.get(0)); + assertTrue(publishedEventObjC3 == events.get(1)); + + es.clearCache("IceCream.Blueberry"); + events = es.getCachedTopicData("IceCream.Blueberry"); + assertNull(events); + lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertNotNull(lastEventObj); + events = es.getCachedTopicData("IceCream.Vanilla"); + assertNotNull(events); + assertEquals(3, events.size()); + lastEventObj = es.getLastTopicData("IceCream.Chocolate"); + assertNotNull(lastEventObj); + events = es.getCachedTopicData("IceCream.Chocolate"); + assertNotNull(events); + assertEquals(2, events.size()); + lastEventObj = es.getLastTopicData("X"); + assertNotNull(lastEventObj); + events = es.getCachedTopicData("X"); + assertNotNull(events); + assertEquals(5, events.size()); + es.clearCache(pattern); + events = es.getCachedTopicData("IceCream.Vanilla"); + assertNull(events); + lastEventObj = es.getLastTopicData("IceCream.Chocolate"); + assertNull(lastEventObj); + lastEventObj = es.getLastTopicData("X"); + assertNotNull(lastEventObj); + events = es.getCachedTopicData("X"); + assertNotNull(events); + assertEquals(5, events.size()); + + es.publish("X", publishedEventObjX6); + es.publish("IceCream.Blueberry", publishedEventObjB4); + es.publish("IceCream.Vanilla", publishedEvent10); + es.clearCache(); + lastEventObj = es.getLastTopicData("IceCream.Vanilla"); + assertNull(lastEventObj); + lastEventObj = es.getLastTopicData("IceCream.Blueberry"); + assertNull(lastEventObj); + lastEventObj = es.getLastTopicData("IceCream.Chocolate"); + assertNull(lastEventObj); + lastEventObj = es.getLastTopicData("X"); + assertNull(lastEventObj); + } + + + public void testEventsCache() { + //Test that a default setting does not cache + EventService es = new ThreadSafeEventService(null); + es.publish(new EventA()); + List aEvents = es.getCachedEvents(EventA.class); + assertNull(aEvents); + EventA lastAEvent = es.getLastEvent(EventA.class); + assertNull(lastAEvent); + assertEquals(0, es.getCacheSizeForEventClass(EventA.class)); + assertEquals(0, es.getDefaultCacheSizePerClassOrTopic()); + //Test that changing the default to 1 caches 1 + es.setDefaultCacheSizePerClassOrTopic(1); + assertEquals(1, es.getDefaultCacheSizePerClassOrTopic()); + EventA publishedEvent = new EventA(); + es.publish(publishedEvent); + aEvents = es.getCachedEvents(EventA.class); + assertNotNull(aEvents); + assertEquals(1, aEvents.size()); + lastAEvent = es.getLastEvent(EventA.class); + assertTrue(lastAEvent == publishedEvent); + assertEquals(1, es.getCacheSizeForEventClass(EventA.class)); + //subscribe and see if it still works and that the new event is cached + EventSubscriber sub = new EventSubscriber() { + public void onEvent(Object evt) { + System.out.println("Fooo"); + } + }; + es.subscribe(EventA.class, sub); + publishedEvent = new EventA(); + es.publish(publishedEvent); + aEvents = es.getCachedEvents(EventA.class); + assertNotNull(aEvents); + assertEquals(1, aEvents.size()); + lastAEvent = es.getLastEvent(EventA.class); + assertTrue(lastAEvent == publishedEvent); + assertEquals(1, es.getCacheSizeForEventClass(EventA.class)); + + //Test that changing the default to 5 caches 5 + es.setDefaultCacheSizePerClassOrTopic(5); + assertEquals(5, es.getDefaultCacheSizePerClassOrTopic()); + EventA publishedEvent2 = new EventA(); + EventA publishedEvent3 = new EventA(); + EventA publishedEvent4 = new EventA(); + EventA publishedEvent5 = new EventA(); + es.publish(publishedEvent2); + es.publish(publishedEvent3); + es.publish(publishedEvent4); + es.publish(publishedEvent5); + aEvents = es.getCachedEvents(EventA.class); + assertNotNull(aEvents); + assertEquals(5, aEvents.size()); + lastAEvent = es.getLastEvent(EventA.class); + assertTrue(lastAEvent == publishedEvent5); + assertEquals(5, es.getCacheSizeForEventClass(EventA.class)); + EventA publishedEvent6 = new EventA(); + es.publish(publishedEvent6); + assertEquals(5, aEvents.size()); + lastAEvent = es.getLastEvent(EventA.class); + assertTrue(lastAEvent == publishedEvent6); + assertEquals(5, es.getCacheSizeForEventClass(EventA.class)); + + //Test that overriding a single event class with 10 caches 10 for that event, but the default for the others + es.setCacheSizeForEventClass(EventA.class, 10); + EventB publishedEventB1 = new EventB(); + EventB publishedEventB2 = new EventB(); + EventB publishedEventB3 = new EventB(); + EventB publishedEventB4 = new EventB(); + EventB publishedEventB5 = new EventB(); + EventB publishedEventB6 = new EventB(); + es.publish(publishedEvent6); + es.publish(publishedEvent6);//see if reuse is OK + es.publish(publishedEventB1); + es.publish(publishedEventB2); + es.publish(publishedEventB3); + es.publish(publishedEventB4); + es.publish(publishedEventB5); + es.publish(publishedEventB6); + es.publish(publishedEvent6); + es.publish(publishedEvent6); + EventA publishedEvent10 = new EventA(); + es.publish(publishedEvent10); + lastAEvent = es.getLastEvent(EventA.class); + assertTrue(lastAEvent == publishedEvent10); + aEvents = es.getCachedEvents(EventA.class); + assertNotNull(aEvents); + assertEquals(10, aEvents.size()); + assertEquals(10, es.getCacheSizeForEventClass(EventA.class)); + assertTrue(publishedEvent10 == aEvents.get(0)); + assertTrue(publishedEvent6 == aEvents.get(1)); + assertTrue(publishedEvent6 == aEvents.get(2)); + assertTrue(publishedEvent6 == aEvents.get(3)); + assertTrue(publishedEvent6 == aEvents.get(4)); + assertTrue(publishedEvent6 == aEvents.get(5)); + assertTrue(publishedEvent5 == aEvents.get(6)); + assertTrue(publishedEvent4 == aEvents.get(7)); + assertTrue(publishedEvent3 == aEvents.get(8)); + assertTrue(publishedEvent2 == aEvents.get(9)); + EventB lastBEvent = es.getLastEvent(EventB.class); + assertTrue(lastBEvent == publishedEventB6); + List bEvents = es.getCachedEvents(EventB.class); + assertNotNull(bEvents); + assertEquals(5, bEvents.size()); + assertEquals(5, es.getCacheSizeForEventClass(EventB.class)); + assertTrue(publishedEventB6 == bEvents.get(0)); + assertTrue(publishedEventB5 == bEvents.get(1)); + assertTrue(publishedEventB4 == bEvents.get(2)); + assertTrue(publishedEventB3 == bEvents.get(3)); + assertTrue(publishedEventB2 == bEvents.get(4)); + //this makes the cache resize smaller + es.setCacheSizeForEventClass(EventA.class, 1); + es.publish(publishedEvent4); + lastAEvent = es.getLastEvent(EventA.class); + assertTrue(lastAEvent == publishedEvent4); + aEvents = es.getCachedEvents(EventA.class); + assertNotNull(aEvents); + assertEquals(1, aEvents.size()); + assertEquals(1, es.getCacheSizeForEventClass(EventA.class)); + es.publish(publishedEventB4); + lastBEvent = es.getLastEvent(EventB.class); + assertTrue(lastBEvent == publishedEventB4); + bEvents = es.getCachedEvents(EventB.class); + assertNotNull(bEvents); + assertEquals(5, bEvents.size()); + assertEquals(5, es.getCacheSizeForEventClass(EventB.class)); + assertTrue(publishedEventB4 == bEvents.get(0)); + assertTrue(publishedEventB6 == bEvents.get(1)); + assertTrue(publishedEventB5 == bEvents.get(2)); + assertTrue(publishedEventB4 == bEvents.get(3)); + assertTrue(publishedEventB3 == bEvents.get(4)); + + //Test that overriding a subclass event class with 2 changes and a derived class with 5 ... + //caches 5 for the derived class + //caches 2 for the subclass + //caches 2 for another derived class + // and that interfaces only take effect if the cache size of a class or it's superclasses has been set. + es.setCacheSizeForEventClass(EventA.class, 2); + es.setCacheSizeForEventClass(EventX.class, 5); + es.setCacheSizeForEventClass(Serializable.class, 3); + EventX publishedEventX1 = new EventX(); + EventX publishedEventX2 = new EventX(); + EventX publishedEventX3 = new EventX(); + EventX publishedEventX4 = new EventX(); + EventX publishedEventX5 = new EventX(); + EventX publishedEventX6 = new EventX(); + EventC publishedEventC1 = new EventC(); + EventC publishedEventC2 = new EventC(); + EventC publishedEventC3 = new EventC(); + EventC publishedEventC4 = new EventC(); + es.publish(publishedEventX1); + es.publish(publishedEvent6); + es.publish(publishedEventC1); + es.publish(publishedEventX2);//see if reuse is OK + es.publish(publishedEventX3); + es.publish(publishedEventC2); + es.publish(publishedEventX4); + es.publish(publishedEvent4); + es.publish(publishedEventX5); + es.publish(publishedEventC3); + es.publish(publishedEventX6); + es.publish(publishedEventC4); + + lastAEvent = es.getLastEvent(EventA.class); + assertTrue(lastAEvent == publishedEvent4); + aEvents = es.getCachedEvents(EventA.class); + assertNotNull(aEvents); + assertEquals(2, aEvents.size()); + assertEquals(2, es.getCacheSizeForEventClass(EventA.class)); + lastAEvent = es.getLastEvent(EventX.class); + assertTrue(lastAEvent == publishedEventX6); + List xEvents = es.getCachedEvents(EventX.class); + assertNotNull(xEvents); + assertEquals(5, xEvents.size()); + assertEquals(5, es.getCacheSizeForEventClass(EventX.class)); + assertTrue(publishedEventX6 == xEvents.get(0)); + assertTrue(publishedEventX5 == xEvents.get(1)); + assertTrue(publishedEventX4 == xEvents.get(2)); + assertTrue(publishedEventX3 == xEvents.get(3)); + assertTrue(publishedEventX2 == xEvents.get(4)); + try { + Serializable serializableEvent = es.getLastEvent(Serializable.class); + fail("Shouldn't be able to pass an interface."); + } catch (IllegalArgumentException ex) { + } + EventC lastCEvent = es.getLastEvent(EventC.class); + assertTrue(lastCEvent == publishedEventC4); + try { + List serializableEvents = es.getCachedEvents(Serializable.class); + fail("Shouldn't be able to pass an interface."); + } catch (IllegalArgumentException ex) { + } + List cEvents = es.getCachedEvents(EventC.class); + assertNotNull(cEvents); + assertEquals(3, cEvents.size()); + assertEquals(3, es.getCacheSizeForEventClass(EventC.class)); + + es.clearCache(EventB.class); + bEvents = es.getCachedEvents(EventB.class); + assertNull(bEvents); + lastAEvent = es.getLastEvent(EventA.class); + assertNotNull(lastAEvent); + aEvents = es.getCachedEvents(EventA.class); + assertNotNull(aEvents); + assertEquals(2, aEvents.size()); + EventX lastXEvent = es.getLastEvent(EventX.class); + assertNotNull(lastXEvent); + xEvents = es.getCachedEvents(EventX.class); + assertNotNull(xEvents); + assertEquals(5, xEvents.size()); + es.clearCache(EventA.class); + aEvents = es.getCachedEvents(EventA.class); + assertNull(aEvents); + lastXEvent = es.getLastEvent(EventX.class); + xEvents = es.getCachedEvents(EventX.class); + assertNull(lastXEvent); + assertNull(xEvents); + + es.publish(publishedEventX6); + es.publish(publishedEventB4); + es.publish(publishedEvent10); + es.clearCache(); + lastAEvent = es.getLastEvent(EventA.class); + assertNull(lastAEvent); + lastBEvent = es.getLastEvent(EventB.class); + assertNull(lastBEvent); + lastAEvent = es.getLastEvent(EventX.class); + assertNull(lastAEvent); + } + + + //Base + public static class EventA implements EventServiceEvent { + /** @return The issuer of the event. */ + public Object getSource() { + return null; + } + } + + //No relation + public static class EventB implements EventServiceEvent, Serializable { + /** @return The issuer of the event. */ + public Object getSource() { + return null; + } + } + + //No relation + public static class EventC implements EventServiceEvent, Serializable { + /** @return The issuer of the event. */ + public Object getSource() { + return null; + } + } + + //Derived 1 + public static class EventX extends EventA { + /** @return The issuer of the event. */ + public Object getSource() { + return null; + } + } + + //Derived 2 + public static class EventY extends EventA { + /** @return The issuer of the event. */ + public Object getSource() { + return null; + } + } + +} diff --git a/src/test/java/org/scijava/event/bushe/TestEventAction.java b/src/test/java/org/scijava/event/bushe/TestEventAction.java new file mode 100644 index 000000000..969bf2acf --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventAction.java @@ -0,0 +1,181 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.util.ArrayList; +import java.awt.event.ActionEvent; +import javax.swing.Action; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; + +import junit.framework.TestCase; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestEventAction extends TestCase { + private ArrayList subscribedEvents; + private Object aSource = new Object(); + + private class MyEventServiceEvent extends AbstractEventServiceEvent { + private ActionEvent evt; + + public MyEventServiceEvent(Object source, ActionEvent evt) { + super(source); + this.evt = evt; + } + } + + public TestEventAction(String name) { + super(name); + } + + protected void setUp() throws Exception { + subscribedEvents = new ArrayList(); + System.clearProperty(EventServiceLocator.EVENT_BUS_CLASS); + System.clearProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS); + } + + public void testEventBusTopicAction() { + EventBusAction action = new EventBusAction(); + action.putValue(Action.ACTION_COMMAND_KEY, "FooAction"); + EventTopicSubscriber subscriber = new EventTopicSubscriber() { + public void onEvent(String topic, Object evt) { + subscribedEvents.add(evt); + } + }; + EventBus.subscribeStrongly("FooAction", subscriber); + action.actionPerformed(new ActionEvent(this, 0, "FooAction")); + try { + Thread.sleep(500);//Calling hte EDT, need to slow this thread + } catch (InterruptedException e) { + } + assertEquals(1, subscribedEvents.size()); + assertNotNull(action);//keeps it from being garbage collected + } + + public void testEventBusTopicActionEventServiceValueFirst() { + EventBusAction action = new EventBusAction(); + action.putValue(EventBusAction.EVENT_SERVICE_TOPIC_NAME, "FooAction"); + action.putValue(Action.ACTION_COMMAND_KEY, "BarAction"); + EventBus.subscribeStrongly("FooAction", new EventTopicSubscriber() { + public void onEvent(String topic, Object evt) { + subscribedEvents.add(evt); + } + }); + action.actionPerformed(new ActionEvent(this, 0, "FooAction")); + try { + Thread.sleep(500);//Calling hte EDT, need to slow this thread + } catch (InterruptedException e) { + } + assertEquals(1, subscribedEvents.size()); + } + + public void testEventBusTopicActionIDValueFirst() { + EventBusAction action = new EventBusAction(); + action.putValue("ID", "FooAction"); + action.putValue(Action.ACTION_COMMAND_KEY, "BarAction"); + EventBus.subscribeStrongly("FooAction", new EventTopicSubscriber() { + public void onEvent(String topic, Object evt) { + subscribedEvents.add(evt); + } + }); + action.actionPerformed(new ActionEvent(this, 0, "FooAction")); + try { + Thread.sleep(500);//Calling hte EDT, need to slow this thread + } catch (InterruptedException e) { + } + assertEquals(1, subscribedEvents.size()); + } + + public void testEventBusTopicActionNameWorks() { + EventBusAction action = new EventBusAction(); + action.putValue(Action.NAME, "FooAction"); + EventBus.subscribeStrongly("FooAction", new EventTopicSubscriber() { + public void onEvent(String topic, Object evt) { + subscribedEvents.add(evt); + } + }); + action.actionPerformed(new ActionEvent(this, 0, "FooAction")); + try { + Thread.sleep(500);//Calling hte EDT, need to slow this thread + } catch (InterruptedException e) { + } + assertEquals(1, subscribedEvents.size()); + } + + public void testEventBusEventAction() { + EventBusAction action = new EventBusAction("FooAction", null) { + protected Object getEventServiceEvent(ActionEvent evt) { + return new MyEventServiceEvent(aSource, evt); + } + }; + EventBus.subscribe(MyEventServiceEvent.class, new EventSubscriber() { + public void onEvent(Object evt) { + assertEquals(((EventServiceEvent) evt).getSource(), aSource); + subscribedEvents.add(evt); + } + }); + action.setPublishesOnTopic(false); + action.actionPerformed(new ActionEvent(this, 0, "FooAction")); + try { + Thread.sleep(500);//Calling the EDT, need to slow this thread + } catch (InterruptedException e) { + } + assertEquals(1, subscribedEvents.size()); + } + + + public void testContainerEventAction() { + JFrame frame = new JFrame(); + JPanel panel = new JPanel(); + frame.setContentPane(panel); + ContainerEventServiceAction action = new ContainerEventServiceAction("FooAction", null); + JButton button = new JButton(action); + panel.add(button); + EventService es = ContainerEventServiceFinder.getEventService(button); + assertTrue(EventBus.getGlobalEventService() != es); + assertEquals(0, subscribedEvents.size()); + es.subscribe("FooAction", new EventTopicSubscriber() { + public void onEvent(String topic, Object evt) { + subscribedEvents.add(evt); + } + }); + button.doClick(); + try { + Thread.sleep(500);//Calling hte EDT, need to slow this thread + } catch (InterruptedException e) { + } + assertEquals(1, subscribedEvents.size()); + } + + public void testContainerEventActionException() { + ContainerEventServiceAction action = new ContainerEventServiceAction("FooAction", null); + try { + action.actionPerformed(new ActionEvent(this, 0, "Foo")); + fail("Throws exception when no event service"); + } catch (Throwable t) { + } + try { + action.actionPerformed(new ActionEvent(null, 0, "Foo")); + fail("Throws exception when no event service"); + } catch (Throwable t) { + } + action.setThrowsExceptionOnNullEventService(false); + action.actionPerformed(new ActionEvent(this, 0, "Foo")); + assertTrue("Set to not throw exception when no event service", true); + } + +} diff --git a/src/test/java/org/scijava/event/bushe/TestEventBus.java b/src/test/java/org/scijava/event/bushe/TestEventBus.java new file mode 100644 index 000000000..80f8cba2f --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventBus.java @@ -0,0 +1,570 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.lang.reflect.TypeVariable; +import java.awt.EventQueue; + +import javax.swing.JComponent; + +import junit.framework.TestCase; + +public class TestEventBus extends TestCase { + + private EventSubscriber eventSubscriber = null; + private EventTopicSubscriber eventTopicSubscriber; + private EBTestCounter testCounter = new EBTestCounter(); + + public TestEventBus(String name) { + super(name); + } + + protected void setUp() throws Exception { + EventBus.getGlobalEventService().clearAllSubscribers(); + } + + protected void tearDown() throws Exception { + } + + private EventServiceEvent createEvent() { + return new EventServiceEvent() { + public Object getSource() { + return ""; + } + }; + } + + private Class getEventClass() { + return createEvent().getClass(); + } + + private EventSubscriber createEventSubscriber(boolean throwException) { + SubscriberForTest test = new SubscriberForTest(testCounter, throwException); + return test; + } + + private EventTopicSubscriber createEventTopicSubscriber(boolean throwException) { + return new TopicSubscriberForTest(testCounter, throwException); + } + + private EventSubscriber getEventSubscriber() { + return getEventSubscriber(true); + } + + private EventSubscriber getEventSubscriber(boolean throwException) { + if (eventSubscriber == null) { + eventSubscriber = createEventSubscriber(throwException); + } + return eventSubscriber; + } + + public void testSubscribe() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = EventBus.subscribe(getEventClass(), subscriber); + assertTrue("testSubscribe(new subscriber)", actualReturn); + + actualReturn = EventBus.subscribe(getEventClass(), subscriber); + assertFalse("testSubscribe(duplicate subscriber)", actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + try { + actualReturn = EventBus.subscribe((Class) null, getEventSubscriber()); + fail("subscribeStrongly(null, x) should have thrown exception"); + } catch (Exception e) { + } + + try { + actualReturn = EventBus.subscribe(getEventClass(), null); + fail("subscribeStrongly(x, null) should have thrown exception"); + } catch (Exception e) { + } + + } + + public static class SwingThreadTestEventSubscriber implements EventSubscriber { + public boolean wasOnSwingThread; + + public void onEvent(Object event) { + wasOnSwingThread = EventQueue.isDispatchThread(); + } + } + + public void testSwingThreading() { + SwingThreadTestEventSubscriber sub = new SwingThreadTestEventSubscriber(); + EventBus.subscribe(Number.class, sub); + EventBus.publish(1); + EDTUtil.waitForEDT(); + assertTrue("Expected the EventBus to dispatch on the EDT", sub.wasOnSwingThread); + } + + public void testSubscribeWeakly() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = EventBus.subscribe(getEventClass(), subscriber); + assertTrue("testSubscribeWeakly(new subscriber)", actualReturn); + + actualReturn = EventBus.subscribe(getEventClass(), subscriber); + assertFalse("testSubscribe(duplicate subscriber)", actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + subscriber = null; + System.gc(); + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + try { + actualReturn = EventBus.subscribeStrongly((Class) null, getEventSubscriber()); + fail("subscribeStrongly(null, x) should have thrown exception"); + } catch (Exception e) { + } + + try { + actualReturn = EventBus.subscribeStrongly(getEventClass(), null); + fail("subscribeStrongly(x, null) should have thrown exception"); + } catch (Exception e) { + } + } + + public void testIllegalArgs() { + try { + EventBus.subscribeVetoListenerStrongly((Class) null, new VetoEventListenerForTest()); + fail(); + } catch (Throwable t) { + } + try { + EventBus.subscribeVetoListenerStrongly((String) null, new VetoTopicEventListenerForTest()); + fail(); + } catch (Throwable t) { + } + try { + EventBus.subscribeVetoListenerStrongly("foo", null); + fail(); + } catch (Throwable t) { + } + try { + EventBus.subscribeVetoListenerStrongly(getEventClass(), null); + fail(); + } catch (Throwable t) { + } + + + try { + EventBus.unsubscribeVetoListener((Class) null, new VetoEventListenerForTest()); + fail(); + } catch (Throwable t) { + } + try { + EventBus.unsubscribeVetoListener((String) null, new VetoTopicEventListenerForTest()); + fail(); + } catch (Throwable t) { + } + try { + EventBus.unsubscribeVetoListener("foo", null); + fail(); + } catch (Throwable t) { + } + try { + EventBus.unsubscribeVetoListener(getEventClass(), null); + fail(); + } catch (Throwable t) { + } + + } + + public void testVeto() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = EventBus.subscribe(getEventClass(), subscriber); + + VetoEventListener vetoListener = new VetoEventListenerForTest(); + actualReturn = EventBus.subscribeVetoListenerStrongly(getEventClass(), vetoListener); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + EventBus.unsubscribeVetoListener(getEventClass(), vetoListener); + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + + } + + public void testVetoException() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = EventBus.subscribe(getEventClass(), subscriber); + assertTrue(actualReturn); + VetoEventListener vetoListener = new VetoEventListenerForTest(true); + actualReturn = EventBus.subscribeVetoListenerStrongly(getEventClass(), vetoListener); + assertTrue(actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + EventBus.unsubscribeVetoListener(getEventClass(), vetoListener); + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 2, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + System.out.println("Prevent garbage collection of subscriber by sys'outing it at the end:"+subscriber); + } + + public void testVetoTopic() { + boolean actualReturn; + EventTopicSubscriber subscriber = createEventTopicSubscriber(false); + + actualReturn = EventBus.subscribeStrongly("FooTopic", subscriber); + + VetoTopicEventListener vetoListener = new VetoTopicEventListener() { + public boolean shouldVeto(String topic, Object data) { + return true; + } + }; + actualReturn = EventBus.subscribeVetoListenerStrongly("FooTopic", vetoListener); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish("FooTopic", "Bar"); + EDTUtil.waitForEDT(); + + //The test passes if 0 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + EventBus.unsubscribeVetoListener("FooTopic", vetoListener); + EventBus.publish("FooTopic", "Bar"); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + + public void testVetoWeak() { + boolean actualReturn; + EventSubscriber subscriber = createEventSubscriber(false); + + actualReturn = EventBus.subscribe(getEventClass(), subscriber); + + VetoEventListener vetoListener = new VetoEventListener() { + public boolean shouldVeto(Object evt) { + return true; + } + }; + actualReturn = EventBus.subscribeVetoListener(getEventClass(), vetoListener); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + vetoListener = null; + System.gc(); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + public void testVetoTopicWeak() { + boolean actualReturn; + EventTopicSubscriber subscriber = createEventTopicSubscriber(false); + + actualReturn = EventBus.subscribeStrongly("FooTopic", subscriber); + + VetoTopicEventListener vetoListener = new VetoTopicEventListener() { + public boolean shouldVeto(String topic, Object data) { + return true; + } + }; + actualReturn = EventBus.subscribeVetoListener("FooTopic", vetoListener); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish("FooTopic", "Bar"); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + vetoListener = null; + System.gc(); + EventBus.publish("FooTopic", "Bar"); + EDTUtil.waitForEDT(); + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); + assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + + public void testUnsubscribe() { + EventBus.subscribe(getEventClass(), getEventSubscriber(false)); + + boolean actualReturn; + + try { + actualReturn = EventBus.unsubscribe((Class) null, getEventSubscriber()); + fail("unsubscribe(null, x) should have thrown exception"); + } catch (Exception e) { + } + + try { + actualReturn = EventBus.unsubscribe(getEventClass(), null); + fail("unsubscribe(x, null) should have thrown exception"); + } catch (Exception e) { + } + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + actualReturn = EventBus.unsubscribe(getEventClass(), getEventSubscriber()); + assertTrue("return value", actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + public void testUnsubscribeTopic() { + EventTopicSubscriber eventTopicSubscriber = createEventTopicSubscriber(false); + EventBus.subscribeStrongly("FooTopic", eventTopicSubscriber); + + boolean actualReturn; + + try { + actualReturn = EventBus.unsubscribe((String) null, eventTopicSubscriber); + fail("unsubscribe(null, x) should have thrown exception"); + } catch (Exception e) { + } + + try { + actualReturn = EventBus.unsubscribe("FooTopic", null); + fail("unsubscribe(x, null) should have thrown exception"); + } catch (Exception e) { + } + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish("FooTopic", "Foo"); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + actualReturn = EventBus.unsubscribe("FooTopic", eventTopicSubscriber); + assertTrue("return value", actualReturn); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish("FooTopic", "Foo"); + EDTUtil.waitForEDT(); + + //The test passes if 1 subscribers completed and 0 subscribers threw exception. + assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + /** + * Test that the publish method works and that exceptions thrown in event subscribers don't halt publishing. In the + * test 2 subscribers are good and 2 subscribers throw exceptions. + */ + public void testPublish() { + try { + EventBus.publish(null); + EDTUtil.waitForEDT(); + fail("publish(null) should have thrown exception"); + } catch (Exception e) { + } + + try { + EventBus.publish((String) null, createEvent()); + EDTUtil.waitForEDT(); + fail("publish(null, x) should have thrown exception"); + } catch (Exception e) { + } + + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + assertEquals("testPublish(completed)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + EventBus.publish("Foo", "Bar"); + EDTUtil.waitForEDT(); + assertEquals("testPublish(completed)", 0, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + + EventBus.subscribe(getEventClass(), createEventSubscriber(true)); + EventBus.subscribe(getEventClass(), createEventSubscriber(false)); + EventBus.subscribe(getEventClass(), createEventSubscriber(true)); + EventBus.subscribe(getEventClass(), createEventSubscriber(false)); + + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + + //The test passes if 2 subscribers completed and 2 subscribers threw exception. + assertEquals("testPublish(completed)", 4, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 2, testCounter.subscribeExceptionCount); + + EventSubscriber eventSubscriber = createEventSubscriber(false); + EventBus.subscribe(ObjectEvent.class, eventSubscriber); + testCounter.eventsHandledCount = 0; + testCounter.subscribeExceptionCount = 0; + ObjectEvent evt = new ObjectEvent("Foo", "Bar"); + assertEquals(evt.getEventObject(), "Bar"); + EventBus.publish(evt); + EDTUtil.waitForEDT(); + assertEquals("testPublish(completed)", 1, testCounter.eventsHandledCount); + assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); + } + + /** + * This tests whether the EventBus has a static method for each EventService method + */ + public void testNumOfMethods() { + Method[] esMethods = EventService.class.getMethods(); + Method[] ebMethods = EventBus.class.getMethods(); + //Are all the es methods in the eb? + for (int i = 0; i < esMethods.length; i++) { + Method esMethod = esMethods[i]; + boolean foundMatch = false; + nextMethod: + for (int j = 0; j < ebMethods.length; j++) { + Method ebMethod = ebMethods[j]; + if (esMethod.getName().equals(ebMethod.getName())) { + TypeVariable[] esTypes = esMethod.getTypeParameters(); + TypeVariable[] ebTypes = ebMethod.getTypeParameters(); + if (esTypes.length != ebTypes.length) { + break; + } + for (int typeCount = 0; typeCount < ebTypes.length; typeCount++) { + TypeVariable esType = esTypes[typeCount]; + TypeVariable ebType = ebTypes[typeCount]; + if (!(ebType+"").equals((""+esType))) { + continue nextMethod; + } + } + Class[] esParams = esMethod.getParameterTypes(); + Class[] ebParams = ebMethod.getParameterTypes(); + if (esParams.length != ebParams.length) { + continue nextMethod; + } + for (int typeCount = 0; typeCount < ebParams.length; typeCount++) { + Class esType = esParams[typeCount]; + Class ebType = ebParams[typeCount]; + if (!ebType.equals(esType)) { + continue nextMethod; + } + } + foundMatch = true; + } + } + if (!foundMatch) { + System.out.println("No match for es method:" + esMethod.getName() + ", " + esMethod +", i="+i); + } + assertTrue(foundMatch); + } + + //Are all the eb methods static? + ebMethods = EventBus.class.getDeclaredMethods(); + for (int i = 0; i < ebMethods.length; i++) { + Method ebMethod = ebMethods[i]; + int modifiers = ebMethod.getModifiers(); + boolean isStatic = Modifier.isStatic(modifiers); + if (!isStatic) { + System.out.println("EventBus has a non-static method:" + ebMethod); + } + assertTrue(isStatic); + } + } + + //Really a compilation test + public void testGeneric() { + EventBus.subscribe(String.class, new EventSubscriber() { + public void onEvent(JComponent event) { + } + }); + EventBus.subscribe("foo", new EventTopicSubscriber() { + public void onEvent(String topic, JComponent data) { + } + }); + } +} diff --git a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java new file mode 100644 index 000000000..c0b839a4a --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java @@ -0,0 +1,32 @@ +package org.scijava.event.bushe; + +import javax.swing.JComponent; + +import junit.framework.TestCase; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestEventBusServiceClass extends TestCase { + + public TestEventBusServiceClass(String name) { + super(name); + } + + protected void setUp() throws Exception { + System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, BadEventService.class.getName()); + } + + protected void tearDown() throws Exception { + } + + public void testConfigurableEventService() { + try { + EventBus.subscribe("foo", new EventTopicSubscriber() { + public void onEvent(String topic, Object data) { + } + }); + fail("Expected runtime exception since the plugged in EventService is a bad one."); + } catch (Throwable ex) { + System.out.println("Got ex"); + } + } +} diff --git a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java new file mode 100644 index 000000000..a89ec9765 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java @@ -0,0 +1,30 @@ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestEventBusServiceClassBadType extends TestCase { + + public TestEventBusServiceClassBadType(String name) { + super(name); + } + + protected void setUp() throws Exception { + System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, EventServiceLocator.class.getName()); + } + + protected void tearDown() throws Exception { + } + + public void testConfigurableEventService() { + try { + EventBus.subscribe("foo", new EventTopicSubscriber() { + public void onEvent(String topic, Object data) { + } + }); + fail("Expected runtime exception since the plugged in EventService is a bad one."); + } catch (Throwable ex) { + System.out.println("Got ex"); + } + } +} diff --git a/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java b/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java new file mode 100644 index 000000000..791f558d7 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java @@ -0,0 +1,107 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestEventBusTiming extends EventServiceLocatorTestCase { + + private EventSubscriber eventSubscriber = null; + private EventTopicSubscriber eventTopicSubscriber; + private SubscriberTimingEvent timing; + private EBTestCounter testCounter = new EBTestCounter(); + + public TestEventBusTiming(String name) { + super(name); + } + + private EventServiceEvent createEvent() { + return new EventServiceEvent() { + public Object getSource() { + return ""; + } + }; + } + + private Class getEventClass() { + return createEvent().getClass(); + } + + private EventSubscriber createEventSubscriber(boolean throwException) { + return new SubscriberForTest(testCounter, throwException); + } + + private EventTopicSubscriber createEventTopicSubscriber(boolean throwException) { + return new TopicSubscriberForTest(testCounter, throwException); + } + + private EventSubscriber createEventSubscriber(Long waitTime) { + return new SubscriberForTest(testCounter, waitTime); + } + + private EventSubscriber getEventSubscriber() { + return getEventSubscriber(true); + } + + private EventSubscriber getEventSubscriber(boolean throwException) { + if (eventSubscriber == null) { + eventSubscriber = createEventSubscriber(throwException); + } + return eventSubscriber; + } + + private EventTopicSubscriber getEventTopicSubscriber() { + if (eventTopicSubscriber == null) { + eventTopicSubscriber = createEventTopicSubscriber(false); + } + return eventTopicSubscriber; + } + + public void thisOnlyWorksSometimesNow_testTimeHandling() { + EventBus.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); + final Boolean[] wasCalled = new Boolean[1]; + EventBus.subscribe(SubscriberTimingEvent.class, new EventSubscriber() { + public void onEvent(Object evt) { + wasCalled[0] = Boolean.TRUE; + } + }); + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + assertTrue(wasCalled[0] == null); + EventBus.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); + final Boolean[] wasCalled2 = new Boolean[1]; + EventBus.subscribe(SubscriberTimingEvent.class, new EventSubscriber() { + public void onEvent(Object evt) { + wasCalled2[0] = Boolean.TRUE; + timing = (SubscriberTimingEvent) evt; + } + }); + EventBus.publish(createEvent()); + EDTUtil.waitForEDT(); + assertTrue(wasCalled2[0] == Boolean.TRUE); + assertNotNull(timing.getSource()); + assertNotNull(timing.getEnd()); + assertNotNull(timing.getEvent()); + assertNotNull(timing.getSubscriber()); + assertNotNull(timing.getStart()); + assertNotNull(timing.getTimeLimitMilliseconds()); + assertFalse(timing.isEventHandlingExceeded()); + assertFalse(timing.isVetoExceeded()); + assertNull(timing.getVetoEventListener()); + } + +} diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator.java new file mode 100644 index 000000000..8b00962cf --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator.java @@ -0,0 +1,50 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +public class TestEventServiceLocator extends EventServiceLocatorTestCase { + + public TestEventServiceLocator(String name) { + super(name); + } + + public void testDefaultEventBusService() { + EventService ebs = EventServiceLocator.getEventBusService(); + assertTrue(ebs instanceof SwingEventService); + EventService ses = EventServiceLocator.getSwingEventService(); + assertTrue(ses == ebs); + } + public void testDefaultEventBusService2() { + EventService ses = EventServiceLocator.getSwingEventService(); + assertTrue(ses instanceof SwingEventService); + EventService ebs = EventServiceLocator.getEventBusService(); + assertTrue(ses == ebs); + } + public void testNamedEventBusService1() { + EventService ses = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); + assertTrue(ses instanceof SwingEventService); + EventService ebs = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); + assertTrue(ses == ebs); + } + public void testNamedEventBusService2() { + EventService ebs = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); + assertTrue(ebs instanceof SwingEventService); + EventService ses = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); + assertTrue(ses == ebs); + } +} diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator2.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator2.java new file mode 100644 index 000000000..138ec277a --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator2.java @@ -0,0 +1,46 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestEventServiceLocator2 extends EventServiceLocatorTestCase { + + public TestEventServiceLocator2(String name) { + super(name); + } + + public void testSetEventBusService() { + EventService ebs = new ThreadSafeEventService(); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); + } catch (EventServiceExistsException e) { + fail("It doesn't exist yet"); + } + EventService eb = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); + assertTrue(eb instanceof ThreadSafeEventService); + assertTrue(eb == ebs); + EventService ses = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); + assertTrue(ses != ebs); + assertTrue(ses instanceof SwingEventService); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); + fail("It already exist yet"); + } catch (EventServiceExistsException e) { + } + } +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator3.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator3.java new file mode 100644 index 000000000..1cd9c4964 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator3.java @@ -0,0 +1,44 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +public class TestEventServiceLocator3 extends EventServiceLocatorTestCase { + public TestEventServiceLocator3(String name) { + super(name); + } + + public void testSetEventBusService() { + EventService ebs = new SwingEventService(); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ebs); + } catch (EventServiceExistsException e) { + fail("It doesn't exist yet"); + } + EventService eb = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); + assertTrue(eb instanceof ThreadSafeEventService); + assertTrue(eb == ebs); + EventService ses = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); + assertTrue(ses == ebs); + assertTrue(ses instanceof ThreadSafeEventService); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ebs); + fail("It already exist yet"); + } catch (EventServiceExistsException e) { + } + } +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator4.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator4.java new file mode 100644 index 000000000..99106419a --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator4.java @@ -0,0 +1,44 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +public class TestEventServiceLocator4 extends EventServiceLocatorTestCase { + + public TestEventServiceLocator4(String name) { + super(name); + } + + public void testSetEventBusService() { + EventService ebs = new ThreadSafeEventService(); + EventService ses = new SwingEventService(); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); + } catch (EventServiceExistsException e) { + fail("It doesn't exist yet"); + } + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ses); + } catch (EventServiceExistsException e) { + fail("It doesn't exist yet"); + } + EventService eb = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); + EventService se = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); + assertTrue(eb == ebs); + assertTrue(se == ses); + } +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator5.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator5.java new file mode 100644 index 000000000..421d0bc70 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator5.java @@ -0,0 +1,43 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +public class TestEventServiceLocator5 extends EventServiceLocatorTestCase { + public TestEventServiceLocator5(String name) { + super(name); + } + + public void testSetEventBusService() { + EventService ebs = new ThreadSafeEventService(); + EventService ses = new SwingEventService(); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ses); + } catch (EventServiceExistsException e) { + fail("It doesn't exist yet"); + } + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); + } catch (EventServiceExistsException e) { + fail("It doesn't exist yet"); + } + EventService se = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); + EventService eb = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); + assertTrue(eb == ebs); + assertTrue(se == ses); + } +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator6.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator6.java new file mode 100644 index 000000000..8e035348b --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator6.java @@ -0,0 +1,44 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +public class TestEventServiceLocator6 extends EventServiceLocatorTestCase { + + public TestEventServiceLocator6(String name) { + super(name); + } + + public void testSetEventBusService() { + EventService ebs = new ThreadSafeEventService(); + EventService ses = new SwingEventService(); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ses); + } catch (EventServiceExistsException e) { + fail("It doesn't exist yet"); + } + EventService eb = EventServiceLocator.getEventBusService(); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); + fail("It exists"); + } catch (EventServiceExistsException e) { + } + EventService se = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); + assertTrue(se == ses); + assertTrue(eb == ses); + } +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator7.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator7.java new file mode 100644 index 000000000..c345bf74d --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator7.java @@ -0,0 +1,49 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +public class TestEventServiceLocator7 extends EventServiceLocatorTestCase { + + public TestEventServiceLocator7(String name) { + super(name); + } + + public void testSetEventBusService() { + EventService ebs = new ThreadSafeEventService(); + EventService ses = new SwingEventService(); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); + } catch (EventServiceExistsException e) { + fail("It doesn't exist yet"); + } + EventService se = EventServiceLocator.getSwingEventService(); + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); + fail("It exists"); + } catch (EventServiceExistsException e) { + } + try { + EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ebs); + fail("It exists"); + } catch (EventServiceExistsException e) { + } + EventService eb = EventServiceLocator.getEventBusService(); + assertTrue(eb == ebs); + assertTrue(se != eb); + } +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration.java new file mode 100644 index 000000000..c7acd90b1 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration.java @@ -0,0 +1,28 @@ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestEventServiceLocatorConfiguration extends EventServiceLocatorTestCase { + + public static class ES1 extends ThreadSafeEventService { + + } + + public static class ES2 extends ThreadSafeEventService { + + } + + public TestEventServiceLocatorConfiguration(String name) { + super(name); + } + + public void testConfigurableEventService() { + System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, ES1.class.getName()); + System.setProperty(EventServiceLocator.EVENT_BUS_CLASS, ES2.class.getName()); + EventService es = EventServiceLocator.getSwingEventService(); + assertTrue(es instanceof ES1); + es = EventServiceLocator.getEventBusService(); + assertTrue(es instanceof ES2); + } +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration2.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration2.java new file mode 100644 index 000000000..aa4548b50 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration2.java @@ -0,0 +1,28 @@ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestEventServiceLocatorConfiguration2 extends EventServiceLocatorTestCase { + + public static class ES1 extends ThreadSafeEventService { + + } + + public static class ES2 extends ThreadSafeEventService { + + } + + public TestEventServiceLocatorConfiguration2(String name) { + super(name); + } + + public void testConfigurableEventService1() { + System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, ES1.class.getName()); + EventService es = EventServiceLocator.getEventBusService(); + assertTrue(es instanceof ThreadSafeEventService); + es = EventServiceLocator.getSwingEventService(); + assertTrue(es instanceof ES1); + } + +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration3.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration3.java new file mode 100644 index 000000000..b79e1eb24 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration3.java @@ -0,0 +1,28 @@ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestEventServiceLocatorConfiguration3 extends EventServiceLocatorTestCase { + + public static class ES1 extends ThreadSafeEventService { + + } + + public static class ES2 extends ThreadSafeEventService { + + } + + public TestEventServiceLocatorConfiguration3(String name) { + super(name); + } + + public void testConfigurableEventService3() { + System.setProperty(EventServiceLocator.EVENT_BUS_CLASS, ES2.class.getName()); + EventService es = EventServiceLocator.getEventBusService(); + assertTrue(es instanceof ES2); + es = EventServiceLocator.getSwingEventService(); + assertTrue(es instanceof SwingEventService); + } + +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration4.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration4.java new file mode 100644 index 000000000..0b5ba3ca8 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration4.java @@ -0,0 +1,27 @@ +package org.scijava.event.bushe; + +import junit.framework.TestCase; + +/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ +public class TestEventServiceLocatorConfiguration4 extends EventServiceLocatorTestCase { + + public static class ES1 extends ThreadSafeEventService { + + } + + public static class ES2 extends ThreadSafeEventService { + + } + + public TestEventServiceLocatorConfiguration4(String name) { + super(name); + } + + public void testConfigurableEventService4() { + System.setProperty(EventServiceLocator.EVENT_BUS_CLASS, ES2.class.getName()); + EventService es = EventServiceLocator.getSwingEventService(); + assertTrue(es instanceof SwingEventService); + es = EventServiceLocator.getEventBusService(); + assertTrue(es instanceof ES2); + } +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestPerformance.java b/src/test/java/org/scijava/event/bushe/TestPerformance.java new file mode 100644 index 000000000..a936200ee --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestPerformance.java @@ -0,0 +1,75 @@ +package org.scijava.event.bushe; + +import junit.framework.TestCase; +import junit.framework.Assert; + +import javax.swing.*; +import java.awt.*; +import java.awt.List; +import java.util.*; + +/** + * For proving performance. + */ +public class TestPerformance extends TestCase { + private EventSubscriber doNothingSubscriber = new EventSubscriber() { + public void onEvent(Object event) { + } + }; + + private EventTopicSubscriber doNothingTopicSubscriber = new EventTopicSubscriber() { + public void onEvent(String topic, Object payload) { + } + }; + + public void testClassPerformance() { + ThreadSafeEventService eventService = new ThreadSafeEventService(); + Class[] classes = {Color.class, String.class, JTextField.class, List.class, JButton.class, + Boolean.class, Integer.class, Boolean.class, Set.class, Date.class}; + Object[] payloads = {Color.BLUE, "foo", new JTextField(), new ArrayList(), new JButton(), + Boolean.TRUE, 35, 36L, new HashSet(), new Date()}; + for (Class aClass : classes) { + eventService.subscribe(aClass, doNothingSubscriber); + } + + long start = System.currentTimeMillis(); + int count = 100000; + for (int i=0; i < count; i++) { + for (Object payload : payloads) { + eventService.publish(payload); + } + } + long end = System.currentTimeMillis(); + long duration = (end - start)/1000; + int numPubs = count * payloads.length; + System.out.println("Time for "+ numPubs +" publications with subscribers to "+classes.length + +" different classes subscribed to was "+ duration +" s. Average:"+((double)duration/(double)numPubs)); + Assert.assertTrue("Things are slowing down, "+numPubs+" class publications used to take 3.3 seconds, it now takes " +duration, duration < 7); + } + + public void testStringPerformance() { + ThreadSafeEventService eventService = new ThreadSafeEventService(); + String[] strings = {"Color", "String", "JTextField", "List", "JButton", + "Boolean", "Integer", "Boolean", "Set", "Date"}; + Object[] payloads = {Color.BLUE, "foo", new JTextField(), new ArrayList(), new JButton(), + Boolean.TRUE, 35, 36L, new HashSet(), new Date()}; + for (String aString : strings) { + eventService.subscribe(aString, doNothingTopicSubscriber); + } + + long start = System.currentTimeMillis(); + int count = 100000; + for (int i=0; i < count; i++) { + for (int j=0; j < strings.length; j++) { + eventService.publish(strings[j], payloads[j]); + } + } + long end = System.currentTimeMillis(); + long duration = (end - start)/1000; + int numPubs = count * payloads.length; + System.out.println("Time for "+ numPubs +" topic publications with topic subscribers to "+ strings.length + +" different strings subscribed to was "+ duration +" s. Average:"+((double)duration/(double)numPubs)); + Assert.assertTrue("Things are slowing down, "+numPubs+" string publications used to take 1.3 seconds, it now takes "+duration, duration < 4); + } + +} diff --git a/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java b/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java new file mode 100644 index 000000000..9f44264f0 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java @@ -0,0 +1,593 @@ +package org.scijava.event.bushe; + +import java.util.List; +import java.util.ArrayList; +import java.util.Random; +import java.util.Collections; +import java.util.Arrays; +import java.util.regex.Pattern; + +import java.awt.Color; + +import junit.framework.TestCase; + +import org.scijava.event.bushe.annotation.AnnotationProcessor; + +/** + * Tests the Prioritized interface va. normal FIFO order. + */ +public class TestPrioritizedSubscribers extends TestCase { + private ThreadSafeEventService eventService = null; + private static final String EVENT_SERVICE_TEST_PRIORITY_ANNOTATION = "testPriorityAnnotation"; + + + /** + * Base class that adds itself to the list it's given when told. Nice for annotation subscribers. + */ + class OrderRecorder { + private List listToRecordTo; + + public OrderRecorder(List listToRecordTo) { + this.listToRecordTo = listToRecordTo; + } + + public void record() { + listToRecordTo.add(this); + } + } + + /** + * A subscriber that adds itself to a supplied list so that the order of calls is recorded. + */ + class OrderRecorderSubscriber extends OrderRecorder implements EventSubscriber { + + OrderRecorderSubscriber(List listToRecordTo) { + super(listToRecordTo); + } + + public void onEvent(Object event) { + record(); + } + } + + /** + * Ditto, for topics + */ + class OrderRecorderTopicSubscriber extends OrderRecorder implements EventTopicSubscriber { + + OrderRecorderTopicSubscriber(List listToRecordTo) { + super(listToRecordTo); + } + + public void onEvent(String topic, Object event) { + record(); + } + } + + class PrioritizedOrderRecorderSubscriber extends OrderRecorderSubscriber implements Prioritized { + private int priority; + + public PrioritizedOrderRecorderSubscriber(int priority, List listToRecordTo) { + super(listToRecordTo); + this.priority = priority; + } + + public int getPriority() { + return priority; + } + } + + class PrioritizedOrderRecorderTopicSubscriber extends OrderRecorderTopicSubscriber implements Prioritized { + private int priority; + + public PrioritizedOrderRecorderTopicSubscriber(int priority, List listToRecordTo) { + super(listToRecordTo); + this.priority = priority; + } + + public int getPriority() { + return priority; + } + } + + public TestPrioritizedSubscribers(String name) { + super(name); + } + + protected void setUp() throws Exception { + eventService = new ThreadSafeEventService(null, false); + EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, null); + } + + protected void tearDown() throws Exception { + eventService = null; + } + + public void testNormalFIFO() { + List calledOrder = new ArrayList(); + List originalOrder = new ArrayList(); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + //mixing an inner class into the test + EventSubscriber inner = new EventSubscriber() { + public void onEvent(Object event) { + } + }; + //originalOrder.add(inner); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + //add them all + for (EventSubscriber eventSubscriber : originalOrder) { + eventService.subscribe(Color.class, eventSubscriber); + } + eventService.publish(Color.BLUE); + assertEquals(originalOrder, calledOrder); + System.out.println("inner sout to avoid garbage collection" + inner); + } + + public void testNoPrioritizedWithZeroPrioritized() { + List calledOrder = new ArrayList(); + List originalOrder = new ArrayList(); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + originalOrder.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + originalOrder.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + //mixing an inner class into the test + PrioritizedEventSubscriber inner = new PrioritizedEventSubscriber() { + public void onEvent(Object event) { + } + + public int getPriority() { + return 0; + } + }; + //originalOrder.add(inner); + originalOrder.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); + originalOrder.add(new OrderRecorderSubscriber(calledOrder)); + //add them all + for (EventSubscriber eventSubscriber : originalOrder) { + eventService.subscribe(Color.class, eventSubscriber); + } + eventService.publish(Color.BLUE); + assertEquals(originalOrder, calledOrder); + System.out.println("inner sout to avoid garbage collection" + inner); + } + + public void testOnlyPrioritized() { + List calledOrder = new ArrayList(); + List originalOrder = new ArrayList(); + for (int i = 0; i < 100; i++) { + Random random = new Random(); + originalOrder.add(new PrioritizedOrderRecorderSubscriber(random.nextInt(10000) - 5000, calledOrder)); + } + for (EventSubscriber eventSubscriber : originalOrder) { + eventService.subscribe(Color.class, eventSubscriber); + } + eventService.publish(Color.BLUE); + int lastPriority = -5001; + for (EventSubscriber eventSubscriber : calledOrder) { + int priority = ((PrioritizedOrderRecorderSubscriber) eventSubscriber).getPriority(); + assertTrue(priority >= lastPriority); + lastPriority = priority; + } + } + + public void testMixedOfPrioritizedNonPrioritizedAndPrioritized0() { + Random rand = new Random(); + List calledOrder = new ArrayList(); + List prioritized = new ArrayList(); + //100 negative + for (int i = 0; i < 100; i++) { + Random random = new Random(); + prioritized.add(new PrioritizedOrderRecorderSubscriber(random.nextInt(10000) * -1, calledOrder)); + } + //100 positive + for (int i = 0; i < 100; i++) { + Random random = new Random(); + prioritized.add(new PrioritizedOrderRecorderSubscriber(random.nextInt(10000), calledOrder)); + } + Collections.shuffle(prioritized); + //100 fifo + List fifo = new ArrayList(); + for (int i = 0; i < 100; i++) { + if (rand.nextBoolean()) { + fifo.add(new OrderRecorderSubscriber(calledOrder)); + } else { + fifo.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); + } + } + List prioritizedCopy = new ArrayList(prioritized); + List fifoCopy = new ArrayList(fifo); + //Subscribe all, randomizing a fifo or prioritized + EventSubscriber eventSubscriber; + int subscribeCount = 0; + int prioritizedSubscribeCount = 0; + int nonPrioritizedSubscribeCount = 0; + for (int i = 0; i < 300; i++) { + if (prioritizedCopy.isEmpty()) { + eventSubscriber = fifoCopy.remove(0); + nonPrioritizedSubscribeCount++; + } else if (fifoCopy.isEmpty()) { + eventSubscriber = prioritizedCopy.remove(0); + prioritizedSubscribeCount++; + } else { + if (rand.nextBoolean()) { + eventSubscriber = fifoCopy.remove(0); + nonPrioritizedSubscribeCount++; + } else { + eventSubscriber = prioritizedCopy.remove(0); + prioritizedSubscribeCount++; + } + } + subscribeCount++; + boolean success = eventService.subscribe(Color.class, eventSubscriber); + assertFalse(!success); + } + + List subscribersToColor = eventService.getSubscribers(Color.class); + assertEquals(300, subscribersToColor.size()); + assertEquals(100, nonPrioritizedSubscribeCount); + assertEquals(200, prioritizedSubscribeCount); + assertEquals(300, subscribeCount); + eventService.publish(Color.BLUE); + assertEquals(300, calledOrder.size()); + int lastPriority = -10001; + for (int i = 0; i < 99; i++) { + EventSubscriber subscriber = calledOrder.get(i); + assertTrue(subscriber instanceof PrioritizedOrderRecorderSubscriber); + PrioritizedOrderRecorderSubscriber prioritizedOrderRecorderSubscriber = (PrioritizedOrderRecorderSubscriber) subscriber; + int priority = prioritizedOrderRecorderSubscriber.getPriority(); + assertTrue(priority < 0); + assertTrue(priority >= lastPriority); + lastPriority = priority; + } + for (int i = 100; i < 199; i++) { + EventSubscriber subscriber = calledOrder.get(i); + assertTrue(subscriber instanceof OrderRecorderSubscriber); + if (subscriber instanceof PrioritizedOrderRecorderSubscriber) { + PrioritizedOrderRecorderSubscriber prioritizedOrderRecorderSubscriber = (PrioritizedOrderRecorderSubscriber) subscriber; + int priority = prioritizedOrderRecorderSubscriber.getPriority(); + assertTrue(priority == 0); + } + assertEquals(subscriber, fifo.get(i - 100)); + } + lastPriority = 0; + for (int i = 200; i < 299; i++) { + EventSubscriber subscriber = calledOrder.get(i); + assertTrue(subscriber instanceof PrioritizedOrderRecorderSubscriber); + PrioritizedOrderRecorderSubscriber prioritizedOrderRecorderSubscriber = (PrioritizedOrderRecorderSubscriber) subscriber; + int priority = prioritizedOrderRecorderSubscriber.getPriority(); + assertTrue(priority > 0); + assertTrue(priority >= lastPriority); + lastPriority = priority; + } + System.out.println(prioritized.size()); + System.out.println(fifo.size()); + } + + public void testPriorityAnnotation() throws EventServiceExistsException { + EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, eventService); + List calledOrder = new ArrayList(); + OrderRecorder sn100 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + public void annotateMe(Object foo) { + record(); + } + }; + OrderRecorder sn50 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + public void annotateMe(Object foo) { + record(); + } + }; + PrioritizedOrderRecorderSubscriber spn30 = new PrioritizedOrderRecorderSubscriber(-30, calledOrder); + OrderRecorderSubscriber so_1 = new OrderRecorderSubscriber(calledOrder); + OrderRecorder s100 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) + public void annotateMe(Object foo) { + record(); + } + }; + OrderRecorder sn10 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) + public void annotateMe(Object foo) { + record(); + } + }; + OrderRecorder s0_2 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) + public void annotateMe(Object foo) { + record(); + } + }; + OrderRecorder s0_3 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + public void annotateMe(Object foo) { + record(); + } + }; + OrderRecorder s50 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) + public void annotateMe(Object foo) { + record(); + } + }; + OrderRecorder s0_4 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + public void annotateMe(Object foo) { + record(); + } + }; + OrderRecorder s10 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) + public void annotateMe(Object foo) { + record(); + } + }; + OrderRecorder s0_5 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + public void annotateMe(Object foo) { + record(); + } + }; + Object[] toAdd = {sn100, s100, so_1, spn30, s0_2, s50, s0_3, sn10, sn50, s0_4, s10, s0_5}; + List expectedResult = Arrays.asList(sn100, sn50, spn30, sn10, so_1, s0_2, s0_3, s0_4, s0_5, s10, s50, s100); + for (Object o : toAdd) { + if (o instanceof EventSubscriber) { + eventService.subscribe(Color.class, (EventSubscriber) o); + } else { + AnnotationProcessor.process(o); + } + } + eventService.publish(Color.BLUE); + assertEquals(expectedResult, calledOrder); + } + + /** + * With more than one subscriber to the EventBus by class, if any of the + * subscribers are Prioritized with a negative priority, then no FIFO subscribers + * are notified. + *

      + * This holds for non-Prioritized FIFO subscribers, and Prioritized subscribers + * with Priority of 0. + */ + public void testIssue26OneNegOthersNormal() { + final List calledOrder = new ArrayList(); + //non-Prioritized FIFO subscribers + EventSubscriber sub1 = new EventSubscriber() { + public void onEvent(Object event) { + calledOrder.add(1); + } + }; + EventSubscriber sub0 = new PrioritizedEventSubscriber() { + public void onEvent(Object event) { + calledOrder.add(-1); + } + public int getPriority() { + return -1; + } + }; + EventSubscriber sub2 = new EventSubscriber() { + public void onEvent(Object event) { + calledOrder.add(2); + } + }; + + eventService.subscribe(Color.class, sub1); + eventService.subscribe(Color.class, sub0); + eventService.subscribe(Color.class, sub2); + eventService.publish(Color.BLUE); + assertEquals(calledOrder.get(0).intValue(), -1); + assertEquals(calledOrder.get(1).intValue(), 1); + assertEquals(calledOrder.get(2).intValue(), 2); + System.out.println("to avoid garbage collection:"+sub1+sub2+sub0); + } + + /** + * With more than one subscriber to the EventBus by class, if any of the + * subscribers are Prioritized with a negative priority, then no FIFO subscribers + * are notified. + *

      + * This holds for non-Prioritized FIFO subscribers, and Prioritized subscribers + * with Priority of 0. + */ + public void testOnePosOthersNormal() { + final List calledOrder = new ArrayList(); + //non-Prioritized FIFO subscribers + EventSubscriber sub1 = new EventSubscriber() { + public void onEvent(Object event) { + calledOrder.add(1); + } + }; + EventSubscriber sub0 = new PrioritizedEventSubscriber() { + public void onEvent(Object event) { + calledOrder.add(11); + } + public int getPriority() { + return 11; + } + }; + EventSubscriber sub2 = new EventSubscriber() { + public void onEvent(Object event) { + calledOrder.add(2); + } + }; + + eventService.subscribe(Color.class, sub1); + eventService.subscribe(Color.class, sub0); + eventService.subscribe(Color.class, sub2); + eventService.publish(Color.BLUE); + assertEquals(1, calledOrder.get(0).intValue()); + assertEquals(2, calledOrder.get(1).intValue()); + assertEquals(11, calledOrder.get(2).intValue()); + System.out.println("to avoid garbage collection:"+sub1+sub2+sub0); + } + + /** + * shameless copy and paste test, only the subscriber type was changed + */ + public void testPriorityTopicAnnotation() throws EventServiceExistsException { + EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, eventService); + List calledOrder = new ArrayList(); + OrderRecorder sn100 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder sn50 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + PrioritizedOrderRecorderTopicSubscriber spn30 = new PrioritizedOrderRecorderTopicSubscriber(-30, calledOrder); + OrderRecorderTopicSubscriber so_1 = new OrderRecorderTopicSubscriber(calledOrder); + OrderRecorder s100 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder sn10 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s0_2 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s0_3 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s50 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s0_4 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s10 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s0_5 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + Object[] toAdd = {sn100, s100, so_1, spn30, s0_2, s50, s0_3, sn10, sn50, s0_4, s10, s0_5}; + List expectedResult = Arrays.asList(sn100, sn50, spn30, sn10, so_1, s0_2, s0_3, s0_4, s0_5, s10, s50, s100); + for (Object o : toAdd) { + if (o instanceof EventTopicSubscriber) { + eventService.subscribe("Color", (EventTopicSubscriber) o); + } else { + AnnotationProcessor.process(o); + } + } + eventService.publish("Color", Color.BLUE); + assertEquals(expectedResult, calledOrder); + } + + + /** + * Another shameless copy and paste test, only the subscriber type was changed + */ + public void testPriorityTopicPatternAnnotation() throws EventServiceExistsException { + EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, eventService); + List calledOrder = new ArrayList(); + OrderRecorder sn100 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder sn50 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -50) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + PrioritizedOrderRecorderTopicSubscriber spn30 = new PrioritizedOrderRecorderTopicSubscriber(-30, calledOrder); + OrderRecorderTopicSubscriber so_1 = new OrderRecorderTopicSubscriber(calledOrder); + OrderRecorder s100 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder sn10 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s0_2 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s0_3 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s50 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s0_4 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s10 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + OrderRecorder s0_5 = new OrderRecorder(calledOrder) { + @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + public void annotateMe(String topic, Object foo) { + record(); + } + }; + Object[] toAdd = {sn100, s100, so_1, spn30, s0_2, s50, s0_3, sn10, sn50, s0_4, s10, s0_5}; + List expectedResult = Arrays.asList(sn100, sn50, spn30, sn10, so_1, s0_2, s0_3, s0_4, s0_5, s10, s50, s100); + for (Object o : toAdd) { + if (o instanceof OrderRecorderTopicSubscriber) { + Pattern pattern = Pattern.compile("Col[a-z]+"); + eventService.subscribe(pattern, (EventTopicSubscriber) o); + } else { + AnnotationProcessor.process(o); + } + } + eventService.publish("Color", Color.BLUE); + assertEquals(expectedResult, calledOrder); + } +} diff --git a/src/test/java/org/scijava/event/bushe/TestPublicationStates.java b/src/test/java/org/scijava/event/bushe/TestPublicationStates.java new file mode 100644 index 000000000..d4aed0a81 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TestPublicationStates.java @@ -0,0 +1,67 @@ +package org.scijava.event.bushe; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import java.util.List; +import java.util.ArrayList; + +/** + * Tests the implementation of publication states + */ +public class TestPublicationStates extends TestCase { + List stuffHappens = new ArrayList(); + ObjectEvent event = new ObjectEvent(null, null) { + @Override + public void setPublicationStatus(PublicationStatus status) { + super.setPublicationStatus(status); + stuffHappens.add(status); + } + }; + EventSubscriber subscriber = new EventSubscriber() { + public void onEvent(Object event) { + stuffHappens.add(this); + } + }; + + EventService es = new ThreadSafeEventService() { + @Override + protected void setStatus(PublicationStatus status, Object event, String topic, Object eventObj) { + super.setStatus(status, event, topic, eventObj); + } + }; + + public void testStates() { + stuffHappens.clear(); + es.subscribe(ObjectEvent.class, subscriber); + es.publish(event); + List expected = new ArrayList(); + expected.add(PublicationStatus.Initiated); + expected.add(PublicationStatus.Queued); + expected.add(PublicationStatus.Publishing); + expected.add(subscriber); + expected.add(PublicationStatus.Completed); + Assert.assertEquals(expected.size(), stuffHappens.size()); + for (int i = 0; i < expected.size(); i++) { + Assert.assertEquals(expected.get(i), stuffHappens.get(i)); + } + } + + public void testVetoStates() { + stuffHappens.clear(); + es.subscribe(ObjectEvent.class, subscriber); + es.subscribeVetoListener(ObjectEvent.class, new VetoEventListener() { + public boolean shouldVeto(Object event) { + return true; + } + }); + es.publish(event); + List expected = new ArrayList(); + expected.add(PublicationStatus.Initiated); + expected.add(PublicationStatus.Vetoed); + Assert.assertEquals(expected.size(), stuffHappens.size()); + for (int i = 0; i < expected.size(); i++) { + Assert.assertEquals(expected.get(i), stuffHappens.get(i)); + } + } +} diff --git a/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java b/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java new file mode 100644 index 000000000..3b7836df8 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java @@ -0,0 +1,35 @@ +package org.scijava.event.bushe; + +/** + * @author Michael Bushe + * @since Nov 19, 2005 11:00:53 PM + */ +public class TopicSubscriberForTest implements EventTopicSubscriber { + private boolean throwException; + private Long waitTime; + private EBTestCounter testDefaultEventService; + + public TopicSubscriberForTest(EBTestCounter testDefaultEventService, Long waitTime) { + this.testDefaultEventService = testDefaultEventService; + this.waitTime = waitTime; + } + + public TopicSubscriberForTest(EBTestCounter testDefaultEventService, boolean throwException) { + this.testDefaultEventService = testDefaultEventService; + this.throwException = throwException; + } + + public void onEvent(String topic, Object evt) { + if (waitTime != null) { + try { + Thread.sleep(waitTime.longValue()); + } catch (InterruptedException e) { + } + } + testDefaultEventService.eventsHandledCount++; + if (throwException) { + testDefaultEventService.subscribeExceptionCount++; + throw new IllegalArgumentException(); + } + } +} diff --git a/src/test/java/org/scijava/event/bushe/VetoEventListenerForTest.java b/src/test/java/org/scijava/event/bushe/VetoEventListenerForTest.java new file mode 100644 index 000000000..81a481185 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/VetoEventListenerForTest.java @@ -0,0 +1,24 @@ +package org.scijava.event.bushe; + +/** + * @author Michael Bushe + * @since Nov 19, 2005 11:00:42 PM + */ +public class VetoEventListenerForTest implements VetoEventListener { + private boolean throwException; + + public VetoEventListenerForTest() { + this(false); + } + + public VetoEventListenerForTest(boolean throwException) { + this.throwException = throwException; + } + + public boolean shouldVeto(Object evt) { + if (throwException) { + throw new IllegalArgumentException("veto ex"); + } + return true; + } +} diff --git a/src/test/java/org/scijava/event/bushe/VetoTopicEventListenerForTest.java b/src/test/java/org/scijava/event/bushe/VetoTopicEventListenerForTest.java new file mode 100644 index 000000000..af8bf79e5 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/VetoTopicEventListenerForTest.java @@ -0,0 +1,24 @@ +package org.scijava.event.bushe; + +/** + * @author Michael Bushe + * @since Nov 19, 2005 11:00:42 PM + */ +public class VetoTopicEventListenerForTest implements VetoTopicEventListener { + private boolean throwException; + + public VetoTopicEventListenerForTest() { + this(false); + } + + VetoTopicEventListenerForTest(boolean throwException) { + this.throwException = throwException; + } + + public boolean shouldVeto(String topic, Object data) { + if (throwException) { + throw new IllegalArgumentException("veto ex"); + } + return true; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/AbstractSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/AbstractSubscriber.java new file mode 100644 index 000000000..01f71125f --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/AbstractSubscriber.java @@ -0,0 +1,27 @@ +package org.scijava.event.bushe.annotation; + +/** + * Intended to answer this post: + * https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=30702&forumID=1834 + */ +public abstract class AbstractSubscriber { + private String targetType; + + abstract protected void initialize(String type); + + @EventSubscriber(eventClass=MyData.class) + public void loadDocumentAnalysis(MyData data) { + System.out.println(data + " received by " + getClass().getName()); + setTargetType(data.getClassification()); + //getStatusCallback().startProgress(getClass().getCanonicalName(), true, null); + initialize(getTargetType()); + } + + public void setTargetType(String targetType) { + this.targetType = targetType; + } + + public String getTargetType() { + return targetType; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/AnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/AnnotatedEventSubscriber.java new file mode 100644 index 000000000..4e5db4945 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/AnnotatedEventSubscriber.java @@ -0,0 +1,90 @@ +package org.scijava.event.bushe.annotation; + +import java.io.File; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.awt.Color; +import javax.swing.JComponent; +import javax.swing.JToggleButton; + +import org.scijava.event.bushe.ThreadSafeEventService; + +/** Test class for class-based subscriptions */ +public class AnnotatedEventSubscriber { + static int timesColorChanged = 0; + static String lastCall = null; + static int timesCalled = 0; + + public static int getTimesColorChanged() { + return timesColorChanged; + } + + public static void setTimesColorChanged(int times) { + timesColorChanged = times; + } + + public static int getTimesCalled() { + return timesCalled; + } + + public static void setTimesCalled(int times) { + timesCalled = times; + } + + public static String getLastCall() { + return lastCall; + } + + public static void setLastCall(String call) { + lastCall = call; + } + + @EventSubscriber + public void doColorChange(Color color) { + timesColorChanged++; + timesCalled++; + } + + @EventSubscriber(eventClass = List.class) + public void doList(Collection collection) { + lastCall = "doList"; + timesCalled++; + } + + @EventSubscriber(eventClass = JToggleButton.class, exact = true) + public void doJToggleButtonExactly(JComponent list) { + lastCall = "doJToggleButtonExactly"; + timesCalled++; + } + + @EventSubscriber(eventClass = Iterator.class, + eventServiceName = "IteratorService", + autoCreateEventServiceClass = ThreadSafeEventService.class) + public void autoCreateEventServiceClass(Iterator it) { + lastCall = "autoCreateEventServiceClass"; + timesCalled++; + } + + @EventTopicSubscriber(topic = "File.Open") + public void simpleTopicOpenFile(String topic, File file) { + lastCall = "simpleTopicOpenFile"; + timesCalled++; + } + + @EventTopicSubscriber(topic = "Iterator", + eventServiceName = "IteratorService", + autoCreateEventServiceClass = ThreadSafeEventService.class) + public void autoCreateEventServiceTopic(String topic, Iterator it) { + lastCall = "autoCreateEventServiceClass"; + timesCalled++; + } + + @EventTopicPatternSubscriber(topicPattern = "IceCream.*", + eventServiceName = "IceCreamService") + public void doIceCream(String topic, String order) { + lastCall = "doIceCream"; + timesCalled++; + } + +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/AnnotatedVetoSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/AnnotatedVetoSubscriber.java new file mode 100644 index 000000000..6c82ec00f --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/AnnotatedVetoSubscriber.java @@ -0,0 +1,85 @@ +package org.scijava.event.bushe.annotation; + +import java.io.File; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.awt.Color; +import javax.swing.JComponent; +import javax.swing.JToggleButton; + +import org.scijava.event.bushe.ThreadSafeEventService; + +/** Test class for class-based subscriptions. + * Does not like null, empty, red or cherry */ +public class AnnotatedVetoSubscriber { + + @VetoSubscriber + public boolean vetoBlueColorChange(Color color) { + if (color == Color.RED) { + return true; + } else { + return false; + } + } + + @VetoSubscriber(eventClass = List.class) + public boolean doList(Collection collection) { + if (collection == null || collection.isEmpty()) { + return true; + } else { + return false; + } + } + + @VetoSubscriber(eventClass = JToggleButton.class, exact = true) + public boolean doJToggleButtonExactly(JComponent button) { + if (button.getForeground() == Color.RED) { + return true; + } else { + return false; + } + } + + @VetoSubscriber(eventClass = Iterator.class, + eventServiceName = "IteratorService", + autoCreateEventServiceClass = ThreadSafeEventService.class) + public boolean autoCreateEventServiceClass(Iterator it) { + if (it == null || !it.hasNext()) { + return true; + } else { + return false; + } + } + + @VetoTopicSubscriber(topic = "File.Open") + public boolean simpleTopicOpenFile(String topic, File file) { + if (file == null) { + return true; + } else { + return false; + } + } + + @VetoTopicSubscriber(topic = "Iterator", + eventServiceName = "IteratorService", + autoCreateEventServiceClass = ThreadSafeEventService.class) + public boolean autoCreateEventServiceTopic(String topic, Iterator it) { + if (it == null || !it.hasNext()) { + return true; + } else { + return false; + } + } + + @VetoTopicPatternSubscriber(topicPattern = "IceCream.*", + eventServiceName = "IceCreamService") + public boolean doIceCream(String topic, String order) { + if (topic.indexOf("Cherry") > -1) { + return true; + } else { + return false; + } + } + +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/AnotherAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/AnotherAnnotatedEventSubscriber.java new file mode 100644 index 000000000..de7a4c9f9 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/AnotherAnnotatedEventSubscriber.java @@ -0,0 +1,48 @@ +package org.scijava.event.bushe.annotation; + +import java.util.List; +import java.util.Collection; +import java.util.Iterator; +import java.io.File; +import java.awt.Color; +import javax.swing.JToggleButton; +import javax.swing.JComponent; + +import org.scijava.event.bushe.ThreadSafeEventService; + +/** Test class for class-based subscriptions */ +public class AnotherAnnotatedEventSubscriber { + static int timesColorChanged = 0; + static String lastCall = null; + static int timesCalled = 0; + + public static int getTimesColorChanged() { + return timesColorChanged; + } + + public static void setTimesColorChanged(int times) { + timesColorChanged = times; + } + + public static int getTimesCalled() { + return timesCalled; + } + + public static void setTimesCalled(int times) { + timesCalled = times; + } + + public static String getLastCall() { + return lastCall; + } + + public static void setLastCall(String call) { + lastCall = call; + } + + @EventSubscriber(eventClass = List.class, referenceStrength = ReferenceStrength.STRONG) + public void doList(Collection collection) { + lastCall = "doList"; + timesCalled++; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/AnotherDoubleAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/AnotherDoubleAnnotatedEventSubscriber.java new file mode 100644 index 000000000..92bdf0534 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/AnotherDoubleAnnotatedEventSubscriber.java @@ -0,0 +1,23 @@ +package org.scijava.event.bushe.annotation; + +import java.util.List; +import java.util.Collection; + +/** Test class for class-based subscriptions */ +public class AnotherDoubleAnnotatedEventSubscriber { + + static int timesCalled = 0; + + public static int getTimesCalled() { + return timesCalled; + } + + public static void setTimesCalled(int times) { + timesCalled = times; + } + + @EventSubscriber(eventClass = List.class) + public void doList(Collection collection) { + timesCalled++; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/ConcreteSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/ConcreteSubscriber.java new file mode 100644 index 000000000..701ce66b1 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/ConcreteSubscriber.java @@ -0,0 +1,17 @@ +package org.scijava.event.bushe.annotation; + +/** + * Intended to answer this post: + * https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=30702&forumID=1834 + */ +public class ConcreteSubscriber extends AbstractSubscriber { + private boolean wasInitialized = false; + + protected void initialize(String type) { + this.wasInitialized = true; + } + + public boolean isInitialized() { + return wasInitialized; + } +} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/annotation/DoubleAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/DoubleAnnotatedEventSubscriber.java new file mode 100644 index 000000000..f35ee065c --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/DoubleAnnotatedEventSubscriber.java @@ -0,0 +1,35 @@ +package org.scijava.event.bushe.annotation; + +import java.util.List; +import java.util.Collection; +import java.util.Iterator; +import java.io.File; +import java.awt.Color; +import javax.swing.JToggleButton; +import javax.swing.JComponent; + +import org.scijava.event.bushe.ThreadSafeEventService; + +/** Test class for class-based subscriptions */ +public class DoubleAnnotatedEventSubscriber { + + static int timesCalled = 0; + + public static int getTimesCalled() { + return timesCalled; + } + + public static void setTimesCalled(int times) { + timesCalled = times; + } + + @EventSubscriber(eventClass = List.class) + public void doList(Collection collection) { + timesCalled++; + } + + @EventTopicSubscriber(topic="foo") + public void foo(String topic, Object o) { + timesCalled++; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber.java b/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber.java new file mode 100644 index 000000000..ed22bf8d2 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber.java @@ -0,0 +1,73 @@ +package org.scijava.event.bushe.annotation; + +import java.util.List; +import javax.swing.SwingUtilities; + +import org.scijava.event.bushe.annotation.AnnotationProcessor; +import org.scijava.event.bushe.annotation.EventSubscriber; +import org.scijava.event.bushe.annotation.EventTopicPatternSubscriber; +import org.scijava.event.bushe.annotation.EventTopicSubscriber; + +/** + * + */ +public class Issue15Subscriber { + private long timesCalled; + + public Issue15Subscriber() { + AnnotationProcessor.process(this); + } + + @EventSubscriber(eventClass = List.class) + public void handleClassSubscription(List c) { + timesCalled++; + if (c != null) { + System.out.println("In handleClassSubscription"); + System.out.println("By class: " + c); + System.out.println("Is on EDT: " + SwingUtilities.isEventDispatchThread()); + System.out.println(); + } + } + + /* + @EventTopicSubscriber(topic = "Topic1") + public void handleTopic1Subscription(String topic, Object o) { + if (o != null) { + System.out.println("In handleTopic1Subscription"); + System.out.println("By topic: " + topic); + System.out.println(" for class: " + o.getClass()); + System.out.println("Is on EDT: " + SwingUtilities.isEventDispatchThread()); + System.out.println(); + } + } + + + @EventTopicSubscriber(topic = "Topic2") + public void handleTopic2Subscription(String topic, Object o) { + if (o != null) { + System.out.println("In handleTopic2Subscription"); + System.out.println("By topic: " + topic); + System.out.println(" for class: " + o.getClass()); + System.out.println("Is on EDT: " + SwingUtilities.isEventDispatchThread()); + System.out.println(); + } + } + + + + @EventTopicPatternSubscriber(topicPattern = ".*") + public void handleAllTopicsSubscription(String topic, Object o) { + if (o != null) { + System.out.println("In handleAllTopicsSubscription"); + System.out.println("By topic: " + topic); + System.out.println(" for class: " + o.getClass()); + System.out.println("Is on EDT: " + SwingUtilities.isEventDispatchThread()); + System.out.println(); + } + } + */ + + public long getTimesCalled() { + return timesCalled; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber2.java b/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber2.java new file mode 100644 index 000000000..399542a86 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber2.java @@ -0,0 +1,69 @@ +package org.scijava.event.bushe.annotation; + +import java.util.List; +import java.util.ArrayList; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JTextField; + +import org.scijava.event.bushe.EventBus; +import org.scijava.event.bushe.annotation.AnnotationProcessor; +import org.scijava.event.bushe.annotation.EventSubscriber; + +/** + * + */ +public class Issue15Subscriber2 extends JDialog { + + private JTextField textField; + private long timesCalled; + + /** + * A new setup has been selected. + * @param e + * setup changed event notification + */ + @EventSubscriber(eventClass = List.class) + public void handleEvent(List e) { + timesCalled++; + textField.setText(e+""); + } + + private ActionListener buttonListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + EventBus.publish(new ArrayList()); + } + }; + + public Issue15Subscriber2() { + super(); + + AnnotationProcessor.process(this); + + setLayout(new GridLayout(1, 2)); + + JButton button = new JButton("Push Me"); + button.addActionListener(buttonListener); + textField = new JTextField(""); + + add(button); + add(textField); + } + + public static void main(String args[]) { + + Issue15Subscriber s = new Issue15Subscriber(); + + Issue15Subscriber2 dialog = new Issue15Subscriber2(); + System.err.println(EventBus.getSubscribers(List.class).size()); + dialog.setVisible(true); + } + + public long getTimesCalled() { + return timesCalled; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/MyData.java b/src/test/java/org/scijava/event/bushe/annotation/MyData.java new file mode 100644 index 000000000..5ff45afcf --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/MyData.java @@ -0,0 +1,17 @@ +package org.scijava.event.bushe.annotation; + +/** + * Intended to answer this post: + * https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=30702&forumID=1834 + */ +public class MyData { + private String classification = "foo"; + + public String getClassification() { + return classification; + } + + public void setClassification(String classification) { + this.classification = classification; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/StrongAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/StrongAnnotatedEventSubscriber.java new file mode 100644 index 000000000..6d611f5f8 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/StrongAnnotatedEventSubscriber.java @@ -0,0 +1,30 @@ +package org.scijava.event.bushe.annotation; + +import java.io.File; + +public class StrongAnnotatedEventSubscriber { + static String lastCall = null; + static int timesCalled = 0; + + public static int getTimesCalled() { + return timesCalled; + } + + public static void setTimesCalled(int times) { + timesCalled = times; + } + + public static String getLastCall() { + return lastCall; + } + + public static void setLastCall(String call) { + lastCall = call; + } + + @EventSubscriber(referenceStrength = ReferenceStrength.STRONG) + public void doStrong(File it) { + lastCall = "doStrong"; + timesCalled++; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/StrongClassAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/StrongClassAnnotatedEventSubscriber.java new file mode 100644 index 000000000..f2fc954a3 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/StrongClassAnnotatedEventSubscriber.java @@ -0,0 +1,24 @@ +package org.scijava.event.bushe.annotation; + +import java.util.Collection; +import java.util.List; + +/** Test class for class-based subscriptions */ +public class StrongClassAnnotatedEventSubscriber { + static int timesColorChanged = 0; + static String lastCall = null; + static int timesCalled = 0; + + public static int getTimesCalled() { + return timesCalled; + } + + public static void setTimesCalled(int times) { + timesCalled = times; + } + + @EventSubscriber(eventClass = List.class, referenceStrength = ReferenceStrength.STRONG) + public void doList(Collection collection) { + timesCalled++; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/TestAnnotationInAbstractClass.java b/src/test/java/org/scijava/event/bushe/annotation/TestAnnotationInAbstractClass.java new file mode 100644 index 000000000..316d44a67 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/TestAnnotationInAbstractClass.java @@ -0,0 +1,20 @@ +package org.scijava.event.bushe.annotation; + +import junit.framework.TestCase; +import junit.framework.Assert; +import org.scijava.event.bushe.EventBus; +import org.scijava.event.bushe.EDTUtil; + +/** + * Testing: + * https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=30702&forumID=1834 + */ +public class TestAnnotationInAbstractClass extends TestCase { + public void testAbstract() { + ConcreteSubscriber concrete = new ConcreteSubscriber(); + AnnotationProcessor.process(concrete); + EventBus.publish(new MyData()); + EDTUtil.waitForEDT(); + Assert.assertTrue(concrete.isInitialized()); + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotation.java b/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotation.java new file mode 100644 index 000000000..c5b1cc427 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotation.java @@ -0,0 +1,366 @@ +package org.scijava.event.bushe.annotation; + +import java.io.File; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.awt.Color; +import javax.swing.JButton; +import javax.swing.JToggleButton; +import javax.swing.SwingUtilities; + +import junit.framework.TestCase; + +import org.scijava.event.bushe.EDTUtil; +import org.scijava.event.bushe.EventBus; +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventServiceLocator; +import org.scijava.event.bushe.EventServiceLocatorTestCase; +import org.scijava.event.bushe.annotation.runtime.Factory; +import org.scijava.event.bushe.annotation.runtime.SubscriberForTesting; + +public class TestSubscriberAnnotation extends TestCase { + + @Override + public void setUp() { + EventServiceLocatorTestCase.clearEventServiceLocator(); + EventBus.getGlobalEventService(); + EventBus.clearAllSubscribers(); + AnnotatedEventSubscriber.setTimesCalled(0); + AnnotatedEventSubscriber.setLastCall(null); + System.gc(); + } + + protected void tearDown() throws Exception { + EventServiceLocatorTestCase.clearEventServiceLocator(); + } + + public void testSimple() throws InvocationTargetException, InterruptedException { + AnnotatedEventSubscriber.setTimesColorChanged(0); + final AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); + EventBus.publish(Color.BLUE); + Collection subs = EventBus.getSubscribers(Color.class); + assertEquals(0, subs.size()); + EDTUtil.waitForEDT(); + assertEquals(0, AnnotatedEventSubscriber.getTimesColorChanged()); + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + AnnotationProcessor.process(subscriber); + } + }); + + subs = EventBus.getSubscribers(Color.class); + assertEquals(1, subs.size()); + EventBus.publish(Color.BLUE); + EDTUtil.waitForEDT(); + assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); + + //Add veto + subs = EventBus.getVetoSubscribers(Color.class); + assertEquals(0, subs.size()); + final AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + AnnotationProcessor.process(vetoSubscriber); + } + }); + + subs = EventBus.getSubscribers(Color.class); + assertEquals(1, subs.size()); + subs = EventBus.getVetoSubscribers(Color.class); + assertEquals(1, subs.size()); + EventBus.publish(Color.RED); + EDTUtil.waitForEDT(); + assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + AnnotationProcessor.unprocess(vetoSubscriber); + } + }); + EventBus.publish(Color.RED); + EDTUtil.waitForEDT(); + assertEquals(2, AnnotatedEventSubscriber.getTimesColorChanged()); + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + AnnotationProcessor.unprocess(subscriber); + } + }); + EventBus.publish(Color.BLUE); + EDTUtil.waitForEDT(); + assertEquals(2, AnnotatedEventSubscriber.getTimesColorChanged()); + System.out.println("avoid garbage collection:"+subscriber + vetoSubscriber); + } + + public void testWeakReference() { + AnnotatedEventSubscriber.setTimesColorChanged(0); + AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); + AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + EventBus.publish(Color.BLUE); + EDTUtil.waitForEDT(); + assertEquals(0, AnnotatedEventSubscriber.getTimesColorChanged()); + AnnotationProcessor.process(subscriber); + AnnotationProcessor.process(vetoSubscriber); + EventBus.publish(Color.BLUE); + EDTUtil.waitForEDT(); + assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); + EventBus.publish(Color.RED); + EDTUtil.waitForEDT(); + assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); + + System.out.println("avoid garbage collection:"+subscriber+vetoSubscriber); + subscriber = null; + System.gc(); + EventBus.publish(Color.BLUE); + EDTUtil.waitForEDT(); + assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); + System.gc(); + } + + public void testEventClass() { + AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); + AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + AnnotationProcessor.process(subscriber); + AnnotationProcessor.process(vetoSubscriber); + + //Veto subscriber stops the empty list + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(null, AnnotatedEventSubscriber.getLastCall()); + + EventBus.publish(Arrays.asList("foo")); + EDTUtil.waitForEDT(); + assertEquals("doList", AnnotatedEventSubscriber.getLastCall()); + + AnnotatedEventSubscriber.setLastCall(null); + EventBus.publish(Arrays.asList()); + EDTUtil.waitForEDT(); + assertEquals(null, AnnotatedEventSubscriber.getLastCall()); + AnnotationProcessor.unprocess(vetoSubscriber); + EventBus.publish(Arrays.asList()); + EDTUtil.waitForEDT(); + assertEquals("doList", AnnotatedEventSubscriber.getLastCall()); + + System.out.println("avoid garbage collection:"+subscriber); + AnnotatedEventSubscriber.setLastCall(null); + //it was subscribed to a list, though the method param is Collection, it shouldn't get called + EventBus.publish(new HashSet()); + EDTUtil.waitForEDT(); + } + + public void testExactly() { + AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); + AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + AnnotationProcessor.process(subscriber); + AnnotationProcessor.process(vetoSubscriber); + + JToggleButton jToggleButton = new JToggleButton(); + EventBus.publish(jToggleButton); + EDTUtil.waitForEDT(); + System.out.println("avoid garbage collection:"+subscriber); + assertEquals("doJToggleButtonExactly", AnnotatedEventSubscriber.getLastCall()); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + + EventBus.publish(new JButton()); + EDTUtil.waitForEDT(); + assertEquals("doJToggleButtonExactly", AnnotatedEventSubscriber.getLastCall()); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + + jToggleButton.setForeground(Color.RED); + EventBus.publish(jToggleButton); + EDTUtil.waitForEDT(); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + + AnnotationProcessor.unprocess(vetoSubscriber); + EventBus.publish(jToggleButton); + EDTUtil.waitForEDT(); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + + AnnotationProcessor.unprocess(subscriber); + EventBus.publish(jToggleButton); + EDTUtil.waitForEDT(); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + } + + public void testAutoCreateEventServiceClass() { + AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); + AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + AnnotationProcessor.process(vetoSubscriber); + AnnotationProcessor.process(subscriber); + EventService es = EventServiceLocator.getEventService("IteratorService"); + es.publish(Arrays.asList("foo").iterator()); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + assertEquals("autoCreateEventServiceClass", AnnotatedEventSubscriber.getLastCall()); + es.publish(Arrays.asList().iterator()); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + AnnotationProcessor.unprocess(vetoSubscriber); + es.publish(Arrays.asList().iterator()); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + AnnotationProcessor.unprocess(subscriber); + es.publish(Arrays.asList().iterator()); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + } + + public void testStrongRef() { + StrongAnnotatedEventSubscriber subscriber = new StrongAnnotatedEventSubscriber(); + AnnotationProcessor.process(subscriber); + AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + AnnotationProcessor.process(vetoSubscriber); + EventBus.publish(new File("foo")); + EDTUtil.waitForEDT(); + assertEquals("doStrong", StrongAnnotatedEventSubscriber.getLastCall()); + assertEquals(1, StrongAnnotatedEventSubscriber.getTimesCalled()); + System.gc(); + EventBus.publish(new File("foo")); + EDTUtil.waitForEDT(); + assertEquals("doStrong", StrongAnnotatedEventSubscriber.getLastCall()); + assertEquals(2, StrongAnnotatedEventSubscriber.getTimesCalled()); + } + + public void testTopic() { + AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); + AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + AnnotationProcessor.process(subscriber); + AnnotationProcessor.process(vetoSubscriber); + EventBus.publish("File.Open", new File("foo")); + EDTUtil.waitForEDT(); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + EventBus.publish("File.Fooooooo", new File("foo")); + EDTUtil.waitForEDT(); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + EventBus.publish("File.Open", null); + EDTUtil.waitForEDT(); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + AnnotationProcessor.unprocess(vetoSubscriber); + EventBus.publish("File.Open", null); + EDTUtil.waitForEDT(); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + AnnotationProcessor.unprocess(subscriber); + EventBus.publish("File.Open", null); + EDTUtil.waitForEDT(); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + } + + public void testAutoCreateEventServiceTopic() { + AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); + AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + AnnotationProcessor.process(subscriber); + AnnotationProcessor.process(vetoSubscriber); + EventService es = EventServiceLocator.getEventService("IteratorService"); + es.publish("Iterator", new ArrayList().iterator()); + assertEquals(0, AnnotatedEventSubscriber.getTimesCalled()); + es.publish("Iterator", Arrays.asList("foo").iterator()); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + assertEquals("autoCreateEventServiceClass", AnnotatedEventSubscriber.getLastCall()); + AnnotationProcessor.unprocess(vetoSubscriber); + es.publish("Iterator", new ArrayList().iterator()); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + AnnotationProcessor.unprocess(subscriber); + es.publish("Iterator", Arrays.asList("foo").iterator()); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + } + + public void testTopicPattern() { + AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); + AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + AnnotationProcessor.process(vetoSubscriber); + AnnotationProcessor.process(subscriber); + EventService es = EventServiceLocator.getEventService("IceCreamService"); + es.publish("IceCream.Chocolate", "DoubleDip"); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + assertEquals("doIceCream", AnnotatedEventSubscriber.getLastCall()); + es.publish("IceCream.Cherry", "DoubleDip"); + assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); + AnnotationProcessor.unprocess(vetoSubscriber); + es.publish("IceCream.Chocolate", "DoubleDip"); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + AnnotationProcessor.unprocess(subscriber); + es.publish("IceCream.Chocolate", "DoubleDip"); + assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); + System.out.println(subscriber); + } + + public void testIssue15MultipleAnnotatedSubscribers() { + AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); + AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); + AnnotationProcessor.process(vetoSubscriber); + AnnotationProcessor.process(subscriber); + AnotherAnnotatedEventSubscriber anotherSubscriber = new AnotherAnnotatedEventSubscriber(); + AnnotationProcessor.process(anotherSubscriber); + EventBus.publish(Arrays.asList("foo")); + EDTUtil.waitForEDT(); + assertEquals(1, AnotherAnnotatedEventSubscriber.getTimesCalled()); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(1, AnotherAnnotatedEventSubscriber.getTimesCalled()); + EDTUtil.waitForEDT(); + System.out.println(subscriber); + System.out.println(anotherSubscriber); + } + + public void testAnotherIssue15MultipleAnnotatedSubscribers() { + EventBus.clearAllSubscribers(); + System.gc(); + Issue15Subscriber i15s1 = new Issue15Subscriber(); + Issue15Subscriber2 i15s2 = new Issue15Subscriber2(); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(1, i15s2.getTimesCalled()); + assertEquals(1, i15s1.getTimesCalled()); + //Ensure the garbage collector can't clean up the refs + System.out.println(i15s1); + System.out.println(i15s2); + } + + //This one works with the DoubleAnnotatedEventSubscriber and AnotherDoubleAnnotatedEventSubscriber (and Single), + //but fails with AnnotatedEventSubscriber and AnotherAnnotatedEventSubscriber + public void testYetAnotherIssue15MultipleAnnotatedSubscribers() { + EventBus.clearAllSubscribers(); + System.gc(); + DoubleAnnotatedEventSubscriber subscriber = new DoubleAnnotatedEventSubscriber(); + AnnotationProcessor.process(subscriber); + DoubleAnnotatedEventSubscriber secondSubscriber = new DoubleAnnotatedEventSubscriber(); + AnnotationProcessor.process(secondSubscriber); + AnotherDoubleAnnotatedEventSubscriber anotherSubscriber = new AnotherDoubleAnnotatedEventSubscriber(); + AnnotationProcessor.process(anotherSubscriber); + AnotherDoubleAnnotatedEventSubscriber secondAnotherSubscriber = new AnotherDoubleAnnotatedEventSubscriber(); + AnnotationProcessor.process(secondAnotherSubscriber); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(2, AnotherDoubleAnnotatedEventSubscriber.getTimesCalled()); + assertEquals(2, DoubleAnnotatedEventSubscriber.getTimesCalled()); + //Ensure the garbage collector can't clean up the refs + System.out.println("finished with:"+subscriber); + System.out.println("finished with:"+secondSubscriber); + System.out.println("finished with:"+anotherSubscriber); + } + +//Would like to test this, but an exception isn't thrown, since you want all the subscribers to be called +//even if calling any one throws an exception +// public void testTopicWrongType() { +// AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); +// AnnotationProcessor.process(subscriber); +// EventService es = EventServiceLocator.getEventService("IteratorService"); +// try { +// es.publish("Iterator", "foo"); +// fail("Should get an IllegalArgumentException"); +// } catch (Exception ex) { +// } +// } + + public void testRuntimeTopicSubscriber() { + SubscriberForTesting runtimeTopicSubscriber = Factory.newRuntimeTopicSubscriber("foo"); + EventBus.publish("foo", new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(1, runtimeTopicSubscriber.getTimesCalled()); + } + + public void testRuntimeTopicPatternSubscriber() { + SubscriberForTesting runtimeTopicSubscriber = Factory.newRuntimeTopicPatternSubscriber("hope.*"); + EventBus.publish("hope_and_change", new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(1, runtimeTopicSubscriber.getTimesCalled()); + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotationMemoryLeaks.java b/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotationMemoryLeaks.java new file mode 100644 index 000000000..2d1b19f44 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotationMemoryLeaks.java @@ -0,0 +1,336 @@ +package org.scijava.event.bushe.annotation; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JComponent; + +import junit.framework.TestCase; + +import org.scijava.event.bushe.CleanupEvent; +import org.scijava.event.bushe.EDTUtil; +import org.scijava.event.bushe.EventBus; +import org.scijava.event.bushe.EventService; +import org.scijava.event.bushe.EventSubscriber; +import org.scijava.event.bushe.ThreadSafeEventService; + +public class TestSubscriberAnnotationMemoryLeaks extends TestCase { + Random rand = new Random(); + + public void setUp() { + EventBus.getGlobalEventService(); + EventBus.clearAllSubscribers(); + System.gc(); + } + + public void testStrongClassAnnotatedEventSubscriber() { + StrongClassAnnotatedEventSubscriber subscriber = new StrongClassAnnotatedEventSubscriber(); + AnnotationProcessor.process(subscriber); + StrongClassAnnotatedEventSubscriber.setTimesCalled(0); + assertEquals(0, StrongClassAnnotatedEventSubscriber.getTimesCalled()); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(1, StrongClassAnnotatedEventSubscriber.getTimesCalled()); + subscriber = null; + System.gc(); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(2, StrongClassAnnotatedEventSubscriber.getTimesCalled()); + List subscribers = EventBus.getSubscribers(List.class); + assertEquals(1, subscribers.size()); + //I can unsubscribe without ever explicitly subscribing + EventBus.unsubscribe(List.class, (org.scijava.event.bushe.EventSubscriber) subscribers.get(0)); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(2, StrongClassAnnotatedEventSubscriber.getTimesCalled()); + subscribers = EventBus.getSubscribers(List.class); + assertEquals(0, subscribers.size()); + } + + public void testWeakClassAnnotatedEventSubscriber() { + WeakClassAnnotatedEventSubscriber subscriber = new WeakClassAnnotatedEventSubscriber(); + AnnotationProcessor.process(subscriber); + WeakClassAnnotatedEventSubscriber.setTimesCalled(0); + assertEquals(0, WeakClassAnnotatedEventSubscriber.getTimesCalled()); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(1, WeakClassAnnotatedEventSubscriber.getTimesCalled()); + + subscriber = null; + System.gc(); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(1, WeakClassAnnotatedEventSubscriber.getTimesCalled()); + List subscribers = EventBus.getSubscribers(List.class); + assertEquals(0, subscribers.size()); + } + + public void testWeakClassAnnotatedEventSubscriberUnsubscription() { + WeakClassAnnotatedEventSubscriber subscriber = new WeakClassAnnotatedEventSubscriber(); + AnnotationProcessor.process(subscriber); + WeakClassAnnotatedEventSubscriber.setTimesCalled(0); + assertEquals(0, WeakClassAnnotatedEventSubscriber.getTimesCalled()); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(1, WeakClassAnnotatedEventSubscriber.getTimesCalled()); + + EventBus.unsubscribe(List.class, subscriber); + + subscriber = null; + System.gc(); + EventBus.publish(new ArrayList()); + EDTUtil.waitForEDT(); + assertEquals(1, WeakClassAnnotatedEventSubscriber.getTimesCalled()); + List subscribers = EventBus.getSubscribers(List.class); + assertEquals(0, subscribers.size()); + } + + public void testCleanup() { + final int cleanStartThreshold = 100; + final long period = 5000L; + final int stopThreshold = 10; + EventService es = new ThreadSafeEventService(cleanStartThreshold, stopThreshold,period); + CleanupEventSubscriber cleanupEventSubscriber = new CleanupEventSubscriber(); + es.subscribe(CleanupEvent.class, cleanupEventSubscriber); + //Go right up to the edge, but don't cross it. + Object[] subscribers = new Object[cleanStartThreshold]; + for (int i = 0; i < cleanStartThreshold -2; i++) { + subscribers[i] = createSubscriber(es); + //these should have no effect + es.subscribeStrongly(List.class, new DummySubscriber()); + } + es.publish(new ArrayList()); + try { + Thread.sleep(100); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + assertEquals(0, cleanupEventSubscriber.events.size()); + + //Go over the edge, cleanup should start + subscribers[cleanStartThreshold-1] = createSubscriber(es); + try { + Thread.sleep(1000); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + + //There are no stale refs yet, should have tried cleaning, but not done it. + assertEquals(3, cleanupEventSubscriber.events.size()); + assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(0).getStatus()); + assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(1).getStatus()); + assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(2).getStatus()); + assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(0).getTotalWeakRefsAndProxies()); + assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(1).getTotalWeakRefsAndProxies()); + assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(2).getTotalWeakRefsAndProxies()); + assertEquals(new Integer(0), cleanupEventSubscriber.events.get(2).getNumStaleSubscribersCleaned()); + + //Does it run again after the interval (exactly once more)? + try { + Thread.sleep(250+period); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + assertEquals(6, cleanupEventSubscriber.events.size()); + assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(3).getStatus()); + assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(4).getStatus()); + assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(5).getStatus()); + assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(3).getTotalWeakRefsAndProxies()); + assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(4).getTotalWeakRefsAndProxies()); + assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(5).getTotalWeakRefsAndProxies()); + assertEquals(new Integer(0), cleanupEventSubscriber.events.get(5).getNumStaleSubscribersCleaned()); + + //Now make some stale + int numberToMakeStale = 10; + for (int i = 0; i < numberToMakeStale; i++) { + subscribers[i] = null; + } + System.gc(); + try { + Thread.sleep(100); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + //Period has not yet pass, should not expect a cleaning yet. + assertEquals(6, cleanupEventSubscriber.events.size()); + + //After period, stale refs should be cleaned + try { + Thread.sleep(period); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + assertEquals(9, cleanupEventSubscriber.events.size()); + assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(6).getStatus()); + assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(7).getStatus()); + assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(8).getStatus()); + assertEquals((int)cleanStartThreshold, (int)cleanupEventSubscriber.events.get(6).getTotalWeakRefsAndProxies()); + assertEquals((int)cleanStartThreshold, (int)cleanupEventSubscriber.events.get(7).getTotalWeakRefsAndProxies()); + assertEquals((int)(cleanStartThreshold - numberToMakeStale), (int)cleanupEventSubscriber.events.get(8).getTotalWeakRefsAndProxies()); + assertEquals((int)numberToMakeStale, (int)cleanupEventSubscriber.events.get(8).getNumStaleSubscribersCleaned()); + + //Now make so many stale that it gets below the stop threshold + int numberAlreadyStale = numberToMakeStale; + numberToMakeStale = cleanStartThreshold - stopThreshold; + for (int i = numberAlreadyStale; i < numberToMakeStale; i++) { + subscribers[i] = null; + } + System.gc(); + //After period, stale refs should be cleaned + try { + Thread.sleep(period); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + assertEquals(12, cleanupEventSubscriber.events.size()); + assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(9).getStatus()); + assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(10).getStatus()); + assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(11).getStatus()); + assertEquals((int)cleanStartThreshold-numberAlreadyStale, (int)cleanupEventSubscriber.events.get(9).getTotalWeakRefsAndProxies()); + assertEquals((int)cleanStartThreshold-numberAlreadyStale, (int)cleanupEventSubscriber.events.get(10).getTotalWeakRefsAndProxies()); + assertEquals((int)(cleanStartThreshold - numberToMakeStale), (int)cleanupEventSubscriber.events.get(11).getTotalWeakRefsAndProxies()); + assertEquals((int)numberToMakeStale, (int)cleanupEventSubscriber.events.get(11).getNumStaleSubscribersCleaned()+numberAlreadyStale); + + //After period, next cleaning run should tell us that cleaning is stopped + try { + Thread.sleep(period); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + assertEquals(14, cleanupEventSubscriber.events.size()); + assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(12).getStatus()); + assertEquals(CleanupEvent.Status.UNDER_STOP_THRESHOLD_CLEANING_CANCELLED, cleanupEventSubscriber.events.get(13).getStatus()); + assertEquals((int)cleanStartThreshold-numberToMakeStale, (int)cleanupEventSubscriber.events.get(12).getTotalWeakRefsAndProxies()); + assertEquals((int)cleanStartThreshold-numberToMakeStale, (int)cleanupEventSubscriber.events.get(13).getTotalWeakRefsAndProxies()); + assertEquals(null, cleanupEventSubscriber.events.get(13).getNumStaleSubscribersCleaned()); + + //After period, no more cleaning should be done + try { + Thread.sleep(period); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + assertEquals(14, cleanupEventSubscriber.events.size()); + + es.clearAllSubscribers(); + es.subscribe(CleanupEvent.class, cleanupEventSubscriber); + + //Go back over the limit and the cleaning should restart + for (int i = 0; i < cleanStartThreshold-1; i++) { + subscribers[i] = createSubscriber(es); + } + subscribers[99] = createSubscriber(es); + System.out.println("Cleanup should be starting"); + try { + Thread.sleep(250); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + assertEquals(17, cleanupEventSubscriber.events.size()); + assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(14).getStatus()); + assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(15).getStatus()); + assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(16).getStatus()); + assertEquals(0, (int)cleanupEventSubscriber.events.get(16).getNumStaleSubscribersCleaned()); + + es.clearAllSubscribers(); + es.subscribe(CleanupEvent.class, cleanupEventSubscriber); + try { + Thread.sleep(period); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + assertEquals(19, cleanupEventSubscriber.events.size()); + assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(17).getStatus()); + assertEquals(CleanupEvent.Status.UNDER_STOP_THRESHOLD_CLEANING_CANCELLED, cleanupEventSubscriber.events.get(18).getStatus()); + assertEquals(null, cleanupEventSubscriber.events.get(18).getNumStaleSubscribersCleaned()); + + //After period, no more cleaning should be done + try { + Thread.sleep(period); + } catch (InterruptedException ex) { + Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); + } + assertEquals(19, cleanupEventSubscriber.events.size()); + } + + private Object createSubscriber(EventService es) { + Object result = null; + int randNum = rand.nextInt(2); + if (randNum == 0) { + //class + randNum = rand.nextInt(2); + if (true || randNum == 0) { + //normal + result = new DummySubscriber(); + Class subscriptionClass = null; + randNum = rand.nextInt(3); + switch (randNum) { + case 0: subscriptionClass = List.class; break; + case 1: subscriptionClass = String.class;break; + case 2: subscriptionClass = JComponent.class;break; + } + es.subscribe(subscriptionClass, (EventSubscriber)result); + } else { + //annotated + result = new AnnotatedDummySubscriber(); + AnnotationProcessor.process(result); + } + } else { + //topic + randNum = rand.nextInt(2); + if (true || randNum == 0) { + //normal + result = new DummyTopicSubscriber(); + String topic = null; + randNum = rand.nextInt(3); + switch (randNum) { + case 0: topic = "Lis"; break; + case 1: topic = "Strin";break; + case 2: topic = "JCompon";break; + } + es.subscribe(topic, (org.scijava.event.bushe.EventTopicSubscriber)result); + } else { + //annotated + result = new AnnotatedTopicDummySubscriber(); + AnnotationProcessor.process(result); + } + } + return result; + } + + private class CleanupEventSubscriber implements EventSubscriber { + + public List events = new ArrayList(); + + public CleanupEventSubscriber() { + } + + public void onEvent(CleanupEvent event) { + this.events.add(event); + } + } + + private static class DummySubscriber implements EventSubscriber { + public void onEvent(List list) { + } + } + + private static class DummyTopicSubscriber implements org.scijava.event.bushe.EventTopicSubscriber { + public void onEvent(String topic, Object data) { + } + } + + private static class AnnotatedDummySubscriber { + @org.scijava.event.bushe.annotation.EventSubscriber(eventClass=List.class) + public void foo(Object event) { + } + } + + private static class AnnotatedTopicDummySubscriber { + @EventTopicSubscriber(topic="bar") + public void foo(Object event) { + } + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/WeakClassAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/WeakClassAnnotatedEventSubscriber.java new file mode 100644 index 000000000..0c7f7703a --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/WeakClassAnnotatedEventSubscriber.java @@ -0,0 +1,24 @@ +package org.scijava.event.bushe.annotation; + +import java.util.Collection; +import java.util.List; + +/** Test class for class-based subscriptions */ +public class WeakClassAnnotatedEventSubscriber { + static int timesColorChanged = 0; + static String lastCall = null; + static int timesCalled = 0; + + public static int getTimesCalled() { + return timesCalled; + } + + public static void setTimesCalled(int times) { + timesCalled = times; + } + + @EventSubscriber(eventClass = List.class, referenceStrength = ReferenceStrength.WEAK) + public void doList(Collection collection) { + timesCalled++; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/runtime/Factory.java b/src/test/java/org/scijava/event/bushe/annotation/runtime/Factory.java new file mode 100644 index 000000000..03a33214d --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/runtime/Factory.java @@ -0,0 +1,12 @@ +package org.scijava.event.bushe.annotation.runtime; + +public class Factory { + + public static SubscriberForTesting newRuntimeTopicSubscriber(String topic) { + return new RuntimeTopicSubscriber(topic); + } + + public static SubscriberForTesting newRuntimeTopicPatternSubscriber(String topicPattern) { + return new RuntimeTopicPatternSubscriber(topicPattern); + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicPatternSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicPatternSubscriber.java new file mode 100644 index 000000000..be306c337 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicPatternSubscriber.java @@ -0,0 +1,35 @@ +package org.scijava.event.bushe.annotation.runtime; + +import java.util.List; + +import org.scijava.event.bushe.annotation.AnnotationProcessor; +import org.scijava.event.bushe.annotation.RuntimeTopicPatternEventSubscriber; + +class RuntimeTopicPatternSubscriber implements SubscriberForTesting { + private final String topicPattern; + private long timesCalled; + + public RuntimeTopicPatternSubscriber(String topicPattern) { + this.topicPattern = topicPattern; + + AnnotationProcessor.process(this); + } + + @RuntimeTopicPatternEventSubscriber + public void handleEvent(String topic, List event) { + timesCalled++; + } + + @RuntimeTopicPatternEventSubscriber + public boolean shouldVeto(String topic, List e) { + return e == null; + } + + public String getTopicPatternName() { + return topicPattern; + } + + public long getTimesCalled() { + return timesCalled; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicSubscriber.java b/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicSubscriber.java new file mode 100644 index 000000000..c751b2dce --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicSubscriber.java @@ -0,0 +1,34 @@ +package org.scijava.event.bushe.annotation.runtime; + +import org.scijava.event.bushe.annotation.AnnotationProcessor; +import org.scijava.event.bushe.annotation.RuntimeTopicEventSubscriber; + +import java.util.List; + +class RuntimeTopicSubscriber implements SubscriberForTesting { + private long timesCalled; + private final String topic; + + public RuntimeTopicSubscriber(String topic) { + this.topic = topic; + AnnotationProcessor.process(this); + } + + @RuntimeTopicEventSubscriber + public void handleEvent(String topic, List e) { + timesCalled++; + } + + @RuntimeTopicEventSubscriber + public boolean shouldVeto(String topic, List e) { + return e == null; + } + + public String getTopicName() { + return topic; + } + + public long getTimesCalled() { + return timesCalled; + } +} diff --git a/src/test/java/org/scijava/event/bushe/annotation/runtime/SubscriberForTesting.java b/src/test/java/org/scijava/event/bushe/annotation/runtime/SubscriberForTesting.java new file mode 100644 index 000000000..55c76dca4 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/annotation/runtime/SubscriberForTesting.java @@ -0,0 +1,5 @@ +package org.scijava.event.bushe.annotation.runtime; + +public interface SubscriberForTesting { + long getTimesCalled(); +} diff --git a/src/test/java/org/scijava/event/bushe/generics/DataRequestEvent.java b/src/test/java/org/scijava/event/bushe/generics/DataRequestEvent.java new file mode 100644 index 000000000..3ff5b4952 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/generics/DataRequestEvent.java @@ -0,0 +1,9 @@ +package org.scijava.event.bushe.generics; + +import java.util.List; + +/** + * Test event for Bill Wholer's typed events. + */ +public class DataRequestEvent { +} diff --git a/src/test/java/org/scijava/event/bushe/generics/GenericReflection.java b/src/test/java/org/scijava/event/bushe/generics/GenericReflection.java new file mode 100644 index 000000000..87e80c600 --- /dev/null +++ b/src/test/java/org/scijava/event/bushe/generics/GenericReflection.java @@ -0,0 +1,125 @@ +package org.scijava.event.bushe.generics; + +import java.lang.reflect.TypeVariable; + +import java.lang.reflect.*; +import java.io.*; + +/** + * From OReilly Book Java Generics + */ +public class GenericReflection { + DataRequestEvent dre; + private final static PrintStream out = System.out; + public static void printSuperclass (Type sup) { + if (sup != null && !sup.equals(Object.class)) { + out.print("extends "); + printType(sup); + out.println(); + } + } + public static void printInterfaces (Type[] implementations) { + if (implementations != null && implementations.length > 0) { + out.print("implements "); + int i = 0; + for (Type impl : implementations) { + if (i++ > 0) out.print(","); + printType(impl); + } + out.println(); + } + } + public static void printTypeParameters (TypeVariable[] vars) { + if (vars != null && vars.length > 0) { + out.print("<"); + int i = 0; + for (TypeVariable var : vars) { + if (i++ > 0) out.print(","); + out.print(var.getName()); + printBounds(var.getBounds()); + } + out.print(">"); + } + } + public static void printBounds (Type[] bounds) { + if (bounds != null && bounds.length > 0 + && !(bounds.length==1 && bounds[0]==Object.class)) { + out.print(" extends "); + int i = 0; + for (Type bound : bounds) { + if (i++ > 0) out.print("&"); + printType(bound); + } + } + } + public static void printParams (Type[] types) { + if (types != null && types.length > 0) { + out.print("<"); + int i = 0; + for (Type type : types) { + if (i++ > 0) out.print(","); + printType(type); + } + out.print(">"); + } + } + public static void printType (Type type) { + if (type instanceof Class) { + Class c = (Class)type; + out.print(c.getName()); + } else if (type instanceof ParameterizedType) { + ParameterizedType p = (ParameterizedType)type; + Class c = (Class)p.getRawType(); + Type o = p.getOwnerType(); + if (o != null) { printType(o); out.print("."); } + out.print(c.getName()); + printParams(p.getActualTypeArguments()); + } else if (type instanceof TypeVariable) { + TypeVariable v = (TypeVariable)type; + out.print(v.getName()); + } else if (type instanceof GenericArrayType) { + GenericArrayType a = (GenericArrayType)type; + printType(a.getGenericComponentType()); + out.print("[]"); + } else if (type instanceof WildcardType) { + WildcardType w = (WildcardType)type; + Type[] upper = w.getUpperBounds(); + Type[] lower = w.getLowerBounds(); + if (upper.length==1 && lower.length==0) { + out.print("? extends "); + printType(upper[0]); + } else if (upper.length==0 && lower.length==1) { + out.print("? super "); + printType(lower[0]); + } else assert false; + } + } + public static void printClass (Class c) { + out.print("class "); + out.print(c.getName()); + printTypeParameters(c.getTypeParameters()); + out.println(); + printSuperclass(c.getGenericSuperclass()); + printInterfaces(c.getGenericInterfaces()); + /* + out.println("{"); + for (Field f : c.getFields()) { + out.println(" "+f.toGenericString()+";"); + } + for (Constructor k : c.getConstructors()) { + out.println(" "+k.toGenericString()+";"); + } + for (Method m : c.getMethods()) { + out.println(" "+m.toGenericString()+";"); + } + out.println("}"); + */ + } + public static void main (String[] args) throws ClassNotFoundException { + for (String name : args) { + Class c = Class.forName(name); + printClass(c); + } + } +} + From 98a7b73c7cc7eb4211d167a8a92b114716485bad Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 11:33:20 -0500 Subject: [PATCH 098/185] Remove broken org.bushe:eventbus tests --- .../annotation/TestSubscriberAnnotation.java | 366 ------------------ .../TestSubscriberAnnotationMemoryLeaks.java | 336 ---------------- 2 files changed, 702 deletions(-) delete mode 100644 src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotation.java delete mode 100644 src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotationMemoryLeaks.java diff --git a/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotation.java b/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotation.java deleted file mode 100644 index c5b1cc427..000000000 --- a/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotation.java +++ /dev/null @@ -1,366 +0,0 @@ -package org.scijava.event.bushe.annotation; - -import java.io.File; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.awt.Color; -import javax.swing.JButton; -import javax.swing.JToggleButton; -import javax.swing.SwingUtilities; - -import junit.framework.TestCase; - -import org.scijava.event.bushe.EDTUtil; -import org.scijava.event.bushe.EventBus; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventServiceLocator; -import org.scijava.event.bushe.EventServiceLocatorTestCase; -import org.scijava.event.bushe.annotation.runtime.Factory; -import org.scijava.event.bushe.annotation.runtime.SubscriberForTesting; - -public class TestSubscriberAnnotation extends TestCase { - - @Override - public void setUp() { - EventServiceLocatorTestCase.clearEventServiceLocator(); - EventBus.getGlobalEventService(); - EventBus.clearAllSubscribers(); - AnnotatedEventSubscriber.setTimesCalled(0); - AnnotatedEventSubscriber.setLastCall(null); - System.gc(); - } - - protected void tearDown() throws Exception { - EventServiceLocatorTestCase.clearEventServiceLocator(); - } - - public void testSimple() throws InvocationTargetException, InterruptedException { - AnnotatedEventSubscriber.setTimesColorChanged(0); - final AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); - EventBus.publish(Color.BLUE); - Collection subs = EventBus.getSubscribers(Color.class); - assertEquals(0, subs.size()); - EDTUtil.waitForEDT(); - assertEquals(0, AnnotatedEventSubscriber.getTimesColorChanged()); - SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - AnnotationProcessor.process(subscriber); - } - }); - - subs = EventBus.getSubscribers(Color.class); - assertEquals(1, subs.size()); - EventBus.publish(Color.BLUE); - EDTUtil.waitForEDT(); - assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); - - //Add veto - subs = EventBus.getVetoSubscribers(Color.class); - assertEquals(0, subs.size()); - final AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - AnnotationProcessor.process(vetoSubscriber); - } - }); - - subs = EventBus.getSubscribers(Color.class); - assertEquals(1, subs.size()); - subs = EventBus.getVetoSubscribers(Color.class); - assertEquals(1, subs.size()); - EventBus.publish(Color.RED); - EDTUtil.waitForEDT(); - assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); - - SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - AnnotationProcessor.unprocess(vetoSubscriber); - } - }); - EventBus.publish(Color.RED); - EDTUtil.waitForEDT(); - assertEquals(2, AnnotatedEventSubscriber.getTimesColorChanged()); - SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - AnnotationProcessor.unprocess(subscriber); - } - }); - EventBus.publish(Color.BLUE); - EDTUtil.waitForEDT(); - assertEquals(2, AnnotatedEventSubscriber.getTimesColorChanged()); - System.out.println("avoid garbage collection:"+subscriber + vetoSubscriber); - } - - public void testWeakReference() { - AnnotatedEventSubscriber.setTimesColorChanged(0); - AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); - AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - EventBus.publish(Color.BLUE); - EDTUtil.waitForEDT(); - assertEquals(0, AnnotatedEventSubscriber.getTimesColorChanged()); - AnnotationProcessor.process(subscriber); - AnnotationProcessor.process(vetoSubscriber); - EventBus.publish(Color.BLUE); - EDTUtil.waitForEDT(); - assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); - EventBus.publish(Color.RED); - EDTUtil.waitForEDT(); - assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); - - System.out.println("avoid garbage collection:"+subscriber+vetoSubscriber); - subscriber = null; - System.gc(); - EventBus.publish(Color.BLUE); - EDTUtil.waitForEDT(); - assertEquals(1, AnnotatedEventSubscriber.getTimesColorChanged()); - System.gc(); - } - - public void testEventClass() { - AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); - AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - AnnotationProcessor.process(subscriber); - AnnotationProcessor.process(vetoSubscriber); - - //Veto subscriber stops the empty list - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(null, AnnotatedEventSubscriber.getLastCall()); - - EventBus.publish(Arrays.asList("foo")); - EDTUtil.waitForEDT(); - assertEquals("doList", AnnotatedEventSubscriber.getLastCall()); - - AnnotatedEventSubscriber.setLastCall(null); - EventBus.publish(Arrays.asList()); - EDTUtil.waitForEDT(); - assertEquals(null, AnnotatedEventSubscriber.getLastCall()); - AnnotationProcessor.unprocess(vetoSubscriber); - EventBus.publish(Arrays.asList()); - EDTUtil.waitForEDT(); - assertEquals("doList", AnnotatedEventSubscriber.getLastCall()); - - System.out.println("avoid garbage collection:"+subscriber); - AnnotatedEventSubscriber.setLastCall(null); - //it was subscribed to a list, though the method param is Collection, it shouldn't get called - EventBus.publish(new HashSet()); - EDTUtil.waitForEDT(); - } - - public void testExactly() { - AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); - AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - AnnotationProcessor.process(subscriber); - AnnotationProcessor.process(vetoSubscriber); - - JToggleButton jToggleButton = new JToggleButton(); - EventBus.publish(jToggleButton); - EDTUtil.waitForEDT(); - System.out.println("avoid garbage collection:"+subscriber); - assertEquals("doJToggleButtonExactly", AnnotatedEventSubscriber.getLastCall()); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - - EventBus.publish(new JButton()); - EDTUtil.waitForEDT(); - assertEquals("doJToggleButtonExactly", AnnotatedEventSubscriber.getLastCall()); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - - jToggleButton.setForeground(Color.RED); - EventBus.publish(jToggleButton); - EDTUtil.waitForEDT(); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - - AnnotationProcessor.unprocess(vetoSubscriber); - EventBus.publish(jToggleButton); - EDTUtil.waitForEDT(); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - - AnnotationProcessor.unprocess(subscriber); - EventBus.publish(jToggleButton); - EDTUtil.waitForEDT(); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - } - - public void testAutoCreateEventServiceClass() { - AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); - AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - AnnotationProcessor.process(vetoSubscriber); - AnnotationProcessor.process(subscriber); - EventService es = EventServiceLocator.getEventService("IteratorService"); - es.publish(Arrays.asList("foo").iterator()); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - assertEquals("autoCreateEventServiceClass", AnnotatedEventSubscriber.getLastCall()); - es.publish(Arrays.asList().iterator()); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - AnnotationProcessor.unprocess(vetoSubscriber); - es.publish(Arrays.asList().iterator()); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - AnnotationProcessor.unprocess(subscriber); - es.publish(Arrays.asList().iterator()); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - } - - public void testStrongRef() { - StrongAnnotatedEventSubscriber subscriber = new StrongAnnotatedEventSubscriber(); - AnnotationProcessor.process(subscriber); - AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - AnnotationProcessor.process(vetoSubscriber); - EventBus.publish(new File("foo")); - EDTUtil.waitForEDT(); - assertEquals("doStrong", StrongAnnotatedEventSubscriber.getLastCall()); - assertEquals(1, StrongAnnotatedEventSubscriber.getTimesCalled()); - System.gc(); - EventBus.publish(new File("foo")); - EDTUtil.waitForEDT(); - assertEquals("doStrong", StrongAnnotatedEventSubscriber.getLastCall()); - assertEquals(2, StrongAnnotatedEventSubscriber.getTimesCalled()); - } - - public void testTopic() { - AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); - AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - AnnotationProcessor.process(subscriber); - AnnotationProcessor.process(vetoSubscriber); - EventBus.publish("File.Open", new File("foo")); - EDTUtil.waitForEDT(); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - EventBus.publish("File.Fooooooo", new File("foo")); - EDTUtil.waitForEDT(); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - EventBus.publish("File.Open", null); - EDTUtil.waitForEDT(); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - AnnotationProcessor.unprocess(vetoSubscriber); - EventBus.publish("File.Open", null); - EDTUtil.waitForEDT(); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - AnnotationProcessor.unprocess(subscriber); - EventBus.publish("File.Open", null); - EDTUtil.waitForEDT(); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - } - - public void testAutoCreateEventServiceTopic() { - AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); - AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - AnnotationProcessor.process(subscriber); - AnnotationProcessor.process(vetoSubscriber); - EventService es = EventServiceLocator.getEventService("IteratorService"); - es.publish("Iterator", new ArrayList().iterator()); - assertEquals(0, AnnotatedEventSubscriber.getTimesCalled()); - es.publish("Iterator", Arrays.asList("foo").iterator()); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - assertEquals("autoCreateEventServiceClass", AnnotatedEventSubscriber.getLastCall()); - AnnotationProcessor.unprocess(vetoSubscriber); - es.publish("Iterator", new ArrayList().iterator()); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - AnnotationProcessor.unprocess(subscriber); - es.publish("Iterator", Arrays.asList("foo").iterator()); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - } - - public void testTopicPattern() { - AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); - AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - AnnotationProcessor.process(vetoSubscriber); - AnnotationProcessor.process(subscriber); - EventService es = EventServiceLocator.getEventService("IceCreamService"); - es.publish("IceCream.Chocolate", "DoubleDip"); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - assertEquals("doIceCream", AnnotatedEventSubscriber.getLastCall()); - es.publish("IceCream.Cherry", "DoubleDip"); - assertEquals(1, AnnotatedEventSubscriber.getTimesCalled()); - AnnotationProcessor.unprocess(vetoSubscriber); - es.publish("IceCream.Chocolate", "DoubleDip"); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - AnnotationProcessor.unprocess(subscriber); - es.publish("IceCream.Chocolate", "DoubleDip"); - assertEquals(2, AnnotatedEventSubscriber.getTimesCalled()); - System.out.println(subscriber); - } - - public void testIssue15MultipleAnnotatedSubscribers() { - AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); - AnnotatedVetoSubscriber vetoSubscriber = new AnnotatedVetoSubscriber(); - AnnotationProcessor.process(vetoSubscriber); - AnnotationProcessor.process(subscriber); - AnotherAnnotatedEventSubscriber anotherSubscriber = new AnotherAnnotatedEventSubscriber(); - AnnotationProcessor.process(anotherSubscriber); - EventBus.publish(Arrays.asList("foo")); - EDTUtil.waitForEDT(); - assertEquals(1, AnotherAnnotatedEventSubscriber.getTimesCalled()); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(1, AnotherAnnotatedEventSubscriber.getTimesCalled()); - EDTUtil.waitForEDT(); - System.out.println(subscriber); - System.out.println(anotherSubscriber); - } - - public void testAnotherIssue15MultipleAnnotatedSubscribers() { - EventBus.clearAllSubscribers(); - System.gc(); - Issue15Subscriber i15s1 = new Issue15Subscriber(); - Issue15Subscriber2 i15s2 = new Issue15Subscriber2(); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(1, i15s2.getTimesCalled()); - assertEquals(1, i15s1.getTimesCalled()); - //Ensure the garbage collector can't clean up the refs - System.out.println(i15s1); - System.out.println(i15s2); - } - - //This one works with the DoubleAnnotatedEventSubscriber and AnotherDoubleAnnotatedEventSubscriber (and Single), - //but fails with AnnotatedEventSubscriber and AnotherAnnotatedEventSubscriber - public void testYetAnotherIssue15MultipleAnnotatedSubscribers() { - EventBus.clearAllSubscribers(); - System.gc(); - DoubleAnnotatedEventSubscriber subscriber = new DoubleAnnotatedEventSubscriber(); - AnnotationProcessor.process(subscriber); - DoubleAnnotatedEventSubscriber secondSubscriber = new DoubleAnnotatedEventSubscriber(); - AnnotationProcessor.process(secondSubscriber); - AnotherDoubleAnnotatedEventSubscriber anotherSubscriber = new AnotherDoubleAnnotatedEventSubscriber(); - AnnotationProcessor.process(anotherSubscriber); - AnotherDoubleAnnotatedEventSubscriber secondAnotherSubscriber = new AnotherDoubleAnnotatedEventSubscriber(); - AnnotationProcessor.process(secondAnotherSubscriber); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(2, AnotherDoubleAnnotatedEventSubscriber.getTimesCalled()); - assertEquals(2, DoubleAnnotatedEventSubscriber.getTimesCalled()); - //Ensure the garbage collector can't clean up the refs - System.out.println("finished with:"+subscriber); - System.out.println("finished with:"+secondSubscriber); - System.out.println("finished with:"+anotherSubscriber); - } - -//Would like to test this, but an exception isn't thrown, since you want all the subscribers to be called -//even if calling any one throws an exception -// public void testTopicWrongType() { -// AnnotatedEventSubscriber subscriber = new AnnotatedEventSubscriber(); -// AnnotationProcessor.process(subscriber); -// EventService es = EventServiceLocator.getEventService("IteratorService"); -// try { -// es.publish("Iterator", "foo"); -// fail("Should get an IllegalArgumentException"); -// } catch (Exception ex) { -// } -// } - - public void testRuntimeTopicSubscriber() { - SubscriberForTesting runtimeTopicSubscriber = Factory.newRuntimeTopicSubscriber("foo"); - EventBus.publish("foo", new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(1, runtimeTopicSubscriber.getTimesCalled()); - } - - public void testRuntimeTopicPatternSubscriber() { - SubscriberForTesting runtimeTopicSubscriber = Factory.newRuntimeTopicPatternSubscriber("hope.*"); - EventBus.publish("hope_and_change", new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(1, runtimeTopicSubscriber.getTimesCalled()); - } -} diff --git a/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotationMemoryLeaks.java b/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotationMemoryLeaks.java deleted file mode 100644 index 2d1b19f44..000000000 --- a/src/test/java/org/scijava/event/bushe/annotation/TestSubscriberAnnotationMemoryLeaks.java +++ /dev/null @@ -1,336 +0,0 @@ -package org.scijava.event.bushe.annotation; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.JComponent; - -import junit.framework.TestCase; - -import org.scijava.event.bushe.CleanupEvent; -import org.scijava.event.bushe.EDTUtil; -import org.scijava.event.bushe.EventBus; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventSubscriber; -import org.scijava.event.bushe.ThreadSafeEventService; - -public class TestSubscriberAnnotationMemoryLeaks extends TestCase { - Random rand = new Random(); - - public void setUp() { - EventBus.getGlobalEventService(); - EventBus.clearAllSubscribers(); - System.gc(); - } - - public void testStrongClassAnnotatedEventSubscriber() { - StrongClassAnnotatedEventSubscriber subscriber = new StrongClassAnnotatedEventSubscriber(); - AnnotationProcessor.process(subscriber); - StrongClassAnnotatedEventSubscriber.setTimesCalled(0); - assertEquals(0, StrongClassAnnotatedEventSubscriber.getTimesCalled()); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(1, StrongClassAnnotatedEventSubscriber.getTimesCalled()); - subscriber = null; - System.gc(); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(2, StrongClassAnnotatedEventSubscriber.getTimesCalled()); - List subscribers = EventBus.getSubscribers(List.class); - assertEquals(1, subscribers.size()); - //I can unsubscribe without ever explicitly subscribing - EventBus.unsubscribe(List.class, (org.scijava.event.bushe.EventSubscriber) subscribers.get(0)); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(2, StrongClassAnnotatedEventSubscriber.getTimesCalled()); - subscribers = EventBus.getSubscribers(List.class); - assertEquals(0, subscribers.size()); - } - - public void testWeakClassAnnotatedEventSubscriber() { - WeakClassAnnotatedEventSubscriber subscriber = new WeakClassAnnotatedEventSubscriber(); - AnnotationProcessor.process(subscriber); - WeakClassAnnotatedEventSubscriber.setTimesCalled(0); - assertEquals(0, WeakClassAnnotatedEventSubscriber.getTimesCalled()); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(1, WeakClassAnnotatedEventSubscriber.getTimesCalled()); - - subscriber = null; - System.gc(); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(1, WeakClassAnnotatedEventSubscriber.getTimesCalled()); - List subscribers = EventBus.getSubscribers(List.class); - assertEquals(0, subscribers.size()); - } - - public void testWeakClassAnnotatedEventSubscriberUnsubscription() { - WeakClassAnnotatedEventSubscriber subscriber = new WeakClassAnnotatedEventSubscriber(); - AnnotationProcessor.process(subscriber); - WeakClassAnnotatedEventSubscriber.setTimesCalled(0); - assertEquals(0, WeakClassAnnotatedEventSubscriber.getTimesCalled()); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(1, WeakClassAnnotatedEventSubscriber.getTimesCalled()); - - EventBus.unsubscribe(List.class, subscriber); - - subscriber = null; - System.gc(); - EventBus.publish(new ArrayList()); - EDTUtil.waitForEDT(); - assertEquals(1, WeakClassAnnotatedEventSubscriber.getTimesCalled()); - List subscribers = EventBus.getSubscribers(List.class); - assertEquals(0, subscribers.size()); - } - - public void testCleanup() { - final int cleanStartThreshold = 100; - final long period = 5000L; - final int stopThreshold = 10; - EventService es = new ThreadSafeEventService(cleanStartThreshold, stopThreshold,period); - CleanupEventSubscriber cleanupEventSubscriber = new CleanupEventSubscriber(); - es.subscribe(CleanupEvent.class, cleanupEventSubscriber); - //Go right up to the edge, but don't cross it. - Object[] subscribers = new Object[cleanStartThreshold]; - for (int i = 0; i < cleanStartThreshold -2; i++) { - subscribers[i] = createSubscriber(es); - //these should have no effect - es.subscribeStrongly(List.class, new DummySubscriber()); - } - es.publish(new ArrayList()); - try { - Thread.sleep(100); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - assertEquals(0, cleanupEventSubscriber.events.size()); - - //Go over the edge, cleanup should start - subscribers[cleanStartThreshold-1] = createSubscriber(es); - try { - Thread.sleep(1000); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - - //There are no stale refs yet, should have tried cleaning, but not done it. - assertEquals(3, cleanupEventSubscriber.events.size()); - assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(0).getStatus()); - assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(1).getStatus()); - assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(2).getStatus()); - assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(0).getTotalWeakRefsAndProxies()); - assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(1).getTotalWeakRefsAndProxies()); - assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(2).getTotalWeakRefsAndProxies()); - assertEquals(new Integer(0), cleanupEventSubscriber.events.get(2).getNumStaleSubscribersCleaned()); - - //Does it run again after the interval (exactly once more)? - try { - Thread.sleep(250+period); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - assertEquals(6, cleanupEventSubscriber.events.size()); - assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(3).getStatus()); - assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(4).getStatus()); - assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(5).getStatus()); - assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(3).getTotalWeakRefsAndProxies()); - assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(4).getTotalWeakRefsAndProxies()); - assertTrue(cleanStartThreshold == cleanupEventSubscriber.events.get(5).getTotalWeakRefsAndProxies()); - assertEquals(new Integer(0), cleanupEventSubscriber.events.get(5).getNumStaleSubscribersCleaned()); - - //Now make some stale - int numberToMakeStale = 10; - for (int i = 0; i < numberToMakeStale; i++) { - subscribers[i] = null; - } - System.gc(); - try { - Thread.sleep(100); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - //Period has not yet pass, should not expect a cleaning yet. - assertEquals(6, cleanupEventSubscriber.events.size()); - - //After period, stale refs should be cleaned - try { - Thread.sleep(period); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - assertEquals(9, cleanupEventSubscriber.events.size()); - assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(6).getStatus()); - assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(7).getStatus()); - assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(8).getStatus()); - assertEquals((int)cleanStartThreshold, (int)cleanupEventSubscriber.events.get(6).getTotalWeakRefsAndProxies()); - assertEquals((int)cleanStartThreshold, (int)cleanupEventSubscriber.events.get(7).getTotalWeakRefsAndProxies()); - assertEquals((int)(cleanStartThreshold - numberToMakeStale), (int)cleanupEventSubscriber.events.get(8).getTotalWeakRefsAndProxies()); - assertEquals((int)numberToMakeStale, (int)cleanupEventSubscriber.events.get(8).getNumStaleSubscribersCleaned()); - - //Now make so many stale that it gets below the stop threshold - int numberAlreadyStale = numberToMakeStale; - numberToMakeStale = cleanStartThreshold - stopThreshold; - for (int i = numberAlreadyStale; i < numberToMakeStale; i++) { - subscribers[i] = null; - } - System.gc(); - //After period, stale refs should be cleaned - try { - Thread.sleep(period); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - assertEquals(12, cleanupEventSubscriber.events.size()); - assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(9).getStatus()); - assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(10).getStatus()); - assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(11).getStatus()); - assertEquals((int)cleanStartThreshold-numberAlreadyStale, (int)cleanupEventSubscriber.events.get(9).getTotalWeakRefsAndProxies()); - assertEquals((int)cleanStartThreshold-numberAlreadyStale, (int)cleanupEventSubscriber.events.get(10).getTotalWeakRefsAndProxies()); - assertEquals((int)(cleanStartThreshold - numberToMakeStale), (int)cleanupEventSubscriber.events.get(11).getTotalWeakRefsAndProxies()); - assertEquals((int)numberToMakeStale, (int)cleanupEventSubscriber.events.get(11).getNumStaleSubscribersCleaned()+numberAlreadyStale); - - //After period, next cleaning run should tell us that cleaning is stopped - try { - Thread.sleep(period); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - assertEquals(14, cleanupEventSubscriber.events.size()); - assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(12).getStatus()); - assertEquals(CleanupEvent.Status.UNDER_STOP_THRESHOLD_CLEANING_CANCELLED, cleanupEventSubscriber.events.get(13).getStatus()); - assertEquals((int)cleanStartThreshold-numberToMakeStale, (int)cleanupEventSubscriber.events.get(12).getTotalWeakRefsAndProxies()); - assertEquals((int)cleanStartThreshold-numberToMakeStale, (int)cleanupEventSubscriber.events.get(13).getTotalWeakRefsAndProxies()); - assertEquals(null, cleanupEventSubscriber.events.get(13).getNumStaleSubscribersCleaned()); - - //After period, no more cleaning should be done - try { - Thread.sleep(period); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - assertEquals(14, cleanupEventSubscriber.events.size()); - - es.clearAllSubscribers(); - es.subscribe(CleanupEvent.class, cleanupEventSubscriber); - - //Go back over the limit and the cleaning should restart - for (int i = 0; i < cleanStartThreshold-1; i++) { - subscribers[i] = createSubscriber(es); - } - subscribers[99] = createSubscriber(es); - System.out.println("Cleanup should be starting"); - try { - Thread.sleep(250); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - assertEquals(17, cleanupEventSubscriber.events.size()); - assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(14).getStatus()); - assertEquals(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, cleanupEventSubscriber.events.get(15).getStatus()); - assertEquals(CleanupEvent.Status.FINISHED_CLEANING, cleanupEventSubscriber.events.get(16).getStatus()); - assertEquals(0, (int)cleanupEventSubscriber.events.get(16).getNumStaleSubscribersCleaned()); - - es.clearAllSubscribers(); - es.subscribe(CleanupEvent.class, cleanupEventSubscriber); - try { - Thread.sleep(period); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - assertEquals(19, cleanupEventSubscriber.events.size()); - assertEquals(CleanupEvent.Status.STARTING, cleanupEventSubscriber.events.get(17).getStatus()); - assertEquals(CleanupEvent.Status.UNDER_STOP_THRESHOLD_CLEANING_CANCELLED, cleanupEventSubscriber.events.get(18).getStatus()); - assertEquals(null, cleanupEventSubscriber.events.get(18).getNumStaleSubscribersCleaned()); - - //After period, no more cleaning should be done - try { - Thread.sleep(period); - } catch (InterruptedException ex) { - Logger.getLogger(TestSubscriberAnnotationMemoryLeaks.class.getName()).log(Level.SEVERE, null, ex); - } - assertEquals(19, cleanupEventSubscriber.events.size()); - } - - private Object createSubscriber(EventService es) { - Object result = null; - int randNum = rand.nextInt(2); - if (randNum == 0) { - //class - randNum = rand.nextInt(2); - if (true || randNum == 0) { - //normal - result = new DummySubscriber(); - Class subscriptionClass = null; - randNum = rand.nextInt(3); - switch (randNum) { - case 0: subscriptionClass = List.class; break; - case 1: subscriptionClass = String.class;break; - case 2: subscriptionClass = JComponent.class;break; - } - es.subscribe(subscriptionClass, (EventSubscriber)result); - } else { - //annotated - result = new AnnotatedDummySubscriber(); - AnnotationProcessor.process(result); - } - } else { - //topic - randNum = rand.nextInt(2); - if (true || randNum == 0) { - //normal - result = new DummyTopicSubscriber(); - String topic = null; - randNum = rand.nextInt(3); - switch (randNum) { - case 0: topic = "Lis"; break; - case 1: topic = "Strin";break; - case 2: topic = "JCompon";break; - } - es.subscribe(topic, (org.scijava.event.bushe.EventTopicSubscriber)result); - } else { - //annotated - result = new AnnotatedTopicDummySubscriber(); - AnnotationProcessor.process(result); - } - } - return result; - } - - private class CleanupEventSubscriber implements EventSubscriber { - - public List events = new ArrayList(); - - public CleanupEventSubscriber() { - } - - public void onEvent(CleanupEvent event) { - this.events.add(event); - } - } - - private static class DummySubscriber implements EventSubscriber { - public void onEvent(List list) { - } - } - - private static class DummyTopicSubscriber implements org.scijava.event.bushe.EventTopicSubscriber { - public void onEvent(String topic, Object data) { - } - } - - private static class AnnotatedDummySubscriber { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass=List.class) - public void foo(Object event) { - } - } - - private static class AnnotatedTopicDummySubscriber { - @EventTopicSubscriber(topic="bar") - public void foo(Object event) { - } - } -} From 66c98fd04ac917f1050f2955866468fa31bbe4e5 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 11:50:00 -0500 Subject: [PATCH 099/185] Move all org.bushe:eventbus code into one package So that we can more easily decrease the visibility of these classes. --- .../scijava/event/DefaultEventService.java | 8 +- .../java/org/scijava/event/EventHandler.java | 2 +- .../org/scijava/event/EventSubscriber.java | 2 +- .../AbstractProxySubscriber.java | 6 +- .../{annotation => }/AnnotationProcessor.java | 7 +- .../{annotation => }/BaseProxySubscriber.java | 7 +- .../bushe/ContainerEventServiceRegistrar.java | 16 +-- .../org/scijava/event/bushe/EventBus.java | 52 +++---- .../org/scijava/event/bushe/EventService.java | 58 ++++---- .../scijava/event/bushe/EventSubscriber.java | 121 +++++++++++++---- .../EventTopicPatternSubscriber.java | 6 +- .../event/bushe/EventTopicSubscriber.java | 122 +++++++++++++---- .../scijava/event/bushe/IEventSubscriber.java | 35 +++++ .../event/bushe/IEventTopicSubscriber.java | 38 ++++++ .../bushe/PrioritizedEventSubscriber.java | 4 +- .../PrioritizedEventTopicSubscriber.java | 4 +- .../scijava/event/bushe/ProxySubscriber.java | 2 - .../ProxyTopicPatternSubscriber.java | 4 +- .../ProxyTopicSubscriber.java | 7 +- .../{annotation => }/ReferenceStrength.java | 2 +- .../RuntimeTopicEventSubscriber.java | 6 +- .../RuntimeTopicPatternEventSubscriber.java | 6 +- .../event/bushe/SubscriberTimingEvent.java | 6 +- .../bushe/{exception => }/SwingException.java | 2 +- .../event/bushe/ThreadSafeEventService.java | 84 ++++++------ .../bushe/{generics => }/TypeReference.java | 2 +- ...heClassOfTheAnnotatedMethodsParameter.java | 2 +- .../VetoRuntimeTopicPatternSubscriber.java | 6 +- .../VetoRuntimeTopicSubscriber.java | 6 +- .../{annotation => }/VetoSubscriber.java | 6 +- .../VetoTopicPatternSubscriber.java | 6 +- .../{annotation => }/VetoTopicSubscriber.java | 6 +- .../bushe/annotation/EventSubscriber.java | 110 --------------- .../annotation/EventTopicSubscriber.java | 108 --------------- .../{annotation => }/AbstractSubscriber.java | 2 +- .../AnnotatedEventSubscriber.java | 4 +- .../AnnotatedVetoSubscriber.java | 4 +- .../AnotherAnnotatedEventSubscriber.java | 4 +- ...AnotherDoubleAnnotatedEventSubscriber.java | 4 +- .../scijava/event/bushe/BadEventService.java | 4 +- .../{annotation => }/ConcreteSubscriber.java | 2 +- .../{generics => }/DataRequestEvent.java | 2 +- .../DoubleAnnotatedEventSubscriber.java | 4 +- .../{annotation/runtime => }/Factory.java | 2 +- .../{generics => }/GenericReflection.java | 2 +- .../{annotation => }/Issue15Subscriber.java | 7 +- .../{annotation => }/Issue15Subscriber2.java | 6 +- .../event/bushe/{annotation => }/MyData.java | 2 +- .../RuntimeTopicPatternSubscriber.java | 5 +- .../runtime => }/RuntimeTopicSubscriber.java | 5 +- .../StrongAnnotatedEventSubscriber.java | 2 +- .../StrongClassAnnotatedEventSubscriber.java | 2 +- .../event/bushe/SubscriberForTest.java | 2 +- .../runtime => }/SubscriberForTesting.java | 2 +- .../TestAnnotationInAbstractClass.java | 4 +- .../bushe/TestContainerEventService.java | 8 +- .../event/bushe/TestDefaultEventService.java | 69 +++++----- .../scijava/event/bushe/TestEventAction.java | 12 +- .../org/scijava/event/bushe/TestEventBus.java | 36 ++--- .../event/bushe/TestEventBusServiceClass.java | 2 +- .../TestEventBusServiceClassBadType.java | 2 +- .../event/bushe/TestEventBusTiming.java | 20 +-- .../scijava/event/bushe/TestPerformance.java | 4 +- .../bushe/TestPrioritizedSubscribers.java | 128 +++++++++--------- .../event/bushe/TestPublicationStates.java | 2 +- .../event/bushe/TopicSubscriberForTest.java | 2 +- .../WeakClassAnnotatedEventSubscriber.java | 2 +- 67 files changed, 563 insertions(+), 654 deletions(-) rename src/main/java/org/scijava/event/bushe/{annotation => }/AbstractProxySubscriber.java (97%) rename src/main/java/org/scijava/event/bushe/{annotation => }/AnnotationProcessor.java (99%) rename src/main/java/org/scijava/event/bushe/{annotation => }/BaseProxySubscriber.java (96%) rename src/main/java/org/scijava/event/bushe/{annotation => }/EventTopicPatternSubscriber.java (86%) create mode 100644 src/main/java/org/scijava/event/bushe/IEventSubscriber.java create mode 100644 src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java rename src/main/java/org/scijava/event/bushe/{annotation => }/ProxyTopicPatternSubscriber.java (97%) rename src/main/java/org/scijava/event/bushe/{annotation => }/ProxyTopicSubscriber.java (96%) rename src/main/java/org/scijava/event/bushe/{annotation => }/ReferenceStrength.java (77%) rename src/main/java/org/scijava/event/bushe/{annotation => }/RuntimeTopicEventSubscriber.java (86%) rename src/main/java/org/scijava/event/bushe/{annotation => }/RuntimeTopicPatternEventSubscriber.java (87%) rename src/main/java/org/scijava/event/bushe/{exception => }/SwingException.java (99%) rename src/main/java/org/scijava/event/bushe/{generics => }/TypeReference.java (97%) rename src/main/java/org/scijava/event/bushe/{annotation => }/UseTheClassOfTheAnnotatedMethodsParameter.java (94%) rename src/main/java/org/scijava/event/bushe/{annotation => }/VetoRuntimeTopicPatternSubscriber.java (88%) rename src/main/java/org/scijava/event/bushe/{annotation => }/VetoRuntimeTopicSubscriber.java (87%) rename src/main/java/org/scijava/event/bushe/{annotation => }/VetoSubscriber.java (93%) rename src/main/java/org/scijava/event/bushe/{annotation => }/VetoTopicPatternSubscriber.java (92%) rename src/main/java/org/scijava/event/bushe/{annotation => }/VetoTopicSubscriber.java (92%) delete mode 100644 src/main/java/org/scijava/event/bushe/annotation/EventSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/annotation/EventTopicSubscriber.java rename src/test/java/org/scijava/event/bushe/{annotation => }/AbstractSubscriber.java (94%) rename src/test/java/org/scijava/event/bushe/{annotation => }/AnnotatedEventSubscriber.java (95%) rename src/test/java/org/scijava/event/bushe/{annotation => }/AnnotatedVetoSubscriber.java (95%) rename src/test/java/org/scijava/event/bushe/{annotation => }/AnotherAnnotatedEventSubscriber.java (91%) rename src/test/java/org/scijava/event/bushe/{annotation => }/AnotherDoubleAnnotatedEventSubscriber.java (91%) rename src/test/java/org/scijava/event/bushe/{annotation => }/ConcreteSubscriber.java (90%) rename src/test/java/org/scijava/event/bushe/{generics => }/DataRequestEvent.java (75%) rename src/test/java/org/scijava/event/bushe/{annotation => }/DoubleAnnotatedEventSubscriber.java (87%) rename src/test/java/org/scijava/event/bushe/{annotation/runtime => }/Factory.java (85%) rename src/test/java/org/scijava/event/bushe/{generics => }/GenericReflection.java (98%) rename src/test/java/org/scijava/event/bushe/{annotation => }/Issue15Subscriber.java (87%) rename src/test/java/org/scijava/event/bushe/{annotation => }/Issue15Subscriber2.java (88%) rename src/test/java/org/scijava/event/bushe/{annotation => }/MyData.java (89%) rename src/test/java/org/scijava/event/bushe/{annotation/runtime => }/RuntimeTopicPatternSubscriber.java (77%) rename src/test/java/org/scijava/event/bushe/{annotation/runtime => }/RuntimeTopicSubscriber.java (76%) rename src/test/java/org/scijava/event/bushe/{annotation => }/StrongAnnotatedEventSubscriber.java (93%) rename src/test/java/org/scijava/event/bushe/{annotation => }/StrongClassAnnotatedEventSubscriber.java (92%) rename src/test/java/org/scijava/event/bushe/{annotation/runtime => }/SubscriberForTesting.java (56%) rename src/test/java/org/scijava/event/bushe/{annotation => }/TestAnnotationInAbstractClass.java (80%) rename src/test/java/org/scijava/event/bushe/{annotation => }/WeakClassAnnotatedEventSubscriber.java (92%) diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index e82d844a5..c5717d8a9 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -40,10 +40,10 @@ import java.util.Map; import java.util.WeakHashMap; -import org.scijava.event.bushe.annotation.AbstractProxySubscriber; -import org.scijava.event.bushe.annotation.BaseProxySubscriber; -import org.scijava.event.bushe.annotation.ReferenceStrength; import org.scijava.Priority; +import org.scijava.event.bushe.AbstractProxySubscriber; +import org.scijava.event.bushe.BaseProxySubscriber; +import org.scijava.event.bushe.ReferenceStrength; import org.scijava.log.LogService; import org.scijava.plugin.Parameter; import org.scijava.plugin.Plugin; @@ -263,7 +263,7 @@ private synchronized void keepIt(final Object o, final ProxySubscriber subscr * Helper class used by {@link #subscribe(Object)}. *

      * Recapitulates some logic from {@link BaseProxySubscriber}, because that - * class implements {@link org.scijava.event.bushe.EventSubscriber} as a raw + * class implements {@link org.scijava.event.bushe.IEventSubscriber} as a raw * type, which is incompatible with this class implementing SciJava's * {@link EventSubscriber} as a typed interface; it becomes impossible to * implement both {@code onEvent(Object)} and {@code onEvent(E)}. diff --git a/src/main/java/org/scijava/event/EventHandler.java b/src/main/java/org/scijava/event/EventHandler.java index 27e0d7bbc..55f4b3a6f 100644 --- a/src/main/java/org/scijava/event/EventHandler.java +++ b/src/main/java/org/scijava/event/EventHandler.java @@ -40,7 +40,7 @@ * handling methods and annotating each with @{@link EventHandler}. *

      * Note to developers: This annotation serves exactly the same purpose as - * EventBus's {@link org.scijava.event.bushe.annotation.EventSubscriber} + * EventBus's {@link org.scijava.event.bushe.EventSubscriber} * annotation, recapitulating a subset of the same functionality. We do this to * avoid third party code depending directly on EventBus. That is, we do not * wish to require SciJava developers to {@code import org.scijava.event.bushe.*} diff --git a/src/main/java/org/scijava/event/EventSubscriber.java b/src/main/java/org/scijava/event/EventSubscriber.java index a36181639..a25ba2c1a 100644 --- a/src/main/java/org/scijava/event/EventSubscriber.java +++ b/src/main/java/org/scijava/event/EventSubscriber.java @@ -44,7 +44,7 @@ * @param Type of event for which to listen */ public interface EventSubscriber extends - org.scijava.event.bushe.EventSubscriber + org.scijava.event.bushe.IEventSubscriber { @Override diff --git a/src/main/java/org/scijava/event/bushe/annotation/AbstractProxySubscriber.java b/src/main/java/org/scijava/event/bushe/AbstractProxySubscriber.java similarity index 97% rename from src/main/java/org/scijava/event/bushe/annotation/AbstractProxySubscriber.java rename to src/main/java/org/scijava/event/bushe/AbstractProxySubscriber.java index f7a7a84f2..f0db8aac1 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/AbstractProxySubscriber.java +++ b/src/main/java/org/scijava/event/bushe/AbstractProxySubscriber.java @@ -1,14 +1,10 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.ref.WeakReference; import java.lang.reflect.Method; import java.lang.reflect.AccessibleObject; import java.lang.reflect.InvocationTargetException; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.ProxySubscriber; -import org.scijava.event.bushe.Prioritized; - /** * Common base class for EventService Proxies. *

      diff --git a/src/main/java/org/scijava/event/bushe/annotation/AnnotationProcessor.java b/src/main/java/org/scijava/event/bushe/AnnotationProcessor.java similarity index 99% rename from src/main/java/org/scijava/event/bushe/annotation/AnnotationProcessor.java rename to src/main/java/org/scijava/event/bushe/AnnotationProcessor.java index 2a9810322..22ae777ac 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/AnnotationProcessor.java +++ b/src/main/java/org/scijava/event/bushe/AnnotationProcessor.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.annotation.Annotation; import java.lang.reflect.InvocationTargetException; @@ -6,11 +6,6 @@ import java.util.regex.Pattern; import java.util.Arrays; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventServiceExistsException; -import org.scijava.event.bushe.EventServiceLocator; -import org.scijava.event.bushe.Logger; - /** * Enhances classes that use EventService Annotations. *

      diff --git a/src/main/java/org/scijava/event/bushe/annotation/BaseProxySubscriber.java b/src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java similarity index 96% rename from src/main/java/org/scijava/event/bushe/annotation/BaseProxySubscriber.java rename to src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java index f877d35e2..8c8ccd6ae 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/BaseProxySubscriber.java +++ b/src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java @@ -1,14 +1,11 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.VetoEventListener; - /** A class is subscribed to an EventService on behalf of another object. */ public class BaseProxySubscriber extends AbstractProxySubscriber - implements org.scijava.event.bushe.EventSubscriber, VetoEventListener { + implements org.scijava.event.bushe.IEventSubscriber, VetoEventListener { private Class subscriptionClass; /** diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java index 5825dd664..d75de00c3 100644 --- a/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java +++ b/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java @@ -37,10 +37,10 @@ */ public class ContainerEventServiceRegistrar { private JComponent jComp; - private EventSubscriber eventSubscriber; + private IEventSubscriber eventSubscriber; private VetoEventListener vetoSubscriber; private Class[] eventClasses; - private EventTopicSubscriber eventTopicSubscriber; + private IEventTopicSubscriber eventTopicSubscriber; private VetoTopicEventListener vetoTopicSubscriber; private String[] topics; private EventService containerEventService; @@ -63,7 +63,7 @@ public ContainerEventServiceRegistrar(JComponent jComp) { * @param eventSubscriber the subscriber to register to the Container EventServer * @param eventClasses the class(es) to register for */ - public ContainerEventServiceRegistrar(JComponent jComp, EventSubscriber eventSubscriber, Class... eventClasses) { + public ContainerEventServiceRegistrar(JComponent jComp, IEventSubscriber eventSubscriber, Class... eventClasses) { this(jComp, eventSubscriber, null, eventClasses, null, null, null); } @@ -75,7 +75,7 @@ public ContainerEventServiceRegistrar(JComponent jComp, EventSubscriber eventSub * @param eventTopicSubscriber the topic subscriber to register to the Container EventServer * @param topics the event topic name to register for */ - public ContainerEventServiceRegistrar(JComponent jComp, EventTopicSubscriber eventTopicSubscriber, String... topics) { + public ContainerEventServiceRegistrar(JComponent jComp, IEventTopicSubscriber eventTopicSubscriber, String... topics) { this(jComp, null, null, null, eventTopicSubscriber, null, topics); } @@ -113,8 +113,8 @@ public ContainerEventServiceRegistrar(JComponent jComp, VetoTopicEventListener v * @param eventTopicSubscriber the topic subscriber to keep registered to the topic(s) * @param topics the event topic names to register for */ - public ContainerEventServiceRegistrar(JComponent jComp, EventSubscriber eventSubscriber, Class[] eventClasses, - EventTopicSubscriber eventTopicSubscriber, String[] topics) { + public ContainerEventServiceRegistrar(JComponent jComp, IEventSubscriber eventSubscriber, Class[] eventClasses, + IEventTopicSubscriber eventTopicSubscriber, String[] topics) { this(jComp, eventSubscriber, null, eventClasses, eventTopicSubscriber, null, topics); } @@ -130,8 +130,8 @@ public ContainerEventServiceRegistrar(JComponent jComp, EventSubscriber eventSub * @param vetoTopicSubscriber a veto subscriber for the topics * @param topics the event topic names to register for */ - public ContainerEventServiceRegistrar(JComponent jComp, EventSubscriber eventSubscriber, VetoEventListener vetoSubscriber, - Class[] eventClasses, EventTopicSubscriber eventTopicSubscriber, VetoTopicEventListener vetoTopicSubscriber, + public ContainerEventServiceRegistrar(JComponent jComp, IEventSubscriber eventSubscriber, VetoEventListener vetoSubscriber, + Class[] eventClasses, IEventTopicSubscriber eventTopicSubscriber, VetoTopicEventListener vetoTopicSubscriber, String[] topics) { this.jComp = jComp; this.eventSubscriber = eventSubscriber; diff --git a/src/main/java/org/scijava/event/bushe/EventBus.java b/src/main/java/org/scijava/event/bushe/EventBus.java index 846d96820..7a01fc2bd 100644 --- a/src/main/java/org/scijava/event/bushe/EventBus.java +++ b/src/main/java/org/scijava/event/bushe/EventBus.java @@ -74,68 +74,68 @@ public static void publish(Type genericType, Object o) { } - /** @see EventService#subscribe(Class,EventSubscriber) */ - public static boolean subscribe(Class eventClass, EventSubscriber subscriber) { + /** @see EventService#subscribe(Class,IEventSubscriber) */ + public static boolean subscribe(Class eventClass, IEventSubscriber subscriber) { return EventServiceLocator.getEventBusService().subscribe(eventClass, subscriber); } - /** @see EventService#subscribe(java.lang.reflect.Type, EventSubscriber) */ - public static boolean subscribe(Type genericType, EventSubscriber subscriber) { + /** @see EventService#subscribe(java.lang.reflect.Type, IEventSubscriber) */ + public static boolean subscribe(Type genericType, IEventSubscriber subscriber) { return EventServiceLocator.getEventBusService().subscribe(genericType, subscriber); } - /** @see EventService#subscribeExactly(Class,EventSubscriber) */ - public static boolean subscribeExactly(Class eventClass, EventSubscriber subscriber) { + /** @see EventService#subscribeExactly(Class,IEventSubscriber) */ + public static boolean subscribeExactly(Class eventClass, IEventSubscriber subscriber) { return EventServiceLocator.getEventBusService().subscribeExactly(eventClass, subscriber); } - /** @see EventService#subscribe(String,EventTopicSubscriber) */ - public static boolean subscribe(String topic, EventTopicSubscriber subscriber) { + /** @see EventService#subscribe(String,IEventTopicSubscriber) */ + public static boolean subscribe(String topic, IEventTopicSubscriber subscriber) { return EventServiceLocator.getEventBusService().subscribe(topic, subscriber); } - /** @see EventService#subscribe(Pattern,EventTopicSubscriber) */ - public static boolean subscribe(Pattern topicPattern, EventTopicSubscriber subscriber) { + /** @see EventService#subscribe(Pattern,IEventTopicSubscriber) */ + public static boolean subscribe(Pattern topicPattern, IEventTopicSubscriber subscriber) { return EventServiceLocator.getEventBusService().subscribe(topicPattern, subscriber); } - /** @see EventService#subscribeStrongly(Class,EventSubscriber) */ - public static boolean subscribeStrongly(Class eventClass, EventSubscriber subscriber) { + /** @see EventService#subscribeStrongly(Class,IEventSubscriber) */ + public static boolean subscribeStrongly(Class eventClass, IEventSubscriber subscriber) { return EventServiceLocator.getEventBusService().subscribeStrongly(eventClass, subscriber); } - /** @see EventService#subscribeExactlyStrongly(Class,EventSubscriber) */ - public static boolean subscribeExactlyStrongly(Class eventClass, EventSubscriber subscriber) { + /** @see EventService#subscribeExactlyStrongly(Class,IEventSubscriber) */ + public static boolean subscribeExactlyStrongly(Class eventClass, IEventSubscriber subscriber) { return EventServiceLocator.getEventBusService().subscribeExactlyStrongly(eventClass, subscriber); } - /** @see EventService#subscribeStrongly(String,EventTopicSubscriber) */ - public static boolean subscribeStrongly(String topic, EventTopicSubscriber subscriber) { + /** @see EventService#subscribeStrongly(String,IEventTopicSubscriber) */ + public static boolean subscribeStrongly(String topic, IEventTopicSubscriber subscriber) { return EventServiceLocator.getEventBusService().subscribeStrongly(topic, subscriber); } - /** @see EventService#subscribeStrongly(Pattern,EventTopicSubscriber) */ - public static boolean subscribeStrongly(Pattern topicPattern, EventTopicSubscriber subscriber) { + /** @see EventService#subscribeStrongly(Pattern,IEventTopicSubscriber) */ + public static boolean subscribeStrongly(Pattern topicPattern, IEventTopicSubscriber subscriber) { return EventServiceLocator.getEventBusService().subscribeStrongly(topicPattern, subscriber); } - /** @see EventService#unsubscribe(Class,EventSubscriber) */ - public static boolean unsubscribe(Class eventClass, EventSubscriber subscriber) { + /** @see EventService#unsubscribe(Class,IEventSubscriber) */ + public static boolean unsubscribe(Class eventClass, IEventSubscriber subscriber) { return EventServiceLocator.getEventBusService().unsubscribe(eventClass, subscriber); } - /** @see EventService#unsubscribeExactly(Class,EventSubscriber) */ - public static boolean unsubscribeExactly(Class eventClass, EventSubscriber subscriber) { + /** @see EventService#unsubscribeExactly(Class,IEventSubscriber) */ + public static boolean unsubscribeExactly(Class eventClass, IEventSubscriber subscriber) { return EventServiceLocator.getEventBusService().unsubscribeExactly(eventClass, subscriber); } - /** @see EventService#unsubscribe(String,EventTopicSubscriber) */ - public static boolean unsubscribe(String topic, EventTopicSubscriber subscriber) { + /** @see EventService#unsubscribe(String,IEventTopicSubscriber) */ + public static boolean unsubscribe(String topic, IEventTopicSubscriber subscriber) { return EventServiceLocator.getEventBusService().unsubscribe(topic, subscriber); } - /** @see EventService#unsubscribe(Pattern,EventTopicSubscriber) */ - public static boolean unsubscribe(Pattern topicPattern, EventTopicSubscriber subscriber) { + /** @see EventService#unsubscribe(Pattern,IEventTopicSubscriber) */ + public static boolean unsubscribe(Pattern topicPattern, IEventTopicSubscriber subscriber) { return EventServiceLocator.getEventBusService().unsubscribe(topicPattern, subscriber); } diff --git a/src/main/java/org/scijava/event/bushe/EventService.java b/src/main/java/org/scijava/event/bushe/EventService.java index 8bbc69fa3..6ead66e96 100644 --- a/src/main/java/org/scijava/event/bushe/EventService.java +++ b/src/main/java/org/scijava/event/bushe/EventService.java @@ -23,17 +23,17 @@ * The core interface. An EventService provides publish/subscribe services to a single JVM using Class-based and * String-based (i.e. "topic") publications and subscriptions. *

      - * In class-based pub/sub, {@link EventSubscriber}s subscribe to a type on an {@link EventService}, such + * In class-based pub/sub, {@link IEventSubscriber}s subscribe to a type on an {@link EventService}, such * as the {@link org.scijava.event.bushe.EventBus}, by providing a class, interface or generic type. The EventService * notifies subscribers when objects are published on the EventService with a matching type. Full class semantics are * respected. That is, if a subscriber subscribes to a class, the subscriber is notified if an object of * that class is publish or if an object of a subclass of that class is published. Likewise if a subscriber subscribes * to an interface, it will be notified if any object that implements that interface is published. Subscribers can - * subscribe "exactly" using {@link #subscribeExactly(Class, EventSubscriber)} so that they are notified only if an + * subscribe "exactly" using {@link #subscribeExactly(Class, IEventSubscriber)} so that they are notified only if an * object of the exact class is published (and will not be notified if subclasses are published, since this would not * be "exact") *

      - * In topic-based pub/sub, an object "payload" is published on a topic name (String). {@link EventTopicSubscriber}s subscribe + * In topic-based pub/sub, an object "payload" is published on a topic name (String). {@link IEventTopicSubscriber}s subscribe * to either the exact name of the topic or they may subscribe using a Regular Expression that is used to match topic * names. *

      @@ -112,8 +112,8 @@ * @see {@link ThreadSafeEventService} for the default implementation * @see {@link SwingEventService} for the Swing-safe implementation * @see {@link EventBus} for simple access to the Swing-safe implementation - * @see {@link org.scijava.event.bushe.annotation.EventSubscriber} for subscription annotations - * @see {@link org.scijava.event.bushe.annotation.EventTopicSubscriber} for subscription annotations + * @see {@link org.scijava.event.bushe.IEventSubscriber} for subscription annotations + * @see {@link org.scijava.event.bushe.IEventTopicSubscriber} for subscription annotations */ public interface EventService { @@ -127,10 +127,10 @@ public interface EventService { /** * Use this method to publish generified objects to subscribers of Types, i.e. subscribers that use - * {@link #subscribe(Type, EventSubscriber)}, and to publish to subscribers of the non-generic type. + * {@link #subscribe(Type, IEventSubscriber)}, and to publish to subscribers of the non-generic type. *

      * Due to generic type erasure, the type must be supplied by the caller. You can get a declared object's - * type by using the {@link org.scijava.event.bushe.generics.TypeReference} class. For Example: + * type by using the {@link org.scijava.event.bushe.TypeReference} class. For Example: *

           * TypeReference<List<Trade>> subscribingTypeReference = new TypeReference<List<Trade>>(){};
           * EventBus.subscribe(subscribingTypeReference.getType(), mySubscriber);
      @@ -181,14 +181,14 @@ public interface EventService {
           *
           * @return true if the subscriber was subscribed successfully, false otherwise
           */
      -   public boolean subscribe(Class eventClass, EventSubscriber subscriber);
      +   public boolean subscribe(Class eventClass, IEventSubscriber subscriber);
       
         /** 
          * Subscribe an EventSubscriber to publication of generic Types.
          * Subscribers will only be notified for publications using  {@link #publish(java.lang.reflect.Type, Object)}.
          * 

      * Due to generic type erasure, the type must be supplied by the publisher. You can get a declared object's - * type by using the {@link org.scijava.event.bushe.generics.TypeReference} class. For Example: + * type by using the {@link org.scijava.event.bushe.TypeReference} class. For Example: *

          * TypeReference<List<Trade>> subscribingTypeReference = new TypeReference<List<Trade>>(){};
          * EventBus.subscribe(subscribingTypeReference.getType(), mySubscriber);
      @@ -206,7 +206,7 @@ public interface EventService {
          * @param subscriber the subscriber to the type
          * @return true if a new subscription is made, false if it already existed
          */
      -   public boolean subscribe(Type type, EventSubscriber subscriber);
      +   public boolean subscribe(Type type, IEventSubscriber subscriber);
       
          /**
           * Subscribes an EventSubscriber to the publication of objects exactly matching a type.  Only a WeakReference
      @@ -227,7 +227,7 @@ public interface EventService {
           *
           * @return true if the subscriber was subscribed successfully, false otherwise
           */
      -   public boolean subscribeExactly(Class eventClass, EventSubscriber subscriber);
      +   public boolean subscribeExactly(Class eventClass, IEventSubscriber subscriber);
       
          /**
           * Subscribes an EventTopicSubscriber to the publication of a topic name.  Only a WeakReference
      @@ -247,7 +247,7 @@ public interface EventService {
           *
           * @return true if the subscriber was subscribed successfully, false otherwise
           */
      -   public boolean subscribe(String topic, EventTopicSubscriber subscriber);
      +   public boolean subscribe(String topic, IEventTopicSubscriber subscriber);
       
          /**
           * Subscribes an EventSubscriber to the publication of all the topic names that match a RegEx Pattern.  Only a
      @@ -267,67 +267,67 @@ public interface EventService {
           *
           * @return true if the subscriber was subscribed successfully, false otherwise
           */
      -   public boolean subscribe(Pattern topicPattern, EventTopicSubscriber subscriber);
      +   public boolean subscribe(Pattern topicPattern, IEventTopicSubscriber subscriber);
       
          /**
           * Subscribes an EventSubscriber to the publication of objects matching a type.
           * 

      - * The semantics are the same as {@link #subscribe(Class, EventSubscriber)}, except that the EventService holds + * The semantics are the same as {@link #subscribe(Class, IEventSubscriber)}, except that the EventService holds * a regularly reference, not a WeakReference. *

      - * The subscriber will remain subscribed until {@link #unsubscribe(Class,EventSubscriber)} is called. + * The subscriber will remain subscribed until {@link #unsubscribe(Class,IEventSubscriber)} is called. * * @param eventClass the class of published objects to listen to * @param subscriber The subscriber that will accept the events when published. * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribeStrongly(Class eventClass, EventSubscriber subscriber); + public boolean subscribeStrongly(Class eventClass, IEventSubscriber subscriber); /** * Subscribes an EventSubscriber to the publication of objects matching a type exactly. *

      - * The semantics are the same as {@link #subscribeExactly(Class, EventSubscriber)}, except that the EventService + * The semantics are the same as {@link #subscribeExactly(Class, IEventSubscriber)}, except that the EventService * holds a regularly reference, not a WeakReference. *

      - * The subscriber will remain subscribed until {@link #unsubscribe(Class,EventSubscriber)} is called. + * The subscriber will remain subscribed until {@link #unsubscribe(Class,IEventSubscriber)} is called. * * @param eventClass the class of published objects to listen to * @param subscriber The subscriber that will accept the events when published. * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribeExactlyStrongly(Class eventClass, EventSubscriber subscriber); + public boolean subscribeExactlyStrongly(Class eventClass, IEventSubscriber subscriber); /** * Subscribes a subscriber to an event topic name. *

      - * The semantics are the same as {@link #subscribe(String, EventTopicSubscriber)}, except that the EventService + * The semantics are the same as {@link #subscribe(String, IEventTopicSubscriber)}, except that the EventService * holds a regularly reference, not a WeakReference. *

      - * The subscriber will remain subscribed until {@link #unsubscribe(String,EventTopicSubscriber)} is called. + * The subscriber will remain subscribed until {@link #unsubscribe(String,IEventTopicSubscriber)} is called. * * @param topic the name of the topic listened to * @param subscriber The topic subscriber that will accept the events when published. * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribeStrongly(String topic, EventTopicSubscriber subscriber); + public boolean subscribeStrongly(String topic, IEventTopicSubscriber subscriber); /** * Subscribes a subscriber to all the event topic names that match a RegEx expression. *

      - * The semantics are the same as {@link #subscribe(java.util.regex.Pattern, EventTopicSubscriber)}, except that the + * The semantics are the same as {@link #subscribe(java.util.regex.Pattern, IEventTopicSubscriber)}, except that the * EventService holds a regularly reference, not a WeakReference. *

      - * The subscriber will remain subscribed until {@link #unsubscribe(String,EventTopicSubscriber)} is called. + * The subscriber will remain subscribed until {@link #unsubscribe(String,IEventTopicSubscriber)} is called. * * @param topicPattern the name of the topic listened to * @param subscriber The topic subscriber that will accept the events when published. * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribeStrongly(Pattern topicPattern, EventTopicSubscriber subscriber); + public boolean subscribeStrongly(Pattern topicPattern, IEventTopicSubscriber subscriber); /** * Stop the subscription for a subscriber that is subscribed to a class. @@ -337,7 +337,7 @@ public interface EventService { * * @return true if the subscriber was subscribed to the event, false if it wasn't */ - public boolean unsubscribe(Class eventClass, EventSubscriber subscriber); + public boolean unsubscribe(Class eventClass, IEventSubscriber subscriber); /** * Stop the subscription for a subscriber that is subscribed to an exact class. @@ -347,7 +347,7 @@ public interface EventService { * * @return true if the subscriber was subscribed to the event, false if it wasn't */ - public boolean unsubscribeExactly(Class eventClass, EventSubscriber subscriber); + public boolean unsubscribeExactly(Class eventClass, IEventSubscriber subscriber); /** * Stop the subscription for a subscriber that is subscribed to an event topic. @@ -357,7 +357,7 @@ public interface EventService { * * @return true if the subscriber was subscribed to the event, false if it wasn't */ - public boolean unsubscribe(String topic, EventTopicSubscriber subscriber); + public boolean unsubscribe(String topic, IEventTopicSubscriber subscriber); /** * Stop the subscription for a subscriber that is subscribed to event topics via a Pattern. @@ -367,7 +367,7 @@ public interface EventService { * * @return true if the subscriber was subscribed to the event, false if it wasn't */ - public boolean unsubscribe(Pattern topicPattern, EventTopicSubscriber subscriber); + public boolean unsubscribe(Pattern topicPattern, IEventTopicSubscriber subscriber); /** * Subscribes a VetoEventListener to publication of event matching a class. Only a WeakReference to the diff --git a/src/main/java/org/scijava/event/bushe/EventSubscriber.java b/src/main/java/org/scijava/event/bushe/EventSubscriber.java index 03e8f9227..1a1e89d34 100644 --- a/src/main/java/org/scijava/event/bushe/EventSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/EventSubscriber.java @@ -1,35 +1,106 @@ +package org.scijava.event.bushe; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + /** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * An Annotation for subscribing to EventService Events. + *

      + * This annotation simplifies much of the repetitive boilerplate used for subscribing to EventService Events. + *

      + * Instead of this: + *

      + * public class MyAppController implements EventSubscriber {
      + *   public MyAppController {
      + *      EventBus.subscribe(AppClosingEvent.class, this);
      + *   }
      + *   public void onEvent(EventServiceEvent event) {
      + *      AppClosingEvent appClosingEvent = (AppClosingEvent)event;
      + *      //do something
      + *   }
      + * }
      + * 
      + * You can do this: + *
      + * public class MyAppController {  //no interface necessary
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//if not using AOP
      + *   }
      + *   @EventSubscriber
      + *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {//Use your own method name with typesafety
      + *      //do something
      + *   }
      + * }
      + * 
      + *

      + * That's pretty good, but when the controller does more, annotations are even nicer. + *

      + * public class MyAppController implements EventSubscriber {
      + *   public MyAppController {
      + *      EventBus.subscribe(AppStartingEvent.class, this);
      + *      EventBus.subscribe(AppClosingEvent.class, this);
      + *   }
      + *   public void onEvent(EventServiceEvent event) {
      + *      //wicked bad pattern, but we have to this
      + *      //...or create multiple subscriber classes and hold instances of them fields, which is even more verbose...
      + *      if (event instanceof AppStartingEvent) {
      + *         onAppStartingEvent((AppStartingEvent)event);
      + *      } else (event instanceof AppClosingEvent) {
      + *         onAppStartingEvent((AppClosingEvent)event);
      + *      }
        *
      - * Licensed under the Apache License, Version 2.0 (the "License");
      - * you may not use this file except in compliance with the License.
      - * You may obtain a copy of the License at
      + *   }
        *
      - * http://www.apache.org/licenses/LICENSE-2.0
      + *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
      + *      //do something
      + *   }
        *
      - * Unless required by applicable law or agreed to in writing, software
      - * distributed under the License is distributed on an "AS IS" BASIS,
      - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      - * See the License for the specific language governing permissions and
      - * limitations under the License.
      + *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
      + *      //do something
      + *   }
      + * }
      + * 
      + * You can do this: + *
      + * public class MyAppController {
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EventSubscriber(eventClass=AppStartingEvent.class)
      + *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
      + *      //do something
      + *   }
      + *   @EventSubscriber(eventClass=AppAppClosingEvent.class)
      + *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
      + *      //do something
      + *   }
      + * }
      + * 
      + * Brief, clear, and easy. */ -package org.scijava.event.bushe; +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface EventSubscriber { + /** The class to subscribe to, if not specified, a subscription is created for the type of the method parameter. */ + Class eventClass() default UseTheClassOfTheAnnotatedMethodsParameter.class; -/** - * Callback interface for class-based subscribers of an {@link EventService}. - * - * @author Michael Bushe michael@bushe.com - */ -public interface EventSubscriber { + /** Determines the order in which this subscriber is called, default is FIFO.*/ + int priority() default 0; + + /** Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ + boolean exact() default false; + + /** Whether to subscribe weakly or strongly. */ + ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ + String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; /** - * Handle a published event.

      The EventService calls this method on each publication of an object that matches the - * class or interface passed to one of the EventService's class-based subscribe methods, specifically, {@link - * EventService#subscribe(Class,EventSubscriber)} {@link EventService#subscribeExactly(Class,EventSubscriber)} - * {@link EventService#subscribeStrongly(Class,EventSubscriber)} and {@link EventService#subscribeExactlyStrongly(Class, - *EventSubscriber)}. - * - * @param event The Object that is being published. + * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the + * service needs to be created, it must have a default constructor. */ - public void onEvent(T event); + Class autoCreateEventServiceClass() default ThreadSafeEventService.class; } diff --git a/src/main/java/org/scijava/event/bushe/annotation/EventTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java similarity index 86% rename from src/main/java/org/scijava/event/bushe/annotation/EventTopicPatternSubscriber.java rename to src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java index 3611d2c79..8be245312 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/EventTopicPatternSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java @@ -1,14 +1,10 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventServiceLocator; -import org.scijava.event.bushe.ThreadSafeEventService; - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface EventTopicPatternSubscriber { diff --git a/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java index dbcd8bd87..f47a64ca8 100644 --- a/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java @@ -1,38 +1,104 @@ +package org.scijava.event.bushe; + + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + /** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * An Annotation for subscribing to EventService Topics. + *

      + * This annotation simplifies much of the repetitive boilerplate used for subscribing to EventService Topics. + *

      + * Instead of this: + *

      + * public class MyAppController implements EventTopicSubscriber {
      + *   public MyAppController {
      + *      EventBus.subscribe("AppClosing", this);
      + *   }
      + *   public void onEvent(String topic, Object data) {
      + *      JComponent source = (JComponent)data;
      + *      //do something
      + *   }
      + * }
      + * 
      + * You can do this: + *
      + * public class MyAppController {  //no interface necessary
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EventTopicSubscriber{topic="AppClosingEvent"}
      + *   public void onAppClosing(String topic, Object data) {
      + *      //do something
      + *   }
      + * }
      + * 
      + *

      + * That's pretty good, but when the controller does more, annotations are even nicer. + *

      + * public class MyAppController implements EventTopicSubscriber {
      + *   public MyAppController {
      + *      EventBus.subscribe("AppStartingEvent", this);
      + *      EventBus.subscribe("AppClosingEvent", this);
      + *   }
      + *   public void onEvent(String topic, Object data) {
      + *      //wicked bad pattern, but we have to this
      + *      //...or create multiple subscriber classes and hold instances of them fields, which is even more verbose...
      + *      if ("AppStartingEvent".equals(topic)) {
      + *         onAppStartingEvent((JComponent)data);
      + *      } else ("AppClosingEvent".equals(topic)) {
      + *         onAppClosingEvent((JComponet)data);
      + *      }
        *
      - * Licensed under the Apache License, Version 2.0 (the "License");
      - * you may not use this file except in compliance with the License.
      - * You may obtain a copy of the License at
      + *   }
        *
      - * http://www.apache.org/licenses/LICENSE-2.0
      + *   public void onAppStartingEvent(JComponent requestor) {
      + *      //do something
      + *   }
        *
      - * Unless required by applicable law or agreed to in writing, software
      - * distributed under the License is distributed on an "AS IS" BASIS,
      - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      - * See the License for the specific language governing permissions and
      - * limitations under the License.
      + *   public void onAppClosingEvent(JComponent requestor) {
      + *      //do something
      + *   }
      + * }
      + * 
      + * Instead of all that, you can do this: + *
      + * public class MyAppController {
      + *   public MyAppController {
      + *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      + *   }
      + *   @EventTopicSubscriber{topic="AppStartingEvent"}
      + *   public void onAppStartingEvent(Object data) {
      + *      //do something
      + *   }
      + *   @EventTopicSubscriber{topic="AppClosingEvent"}
      + *   public void onAppClosingEvent(Foo data) {
      + *      //do something
      + *   }
      + * }
      + * 
      + * Brief, clear, and easy. */ -package org.scijava.event.bushe; +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface EventTopicSubscriber { + /** The topic to subscribe to */ + String topic(); -/** - * Callback interface for topic-based subscribers of an {@link EventService}. - * - * @author Michael Bushe michael@bushe.com - */ -public interface EventTopicSubscriber { + /** Whether to subscribe weakly or strongly. */ + ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; + + /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ + String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; + + /** Determines the order in which this subscriber is called, default is FIFO.*/ + int priority() default 0; /** - * Handle an event published on a topic. - *

      - * The EventService calls this method on each publication on a matching topic name passed to one of the - * EventService's topic-based subscribe methods, specifically, {@link EventService#subscribe(String, - *EventTopicSubscriber)} {@link EventService#subscribe(java.util.regex.Pattern,EventTopicSubscriber)} {@link - * EventService#subscribeStrongly(String,EventTopicSubscriber)} and {@link EventService#subscribeStrongly(java.util.regex.Pattern, - *EventTopicSubscriber)}. - * - * @param topic the name of the topic published on - * @param data the data object published on the topic + * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the + * service needs to be created, it must have a default constructor. */ - public void onEvent(String topic, T data); + Class autoCreateEventServiceClass() default ThreadSafeEventService.class; } diff --git a/src/main/java/org/scijava/event/bushe/IEventSubscriber.java b/src/main/java/org/scijava/event/bushe/IEventSubscriber.java new file mode 100644 index 000000000..26556c25b --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/IEventSubscriber.java @@ -0,0 +1,35 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * Callback interface for class-based subscribers of an {@link EventService}. + * + * @author Michael Bushe michael@bushe.com + */ +public interface IEventSubscriber { + + /** + * Handle a published event.

      The EventService calls this method on each publication of an object that matches the + * class or interface passed to one of the EventService's class-based subscribe methods, specifically, {@link + * EventService#subscribe(Class,EventSubscriber)} {@link EventService#subscribeExactly(Class,EventSubscriber)} + * {@link EventService#subscribeStrongly(Class,EventSubscriber)} and {@link EventService#subscribeExactlyStrongly(Class, + *EventSubscriber)}. + * + * @param event The Object that is being published. + */ + public void onEvent(T event); +} diff --git a/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java new file mode 100644 index 000000000..6a99f5f30 --- /dev/null +++ b/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java @@ -0,0 +1,38 @@ +/** + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.scijava.event.bushe; + +/** + * Callback interface for topic-based subscribers of an {@link EventService}. + * + * @author Michael Bushe michael@bushe.com + */ +public interface IEventTopicSubscriber { + + /** + * Handle an event published on a topic. + *

      + * The EventService calls this method on each publication on a matching topic name passed to one of the + * EventService's topic-based subscribe methods, specifically, {@link EventService#subscribe(String, + *EventTopicSubscriber)} {@link EventService#subscribe(java.util.regex.Pattern,EventTopicSubscriber)} {@link + * EventService#subscribeStrongly(String,EventTopicSubscriber)} and {@link EventService#subscribeStrongly(java.util.regex.Pattern, + *EventTopicSubscriber)}. + * + * @param topic the name of the topic published on + * @param data the data object published on the topic + */ + public void onEvent(String topic, T data); +} diff --git a/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java b/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java index ea90a6425..8ebe233c7 100644 --- a/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java @@ -2,7 +2,7 @@ /** * This is a convenience interface, particularly for inner classes, that implements - * {@link EventSubscriber} and {@link Prioritized}. + * {@link IEventSubscriber} and {@link Prioritized}. */ -public interface PrioritizedEventSubscriber extends EventSubscriber, Prioritized { +public interface PrioritizedEventSubscriber extends IEventSubscriber, Prioritized { } diff --git a/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java index 821259dec..63732799e 100644 --- a/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java @@ -2,7 +2,7 @@ /** * This is a convenience interface, particularly for inner classes, that implements - * {@link org.scijava.event.bushe.EventTopicSubscriber} and {@link org.scijava.event.bushe.Prioritized}. + * {@link org.scijava.event.bushe.IEventTopicSubscriber} and {@link org.scijava.event.bushe.Prioritized}. */ -public interface PrioritizedEventTopicSubscriber extends EventTopicSubscriber, Prioritized { +public interface PrioritizedEventTopicSubscriber extends IEventTopicSubscriber, Prioritized { } \ No newline at end of file diff --git a/src/main/java/org/scijava/event/bushe/ProxySubscriber.java b/src/main/java/org/scijava/event/bushe/ProxySubscriber.java index 23ecaf8a0..a80cc3bf1 100644 --- a/src/main/java/org/scijava/event/bushe/ProxySubscriber.java +++ b/src/main/java/org/scijava/event/bushe/ProxySubscriber.java @@ -15,8 +15,6 @@ */ package org.scijava.event.bushe; -import org.scijava.event.bushe.annotation.ReferenceStrength; - /** * An interface that can be implemented when proxies are used for subscription, not needed in normal usage. When an * unsubscribe method is called on an EventService, the EventService is required to check if any of subscribed objects diff --git a/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java similarity index 97% rename from src/main/java/org/scijava/event/bushe/annotation/ProxyTopicPatternSubscriber.java rename to src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java index c3a65d33d..478665f25 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicPatternSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java @@ -1,10 +1,8 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.reflect.Method; import java.util.regex.Pattern; -import org.scijava.event.bushe.EventService; - /** * A Proxy Subscriber for Annotations that use topic patterns */ diff --git a/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java similarity index 96% rename from src/main/java/org/scijava/event/bushe/annotation/ProxyTopicSubscriber.java rename to src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java index 8b900c8fe..d2699b465 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/ProxyTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java @@ -1,18 +1,15 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.VetoTopicEventListener; - /** A class that subscribes to an EventService on behalf of another object. * This class is not used directly (though you could), but rather through the use of the * {@link @org.scijava.event.bushe.annotation.EventTopicSubscriber}. Advanced EventBus * users could use this class in Aspect-Oriented code. Consider using the * {@link AnnotationProcessor} instead, it may suit your needs and be easier.*/ public class ProxyTopicSubscriber extends AbstractProxySubscriber - implements org.scijava.event.bushe.EventTopicSubscriber, VetoTopicEventListener { + implements org.scijava.event.bushe.IEventTopicSubscriber, VetoTopicEventListener { private String topic; /** diff --git a/src/main/java/org/scijava/event/bushe/annotation/ReferenceStrength.java b/src/main/java/org/scijava/event/bushe/ReferenceStrength.java similarity index 77% rename from src/main/java/org/scijava/event/bushe/annotation/ReferenceStrength.java rename to src/main/java/org/scijava/event/bushe/ReferenceStrength.java index 739255b3f..15e7a7eb5 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/ReferenceStrength.java +++ b/src/main/java/org/scijava/event/bushe/ReferenceStrength.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; /** * The two kinds of references that are used in the EventBus. diff --git a/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicEventSubscriber.java b/src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java similarity index 86% rename from src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicEventSubscriber.java rename to src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java index fb54e4432..878f2eb7c 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicEventSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java @@ -1,13 +1,9 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventServiceLocator; -import org.scijava.event.bushe.ThreadSafeEventService; - /** * A subscriber to a topic that is determined at runtime. */ diff --git a/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicPatternEventSubscriber.java b/src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java similarity index 87% rename from src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicPatternEventSubscriber.java rename to src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java index 8e92cf22d..168574556 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/RuntimeTopicPatternEventSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java @@ -1,14 +1,10 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventServiceLocator; -import org.scijava.event.bushe.ThreadSafeEventService; - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface RuntimeTopicPatternEventSubscriber { diff --git a/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java b/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java index 41dee9629..6bfaef918 100644 --- a/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java +++ b/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java @@ -27,7 +27,7 @@ public class SubscriberTimingEvent extends AbstractEventServiceEvent { private Long end; private Long timeLimitMilliseconds; private Object event; - private EventSubscriber subscriber; + private IEventSubscriber subscriber; private VetoEventListener vetoEventListener; private String stringified; @@ -44,7 +44,7 @@ public class SubscriberTimingEvent extends AbstractEventServiceEvent { * @param vetoEventListener the vetoEventListener that took too long, can be null if the eventListener is not null */ public SubscriberTimingEvent(Object source, Long start, Long end, Long timeLimitMilliseconds, - Object event, EventSubscriber subscriber, VetoEventListener vetoEventListener) { + Object event, IEventSubscriber subscriber, VetoEventListener vetoEventListener) { super(source); this.start = start; this.end = end; @@ -91,7 +91,7 @@ public Object getEvent() { * @return subscriber the event subscriber that went over the time limit, can be null if vetoEventListener is not * null */ - public EventSubscriber getSubscriber() { + public IEventSubscriber getSubscriber() { return subscriber; } diff --git a/src/main/java/org/scijava/event/bushe/exception/SwingException.java b/src/main/java/org/scijava/event/bushe/SwingException.java similarity index 99% rename from src/main/java/org/scijava/event/bushe/exception/SwingException.java rename to src/main/java/org/scijava/event/bushe/SwingException.java index dfc3a048d..68249e45a 100644 --- a/src/main/java/org/scijava/event/bushe/exception/SwingException.java +++ b/src/main/java/org/scijava/event/bushe/SwingException.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.scijava.event.bushe.exception; +package org.scijava.event.bushe; import java.io.PrintStream; import java.io.PrintWriter; diff --git a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java index 4f78f02a7..1a0dcf585 100644 --- a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java +++ b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java @@ -34,8 +34,6 @@ import java.util.regex.Pattern; import org.scijava.event.bushe.Logger.Level; -import org.scijava.event.bushe.annotation.ReferenceStrength; -import org.scijava.event.bushe.exception.SwingException; /** * A thread-safe EventService implementation. @@ -250,7 +248,7 @@ public ThreadSafeEventService(Long timeThresholdForEventTimingEventPublication, this.timeThresholdForEventTimingEventPublication = timeThresholdForEventTimingEventPublication; if (subscribeTimingEventsInternally) { //Listen to timing events and log them - subscribeStrongly(SubscriberTimingEvent.class, new EventSubscriber() { + subscribeStrongly(SubscriberTimingEvent.class, new IEventSubscriber() { public void onEvent(Object event) { subscribeTiming((SubscriberTimingEvent) event); } @@ -334,8 +332,8 @@ public void setCleanupPeriodMS(Long cleanupPeriodMS) { } } - /** @see EventService#subscribe(Class,EventSubscriber) */ - public boolean subscribe(Class cl, EventSubscriber eh) { + /** @see EventService#subscribe(Class,IEventSubscriber) */ + public boolean subscribe(Class cl, IEventSubscriber eh) { if (cl == null) { throw new IllegalArgumentException("Event class must not be null"); } @@ -345,16 +343,16 @@ public boolean subscribe(Class cl, EventSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing by class, class:" + cl + ", subscriber:" + eh); } - return subscribe(cl, subscribersByEventClass, new WeakReference(eh)); + return subscribe(cl, subscribersByEventClass, new WeakReference(eh)); } - /** @see EventService#subscribe(java.lang.reflect.Type, EventSubscriber) */ - public boolean subscribe(Type type, EventSubscriber eh) { - return subscribe(type, subscribersByEventType, new WeakReference(eh)); + /** @see EventService#subscribe(java.lang.reflect.Type, IEventSubscriber) */ + public boolean subscribe(Type type, IEventSubscriber eh) { + return subscribe(type, subscribersByEventType, new WeakReference(eh)); } - /** @see EventService#subscribeExactly(Class,EventSubscriber) */ - public boolean subscribeExactly(Class cl, EventSubscriber eh) { + /** @see EventService#subscribeExactly(Class,IEventSubscriber) */ + public boolean subscribeExactly(Class cl, IEventSubscriber eh) { if (cl == null) { throw new IllegalArgumentException("Event class must not be null"); } @@ -364,11 +362,11 @@ public boolean subscribeExactly(Class cl, EventSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing by class, class:" + cl + ", subscriber:" + eh); } - return subscribe(cl, subscribersByExactEventClass, new WeakReference(eh)); + return subscribe(cl, subscribersByExactEventClass, new WeakReference(eh)); } - /** @see EventService#subscribe(String,EventTopicSubscriber) */ - public boolean subscribe(String topic, EventTopicSubscriber eh) { + /** @see EventService#subscribe(String,IEventTopicSubscriber) */ + public boolean subscribe(String topic, IEventTopicSubscriber eh) { if (topic == null) { throw new IllegalArgumentException("Topic must not be null"); } @@ -378,11 +376,11 @@ public boolean subscribe(String topic, EventTopicSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing by topic name, name:" + topic + ", subscriber:" + eh); } - return subscribe(topic, subscribersByTopic, new WeakReference(eh)); + return subscribe(topic, subscribersByTopic, new WeakReference(eh)); } - /** @see EventService#subscribe(Pattern,EventTopicSubscriber) */ - public boolean subscribe(Pattern pat, EventTopicSubscriber eh) { + /** @see EventService#subscribe(Pattern,IEventTopicSubscriber) */ + public boolean subscribe(Pattern pat, IEventTopicSubscriber eh) { if (pat == null) { throw new IllegalArgumentException("Pattern must not be null"); } @@ -393,11 +391,11 @@ public boolean subscribe(Pattern pat, EventTopicSubscriber eh) { LOG.debug("Subscribing by pattern, pattern:" + pat + ", subscriber:" + eh); } PatternWrapper patternWrapper = new PatternWrapper(pat); - return subscribe(patternWrapper, subscribersByTopicPattern, new WeakReference(eh)); + return subscribe(patternWrapper, subscribersByTopicPattern, new WeakReference(eh)); } - /** @see EventService#subscribeStrongly(Class,EventSubscriber) */ - public boolean subscribeStrongly(Class cl, EventSubscriber eh) { + /** @see EventService#subscribeStrongly(Class,IEventSubscriber) */ + public boolean subscribeStrongly(Class cl, IEventSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing weakly by class, class:" + cl + ", subscriber:" + eh); } @@ -407,8 +405,8 @@ public boolean subscribeStrongly(Class cl, EventSubscriber eh) { return subscribe(cl, subscribersByEventClass, eh); } - /** @see EventService#subscribeExactlyStrongly(Class,EventSubscriber) */ - public boolean subscribeExactlyStrongly(Class cl, EventSubscriber eh) { + /** @see EventService#subscribeExactlyStrongly(Class,IEventSubscriber) */ + public boolean subscribeExactlyStrongly(Class cl, IEventSubscriber eh) { if (cl == null) { throw new IllegalArgumentException("Event class must not be null"); } @@ -421,8 +419,8 @@ public boolean subscribeExactlyStrongly(Class cl, EventSubscriber eh) { return subscribe(cl, subscribersByExactEventClass, eh); } - /** @see EventService#subscribeStrongly(String,EventTopicSubscriber) */ - public boolean subscribeStrongly(String name, EventTopicSubscriber eh) { + /** @see EventService#subscribeStrongly(String,IEventTopicSubscriber) */ + public boolean subscribeStrongly(String name, IEventTopicSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing weakly by topic name, name:" + name + ", subscriber:" + eh); } @@ -432,8 +430,8 @@ public boolean subscribeStrongly(String name, EventTopicSubscriber eh) { return subscribe(name, subscribersByTopic, eh); } - /** @see EventService#subscribeStrongly(Pattern,EventTopicSubscriber) */ - public boolean subscribeStrongly(Pattern pat, EventTopicSubscriber eh) { + /** @see EventService#subscribeStrongly(Pattern,IEventTopicSubscriber) */ + public boolean subscribeStrongly(Pattern pat, IEventTopicSubscriber eh) { if (pat == null) { throw new IllegalArgumentException("Pattern must not be null"); } @@ -675,30 +673,30 @@ protected boolean subscribe(final Object classTopicOrPatternWrapper, final Map diff --git a/src/main/java/org/scijava/event/bushe/annotation/VetoTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java similarity index 92% rename from src/main/java/org/scijava/event/bushe/annotation/VetoTopicPatternSubscriber.java rename to src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java index 6fddb9b02..bf6e9134c 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/VetoTopicPatternSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java @@ -1,14 +1,10 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventServiceLocator; -import org.scijava.event.bushe.ThreadSafeEventService; - /** * An Annotation for adding VetoTopicPatternListener subscriptions to EventService Events. *

      diff --git a/src/main/java/org/scijava/event/bushe/annotation/VetoTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java similarity index 92% rename from src/main/java/org/scijava/event/bushe/annotation/VetoTopicSubscriber.java rename to src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java index 1ff069b69..630930660 100644 --- a/src/main/java/org/scijava/event/bushe/annotation/VetoTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java @@ -1,14 +1,10 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventServiceLocator; -import org.scijava.event.bushe.ThreadSafeEventService; - /** * An Annotation for adding VetoTopicListener subscriptions to EventService Events. *

      diff --git a/src/main/java/org/scijava/event/bushe/annotation/EventSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/EventSubscriber.java deleted file mode 100644 index e75b79568..000000000 --- a/src/main/java/org/scijava/event/bushe/annotation/EventSubscriber.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.scijava.event.bushe.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventServiceLocator; -import org.scijava.event.bushe.ThreadSafeEventService; - -/** - * An Annotation for subscribing to EventService Events. - *

      - * This annotation simplifies much of the repetitive boilerplate used for subscribing to EventService Events. - *

      - * Instead of this: - *

      - * public class MyAppController implements EventSubscriber {
      - *   public MyAppController {
      - *      EventBus.subscribe(AppClosingEvent.class, this);
      - *   }
      - *   public void onEvent(EventServiceEvent event) {
      - *      AppClosingEvent appClosingEvent = (AppClosingEvent)event;
      - *      //do something
      - *   }
      - * }
      - * 
      - * You can do this: - *
      - * public class MyAppController {  //no interface necessary
      - *   public MyAppController {
      - *       AnnotationProcessor.process(this);//if not using AOP
      - *   }
      - *   @EventSubscriber
      - *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {//Use your own method name with typesafety
      - *      //do something
      - *   }
      - * }
      - * 
      - *

      - * That's pretty good, but when the controller does more, annotations are even nicer. - *

      - * public class MyAppController implements EventSubscriber {
      - *   public MyAppController {
      - *      EventBus.subscribe(AppStartingEvent.class, this);
      - *      EventBus.subscribe(AppClosingEvent.class, this);
      - *   }
      - *   public void onEvent(EventServiceEvent event) {
      - *      //wicked bad pattern, but we have to this
      - *      //...or create multiple subscriber classes and hold instances of them fields, which is even more verbose...
      - *      if (event instanceof AppStartingEvent) {
      - *         onAppStartingEvent((AppStartingEvent)event);
      - *      } else (event instanceof AppClosingEvent) {
      - *         onAppStartingEvent((AppClosingEvent)event);
      - *      }
      - *
      - *   }
      - *
      - *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
      - *      //do something
      - *   }
      - *
      - *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
      - *      //do something
      - *   }
      - * }
      - * 
      - * You can do this: - *
      - * public class MyAppController {
      - *   public MyAppController {
      - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      - *   }
      - *   @EventSubscriber(eventClass=AppStartingEvent.class)
      - *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
      - *      //do something
      - *   }
      - *   @EventSubscriber(eventClass=AppAppClosingEvent.class)
      - *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
      - *      //do something
      - *   }
      - * }
      - * 
      - * Brief, clear, and easy. - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface EventSubscriber { - /** The class to subscribe to, if not specified, a subscription is created for the type of the method parameter. */ - Class eventClass() default UseTheClassOfTheAnnotatedMethodsParameter.class; - - /** Determines the order in which this subscriber is called, default is FIFO.*/ - int priority() default 0; - - /** Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ - boolean exact() default false; - - /** Whether to subscribe weakly or strongly. */ - ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ - String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** - * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the - * service needs to be created, it must have a default constructor. - */ - Class autoCreateEventServiceClass() default ThreadSafeEventService.class; -} diff --git a/src/main/java/org/scijava/event/bushe/annotation/EventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/annotation/EventTopicSubscriber.java deleted file mode 100644 index 5f99c4895..000000000 --- a/src/main/java/org/scijava/event/bushe/annotation/EventTopicSubscriber.java +++ /dev/null @@ -1,108 +0,0 @@ -package org.scijava.event.bushe.annotation; - - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import org.scijava.event.bushe.EventService; -import org.scijava.event.bushe.EventServiceLocator; -import org.scijava.event.bushe.ThreadSafeEventService; - -/** - * An Annotation for subscribing to EventService Topics. - *

      - * This annotation simplifies much of the repetitive boilerplate used for subscribing to EventService Topics. - *

      - * Instead of this: - *

      - * public class MyAppController implements EventTopicSubscriber {
      - *   public MyAppController {
      - *      EventBus.subscribe("AppClosing", this);
      - *   }
      - *   public void onEvent(String topic, Object data) {
      - *      JComponent source = (JComponent)data;
      - *      //do something
      - *   }
      - * }
      - * 
      - * You can do this: - *
      - * public class MyAppController {  //no interface necessary
      - *   public MyAppController {
      - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      - *   }
      - *   @EventTopicSubscriber{topic="AppClosingEvent"}
      - *   public void onAppClosing(String topic, Object data) {
      - *      //do something
      - *   }
      - * }
      - * 
      - *

      - * That's pretty good, but when the controller does more, annotations are even nicer. - *

      - * public class MyAppController implements EventTopicSubscriber {
      - *   public MyAppController {
      - *      EventBus.subscribe("AppStartingEvent", this);
      - *      EventBus.subscribe("AppClosingEvent", this);
      - *   }
      - *   public void onEvent(String topic, Object data) {
      - *      //wicked bad pattern, but we have to this
      - *      //...or create multiple subscriber classes and hold instances of them fields, which is even more verbose...
      - *      if ("AppStartingEvent".equals(topic)) {
      - *         onAppStartingEvent((JComponent)data);
      - *      } else ("AppClosingEvent".equals(topic)) {
      - *         onAppClosingEvent((JComponet)data);
      - *      }
      - *
      - *   }
      - *
      - *   public void onAppStartingEvent(JComponent requestor) {
      - *      //do something
      - *   }
      - *
      - *   public void onAppClosingEvent(JComponent requestor) {
      - *      //do something
      - *   }
      - * }
      - * 
      - * Instead of all that, you can do this: - *
      - * public class MyAppController {
      - *   public MyAppController {
      - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      - *   }
      - *   @EventTopicSubscriber{topic="AppStartingEvent"}
      - *   public void onAppStartingEvent(Object data) {
      - *      //do something
      - *   }
      - *   @EventTopicSubscriber{topic="AppClosingEvent"}
      - *   public void onAppClosingEvent(Foo data) {
      - *      //do something
      - *   }
      - * }
      - * 
      - * Brief, clear, and easy. - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface EventTopicSubscriber { - /** The topic to subscribe to */ - String topic(); - - /** Whether to subscribe weakly or strongly. */ - ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ - String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** Determines the order in which this subscriber is called, default is FIFO.*/ - int priority() default 0; - - /** - * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the - * service needs to be created, it must have a default constructor. - */ - Class autoCreateEventServiceClass() default ThreadSafeEventService.class; -} diff --git a/src/test/java/org/scijava/event/bushe/annotation/AbstractSubscriber.java b/src/test/java/org/scijava/event/bushe/AbstractSubscriber.java similarity index 94% rename from src/test/java/org/scijava/event/bushe/annotation/AbstractSubscriber.java rename to src/test/java/org/scijava/event/bushe/AbstractSubscriber.java index 01f71125f..1666a0e20 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/AbstractSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/AbstractSubscriber.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; /** * Intended to answer this post: diff --git a/src/test/java/org/scijava/event/bushe/annotation/AnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/AnnotatedEventSubscriber.java similarity index 95% rename from src/test/java/org/scijava/event/bushe/annotation/AnnotatedEventSubscriber.java rename to src/test/java/org/scijava/event/bushe/AnnotatedEventSubscriber.java index 4e5db4945..182e26e7a 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/AnnotatedEventSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/AnnotatedEventSubscriber.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.io.File; import java.util.Collection; @@ -8,8 +8,6 @@ import javax.swing.JComponent; import javax.swing.JToggleButton; -import org.scijava.event.bushe.ThreadSafeEventService; - /** Test class for class-based subscriptions */ public class AnnotatedEventSubscriber { static int timesColorChanged = 0; diff --git a/src/test/java/org/scijava/event/bushe/annotation/AnnotatedVetoSubscriber.java b/src/test/java/org/scijava/event/bushe/AnnotatedVetoSubscriber.java similarity index 95% rename from src/test/java/org/scijava/event/bushe/annotation/AnnotatedVetoSubscriber.java rename to src/test/java/org/scijava/event/bushe/AnnotatedVetoSubscriber.java index 6c82ec00f..817df28b7 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/AnnotatedVetoSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/AnnotatedVetoSubscriber.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.io.File; import java.util.Collection; @@ -8,8 +8,6 @@ import javax.swing.JComponent; import javax.swing.JToggleButton; -import org.scijava.event.bushe.ThreadSafeEventService; - /** Test class for class-based subscriptions. * Does not like null, empty, red or cherry */ public class AnnotatedVetoSubscriber { diff --git a/src/test/java/org/scijava/event/bushe/annotation/AnotherAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/AnotherAnnotatedEventSubscriber.java similarity index 91% rename from src/test/java/org/scijava/event/bushe/annotation/AnotherAnnotatedEventSubscriber.java rename to src/test/java/org/scijava/event/bushe/AnotherAnnotatedEventSubscriber.java index de7a4c9f9..7f7f0c5e1 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/AnotherAnnotatedEventSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/AnotherAnnotatedEventSubscriber.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.util.List; import java.util.Collection; @@ -8,8 +8,6 @@ import javax.swing.JToggleButton; import javax.swing.JComponent; -import org.scijava.event.bushe.ThreadSafeEventService; - /** Test class for class-based subscriptions */ public class AnotherAnnotatedEventSubscriber { static int timesColorChanged = 0; diff --git a/src/test/java/org/scijava/event/bushe/annotation/AnotherDoubleAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/AnotherDoubleAnnotatedEventSubscriber.java similarity index 91% rename from src/test/java/org/scijava/event/bushe/annotation/AnotherDoubleAnnotatedEventSubscriber.java rename to src/test/java/org/scijava/event/bushe/AnotherDoubleAnnotatedEventSubscriber.java index 92bdf0534..928b67428 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/AnotherDoubleAnnotatedEventSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/AnotherDoubleAnnotatedEventSubscriber.java @@ -1,7 +1,7 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; -import java.util.List; import java.util.Collection; +import java.util.List; /** Test class for class-based subscriptions */ public class AnotherDoubleAnnotatedEventSubscriber { diff --git a/src/test/java/org/scijava/event/bushe/BadEventService.java b/src/test/java/org/scijava/event/bushe/BadEventService.java index 2046821a2..19cebe785 100644 --- a/src/test/java/org/scijava/event/bushe/BadEventService.java +++ b/src/test/java/org/scijava/event/bushe/BadEventService.java @@ -3,8 +3,8 @@ public class BadEventService extends ThreadSafeEventService { - /** @see org.scijava.event.bushe.EventService#subscribe(String,org.scijava.event.bushe.EventTopicSubscriber) */ - public boolean subscribe(String topic, EventTopicSubscriber eh) { + /** @see org.scijava.event.bushe.EventService#subscribe(String,org.scijava.event.bushe.IEventTopicSubscriber) */ + public boolean subscribe(String topic, IEventTopicSubscriber eh) { throw new RuntimeException("For testing"); } } diff --git a/src/test/java/org/scijava/event/bushe/annotation/ConcreteSubscriber.java b/src/test/java/org/scijava/event/bushe/ConcreteSubscriber.java similarity index 90% rename from src/test/java/org/scijava/event/bushe/annotation/ConcreteSubscriber.java rename to src/test/java/org/scijava/event/bushe/ConcreteSubscriber.java index 701ce66b1..129d71987 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/ConcreteSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/ConcreteSubscriber.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; /** * Intended to answer this post: diff --git a/src/test/java/org/scijava/event/bushe/generics/DataRequestEvent.java b/src/test/java/org/scijava/event/bushe/DataRequestEvent.java similarity index 75% rename from src/test/java/org/scijava/event/bushe/generics/DataRequestEvent.java rename to src/test/java/org/scijava/event/bushe/DataRequestEvent.java index 3ff5b4952..236b44fa8 100644 --- a/src/test/java/org/scijava/event/bushe/generics/DataRequestEvent.java +++ b/src/test/java/org/scijava/event/bushe/DataRequestEvent.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.generics; +package org.scijava.event.bushe; import java.util.List; diff --git a/src/test/java/org/scijava/event/bushe/annotation/DoubleAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/DoubleAnnotatedEventSubscriber.java similarity index 87% rename from src/test/java/org/scijava/event/bushe/annotation/DoubleAnnotatedEventSubscriber.java rename to src/test/java/org/scijava/event/bushe/DoubleAnnotatedEventSubscriber.java index f35ee065c..8448f28de 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/DoubleAnnotatedEventSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/DoubleAnnotatedEventSubscriber.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.util.List; import java.util.Collection; @@ -8,8 +8,6 @@ import javax.swing.JToggleButton; import javax.swing.JComponent; -import org.scijava.event.bushe.ThreadSafeEventService; - /** Test class for class-based subscriptions */ public class DoubleAnnotatedEventSubscriber { diff --git a/src/test/java/org/scijava/event/bushe/annotation/runtime/Factory.java b/src/test/java/org/scijava/event/bushe/Factory.java similarity index 85% rename from src/test/java/org/scijava/event/bushe/annotation/runtime/Factory.java rename to src/test/java/org/scijava/event/bushe/Factory.java index 03a33214d..546c3fb49 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/runtime/Factory.java +++ b/src/test/java/org/scijava/event/bushe/Factory.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation.runtime; +package org.scijava.event.bushe; public class Factory { diff --git a/src/test/java/org/scijava/event/bushe/generics/GenericReflection.java b/src/test/java/org/scijava/event/bushe/GenericReflection.java similarity index 98% rename from src/test/java/org/scijava/event/bushe/generics/GenericReflection.java rename to src/test/java/org/scijava/event/bushe/GenericReflection.java index 87e80c600..d3d2954b3 100644 --- a/src/test/java/org/scijava/event/bushe/generics/GenericReflection.java +++ b/src/test/java/org/scijava/event/bushe/GenericReflection.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.generics; +package org.scijava.event.bushe; import java.lang.reflect.TypeVariable; diff --git a/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber.java b/src/test/java/org/scijava/event/bushe/Issue15Subscriber.java similarity index 87% rename from src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber.java rename to src/test/java/org/scijava/event/bushe/Issue15Subscriber.java index ed22bf8d2..8bb257efd 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber.java +++ b/src/test/java/org/scijava/event/bushe/Issue15Subscriber.java @@ -1,13 +1,8 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.util.List; import javax.swing.SwingUtilities; -import org.scijava.event.bushe.annotation.AnnotationProcessor; -import org.scijava.event.bushe.annotation.EventSubscriber; -import org.scijava.event.bushe.annotation.EventTopicPatternSubscriber; -import org.scijava.event.bushe.annotation.EventTopicSubscriber; - /** * */ diff --git a/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber2.java b/src/test/java/org/scijava/event/bushe/Issue15Subscriber2.java similarity index 88% rename from src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber2.java rename to src/test/java/org/scijava/event/bushe/Issue15Subscriber2.java index 399542a86..5fbc7a162 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/Issue15Subscriber2.java +++ b/src/test/java/org/scijava/event/bushe/Issue15Subscriber2.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.util.List; import java.util.ArrayList; @@ -10,10 +10,6 @@ import javax.swing.JDialog; import javax.swing.JTextField; -import org.scijava.event.bushe.EventBus; -import org.scijava.event.bushe.annotation.AnnotationProcessor; -import org.scijava.event.bushe.annotation.EventSubscriber; - /** * */ diff --git a/src/test/java/org/scijava/event/bushe/annotation/MyData.java b/src/test/java/org/scijava/event/bushe/MyData.java similarity index 89% rename from src/test/java/org/scijava/event/bushe/annotation/MyData.java rename to src/test/java/org/scijava/event/bushe/MyData.java index 5ff45afcf..43be650c8 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/MyData.java +++ b/src/test/java/org/scijava/event/bushe/MyData.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; /** * Intended to answer this post: diff --git a/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicPatternSubscriber.java b/src/test/java/org/scijava/event/bushe/RuntimeTopicPatternSubscriber.java similarity index 77% rename from src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicPatternSubscriber.java rename to src/test/java/org/scijava/event/bushe/RuntimeTopicPatternSubscriber.java index be306c337..01af68b6b 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicPatternSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/RuntimeTopicPatternSubscriber.java @@ -1,10 +1,7 @@ -package org.scijava.event.bushe.annotation.runtime; +package org.scijava.event.bushe; import java.util.List; -import org.scijava.event.bushe.annotation.AnnotationProcessor; -import org.scijava.event.bushe.annotation.RuntimeTopicPatternEventSubscriber; - class RuntimeTopicPatternSubscriber implements SubscriberForTesting { private final String topicPattern; private long timesCalled; diff --git a/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicSubscriber.java b/src/test/java/org/scijava/event/bushe/RuntimeTopicSubscriber.java similarity index 76% rename from src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicSubscriber.java rename to src/test/java/org/scijava/event/bushe/RuntimeTopicSubscriber.java index c751b2dce..5cb27936a 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/runtime/RuntimeTopicSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/RuntimeTopicSubscriber.java @@ -1,7 +1,4 @@ -package org.scijava.event.bushe.annotation.runtime; - -import org.scijava.event.bushe.annotation.AnnotationProcessor; -import org.scijava.event.bushe.annotation.RuntimeTopicEventSubscriber; +package org.scijava.event.bushe; import java.util.List; diff --git a/src/test/java/org/scijava/event/bushe/annotation/StrongAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/StrongAnnotatedEventSubscriber.java similarity index 93% rename from src/test/java/org/scijava/event/bushe/annotation/StrongAnnotatedEventSubscriber.java rename to src/test/java/org/scijava/event/bushe/StrongAnnotatedEventSubscriber.java index 6d611f5f8..8ff4b5ffe 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/StrongAnnotatedEventSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/StrongAnnotatedEventSubscriber.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.io.File; diff --git a/src/test/java/org/scijava/event/bushe/annotation/StrongClassAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/StrongClassAnnotatedEventSubscriber.java similarity index 92% rename from src/test/java/org/scijava/event/bushe/annotation/StrongClassAnnotatedEventSubscriber.java rename to src/test/java/org/scijava/event/bushe/StrongClassAnnotatedEventSubscriber.java index f2fc954a3..3894195a5 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/StrongClassAnnotatedEventSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/StrongClassAnnotatedEventSubscriber.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.util.Collection; import java.util.List; diff --git a/src/test/java/org/scijava/event/bushe/SubscriberForTest.java b/src/test/java/org/scijava/event/bushe/SubscriberForTest.java index 2fac88e57..4d683ce4f 100644 --- a/src/test/java/org/scijava/event/bushe/SubscriberForTest.java +++ b/src/test/java/org/scijava/event/bushe/SubscriberForTest.java @@ -6,7 +6,7 @@ * @author Michael Bushe * @since Nov 19, 2005 11:01:06 PM */ -public class SubscriberForTest implements EventSubscriber { +public class SubscriberForTest implements IEventSubscriber { private boolean throwException; private Long waitTime; private EBTestCounter testDefaultEventService; diff --git a/src/test/java/org/scijava/event/bushe/annotation/runtime/SubscriberForTesting.java b/src/test/java/org/scijava/event/bushe/SubscriberForTesting.java similarity index 56% rename from src/test/java/org/scijava/event/bushe/annotation/runtime/SubscriberForTesting.java rename to src/test/java/org/scijava/event/bushe/SubscriberForTesting.java index 55c76dca4..a0a0fdf2c 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/runtime/SubscriberForTesting.java +++ b/src/test/java/org/scijava/event/bushe/SubscriberForTesting.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation.runtime; +package org.scijava.event.bushe; public interface SubscriberForTesting { long getTimesCalled(); diff --git a/src/test/java/org/scijava/event/bushe/annotation/TestAnnotationInAbstractClass.java b/src/test/java/org/scijava/event/bushe/TestAnnotationInAbstractClass.java similarity index 80% rename from src/test/java/org/scijava/event/bushe/annotation/TestAnnotationInAbstractClass.java rename to src/test/java/org/scijava/event/bushe/TestAnnotationInAbstractClass.java index 316d44a67..8f04ff56c 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/TestAnnotationInAbstractClass.java +++ b/src/test/java/org/scijava/event/bushe/TestAnnotationInAbstractClass.java @@ -1,9 +1,7 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import junit.framework.TestCase; import junit.framework.Assert; -import org.scijava.event.bushe.EventBus; -import org.scijava.event.bushe.EDTUtil; /** * Testing: diff --git a/src/test/java/org/scijava/event/bushe/TestContainerEventService.java b/src/test/java/org/scijava/event/bushe/TestContainerEventService.java index 5c7c6a322..9537e4349 100644 --- a/src/test/java/org/scijava/event/bushe/TestContainerEventService.java +++ b/src/test/java/org/scijava/event/bushe/TestContainerEventService.java @@ -50,7 +50,7 @@ public void testContainerEventServiceFinder() { EventService esBar = ContainerEventServiceFinder.getEventService(barButton); assertEquals(esBar, es); assertEquals(0, subscribedEvents.size()); - es.subscribe("FooTopic", new EventTopicSubscriber() { + es.subscribe("FooTopic", new IEventTopicSubscriber() { public void onEvent(String topic, Object evt) { subscribedEvents.add(evt); } @@ -79,7 +79,7 @@ public void testContainerEventServiceSupplier() { EventService esBar = ContainerEventServiceFinder.getEventService(barButton); assertTrue(esBar != es); assertEquals(0, subscribedEvents.size()); - es.subscribe("FooTopic", new EventTopicSubscriber() { + es.subscribe("FooTopic", new IEventTopicSubscriber() { public void onEvent(String topic, Object evt) { subscribedEvents.add(evt); } @@ -91,7 +91,7 @@ public void onEvent(String topic, Object evt) { public void testContainerEventServiceRegistrar() { //Set the lastEventObject whenever the event fires on the right Container Event Service - EventTopicSubscriber buttonContainerTopicSubscriber = new EventTopicSubscriber() { + IEventTopicSubscriber buttonContainerTopicSubscriber = new IEventTopicSubscriber() { public void onEvent(String topic, Object data) { System.out.println("topic=" + topic + ", data=" + data); setLastEventObject(data); @@ -104,7 +104,7 @@ public boolean shouldVeto(String topic, Object data) { } }; //Set the lastEventObject whenever the event fires on the right Container Event Service - EventSubscriber buttonContainerSubscriber = new EventSubscriber() { + IEventSubscriber buttonContainerSubscriber = new IEventSubscriber() { public void onEvent(Object data) { System.out.println("class=" + data); setLastEventObject(data); diff --git a/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java b/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java index 05f2d3ac2..975a491d1 100644 --- a/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java +++ b/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java @@ -29,15 +29,12 @@ import junit.framework.TestCase; -import org.scijava.event.bushe.generics.DataRequestEvent; -import org.scijava.event.bushe.generics.TypeReference; - /** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ public class TestDefaultEventService extends TestCase { private ThreadSafeEventService eventService = null; - private EventSubscriber eventSubscriber = null; - private EventTopicSubscriber eventTopicSubscriber; + private IEventSubscriber eventSubscriber = null; + private IEventTopicSubscriber eventTopicSubscriber; private SubscriberTimingEvent timing; private EBTestCounter testCounter = new EBTestCounter(); @@ -67,30 +64,30 @@ private Class getEventClass() { return createEvent().getClass(); } - private EventSubscriber createEventSubscriber(boolean throwException) { + private IEventSubscriber createEventSubscriber(boolean throwException) { return new SubscriberForTest(testCounter, throwException); } - private EventTopicSubscriber createEventTopicSubscriber(boolean throwException) { + private IEventTopicSubscriber createEventTopicSubscriber(boolean throwException) { return new TopicSubscriberForTest(testCounter, throwException); } - private EventSubscriber createEventSubscriber(Long waitTime) { + private IEventSubscriber createEventSubscriber(Long waitTime) { return new SubscriberForTest(testCounter, waitTime); } - private EventSubscriber getEventSubscriber() { + private IEventSubscriber getEventSubscriber() { return getEventSubscriber(true); } - private EventSubscriber getEventSubscriber(boolean throwException) { + private IEventSubscriber getEventSubscriber(boolean throwException) { if (eventSubscriber == null) { eventSubscriber = createEventSubscriber(throwException); } return eventSubscriber; } - private EventTopicSubscriber getEventTopicSubscriber() { + private IEventTopicSubscriber getEventTopicSubscriber() { if (eventTopicSubscriber == null) { eventTopicSubscriber = createEventTopicSubscriber(false); } @@ -98,7 +95,7 @@ private EventTopicSubscriber getEventTopicSubscriber() { } public void testTyping() { - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); Double doub = 3.14; Number numb = doub; @@ -122,7 +119,7 @@ public void testTyping() { public void testSubscribe() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = eventService.subscribe(getEventClass(), subscriber); assertTrue("testSubscribe(new subscriber)", actualReturn); @@ -176,12 +173,12 @@ public void testSubscribeOrder() { List subscribers = eventService.getSubscribers(getEventClass()); assertEquals(3, subscribers.size()); for (int i = 0; i < subscribers.size(); i++) { - EventSubscriber subscriber = (EventSubscriber) subscribers.get(i); + IEventSubscriber subscriber = (IEventSubscriber) subscribers.get(i); eventService.unsubscribe(getEventClass(), subscriber); } - eventService.subscribe(getEventClass(), (EventSubscriber) subscribers.get(1)); - eventService.subscribe(getEventClass(), (EventSubscriber) subscribers.get(0)); - eventService.subscribe(getEventClass(), (EventSubscriber) subscribers.get(2)); + eventService.subscribe(getEventClass(), (IEventSubscriber) subscribers.get(1)); + eventService.subscribe(getEventClass(), (IEventSubscriber) subscribers.get(0)); + eventService.subscribe(getEventClass(), (IEventSubscriber) subscribers.get(2)); eventService.publish(createEvent()); assertTrue(subscriber3.callTime.before(subscriber2.callTime)); assertTrue(subscriber2.callTime.before(subscriber1.callTime)); @@ -189,7 +186,7 @@ public void testSubscribeOrder() { public void testSubscribeWeakly() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = eventService.subscribe(getEventClass(), subscriber); assertTrue("testSubscribeWeakly(new subscriber)", actualReturn); @@ -229,7 +226,7 @@ public void testSubscribeWeakly() { public void testSubscribeStrongly() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = eventService.subscribeStrongly(getEventClass(), subscriber); assertTrue("testSubscribeWeakly(new subscriber)", actualReturn); @@ -316,7 +313,7 @@ public void testIllegalArgs() { public void testVeto() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = eventService.subscribe(getEventClass(), subscriber); @@ -341,7 +338,7 @@ public void testVeto() { public void testVetoException() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = eventService.subscribe(getEventClass(), subscriber); @@ -366,7 +363,7 @@ public void testVetoException() { public void testVetoTopic() { boolean actualReturn; - EventTopicSubscriber subscriber = createEventTopicSubscriber(false); + IEventTopicSubscriber subscriber = createEventTopicSubscriber(false); actualReturn = eventService.subscribe("FooTopic", subscriber); @@ -395,7 +392,7 @@ public boolean shouldVeto(String topic, Object data) { public void testVetoWeak() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = eventService.subscribe(getEventClass(), subscriber); @@ -428,7 +425,7 @@ public boolean shouldVeto(Object evt) { public void testVetoTopicWeak() { boolean actualReturn; - EventTopicSubscriber subscriber = createEventTopicSubscriber(false); + IEventTopicSubscriber subscriber = createEventTopicSubscriber(false); actualReturn = eventService.subscribe("FooTopic", subscriber); @@ -494,7 +491,7 @@ public void testUnsubscribe() { } public void testUnsubscribeTopic() { - EventTopicSubscriber eventTopicSubscriber = createEventTopicSubscriber(false); + IEventTopicSubscriber eventTopicSubscriber = createEventTopicSubscriber(false); eventService.subscribe("FooTopic", eventTopicSubscriber); boolean actualReturn; @@ -588,7 +585,7 @@ public void testPublish() { public void testTimeHandling() { eventService.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); final Boolean[] wasCalled = new Boolean[1]; - eventService.subscribe(SubscriberTimingEvent.class, new EventSubscriber() { + eventService.subscribe(SubscriberTimingEvent.class, new IEventSubscriber() { public void onEvent(Object evt) { wasCalled[0] = Boolean.TRUE; } @@ -598,7 +595,7 @@ public void onEvent(Object evt) { eventService = new ThreadSafeEventService(new Long(100), true); eventService.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); final Boolean[] wasCalled2 = new Boolean[1]; - eventService.subscribe(SubscriberTimingEvent.class, new EventSubscriber() { + eventService.subscribe(SubscriberTimingEvent.class, new IEventSubscriber() { public void onEvent(Object evt) { wasCalled2[0] = Boolean.TRUE; timing = (SubscriberTimingEvent) evt; @@ -746,7 +743,7 @@ public void testParameterizedEvent() throws IllegalAccessException, NoSuchMethod // System.out.println("superclass="+superclass); // System.out.println("type="+type); - eventService.subscribe(stringTypeReference.getType(), new EventSubscriber() { + eventService.subscribe(stringTypeReference.getType(), new IEventSubscriber() { public void onEvent(Object event) { timesCalled[0]++; } @@ -766,12 +763,12 @@ public void testParameterizedEventMultiParams() throws IllegalAccessException, N TypeReference> integerTypeReference = new TypeReference>(){}; TypeReference> switchTypeReference = new TypeReference>(){}; - eventService.subscribe(stringTypeReference.getType(), new EventSubscriber() { + eventService.subscribe(stringTypeReference.getType(), new IEventSubscriber() { public void onEvent(Object event) { timesCalled[0]++; } }); - eventService.subscribe(integerTypeReference.getType(), new EventSubscriber() { + eventService.subscribe(integerTypeReference.getType(), new IEventSubscriber() { public void onEvent(Object event) { timesCalled[0]++; } @@ -790,7 +787,7 @@ public void testWildcardSubscription() throws IllegalAccessException, NoSuchMeth TypeReference> containerWildcardTypeRef = new TypeReference>(){}; - eventService.subscribe(containerWildcardTypeRef.getType(), new EventSubscriber() { + eventService.subscribe(containerWildcardTypeRef.getType(), new IEventSubscriber() { public void onEvent(Object event) { timesCalled[0]++; } @@ -817,7 +814,7 @@ public void onEvent(Object event) { //Test super wildcard, should be opposite of above eventService.clearAllSubscribers(); TypeReference> containerSuperWildcardTypeRef = new TypeReference>(){}; - eventService.subscribe(containerSuperWildcardTypeRef.getType(), new EventSubscriber() { + eventService.subscribe(containerSuperWildcardTypeRef.getType(), new IEventSubscriber() { public void onEvent(Object event) { timesCalled[0]++; } @@ -844,7 +841,7 @@ public Map getData() { } } - class DoubleSubscriber implements EventTopicSubscriber, EventSubscriber { + class DoubleSubscriber implements IEventTopicSubscriber, IEventSubscriber { public int timesTopicCalled = 0; public int timesEventCalled = 0; public String lastEventString; @@ -881,7 +878,7 @@ public void testGenericGeneric() { final int[] timesCalled = new int[1]; DataRequestEvent> request = new DataRequestEvent>(); Type type = new TypeReference>>() {}.getType(); - eventService.subscribe(type, new EventSubscriber() { + eventService.subscribe(type, new IEventSubscriber() { public void onEvent(Object event) { timesCalled[0]++; } @@ -919,7 +916,7 @@ public void testTopicsCache() { assertTrue(lastEventObj == publishedEventObj); assertEquals(1, es.getCacheSizeForTopic("IceCream.Vanilla")); //subscribe and see if it still works and that the new event is cached - EventTopicSubscriber sub = new EventTopicSubscriber() { + IEventTopicSubscriber sub = new IEventTopicSubscriber() { public void onEvent(String topic, Object data) { System.out.println("Barrrr"); } @@ -1147,7 +1144,7 @@ public void testEventsCache() { assertTrue(lastAEvent == publishedEvent); assertEquals(1, es.getCacheSizeForEventClass(EventA.class)); //subscribe and see if it still works and that the new event is cached - EventSubscriber sub = new EventSubscriber() { + IEventSubscriber sub = new IEventSubscriber() { public void onEvent(Object evt) { System.out.println("Fooo"); } diff --git a/src/test/java/org/scijava/event/bushe/TestEventAction.java b/src/test/java/org/scijava/event/bushe/TestEventAction.java index 969bf2acf..6c3eff80f 100644 --- a/src/test/java/org/scijava/event/bushe/TestEventAction.java +++ b/src/test/java/org/scijava/event/bushe/TestEventAction.java @@ -51,7 +51,7 @@ protected void setUp() throws Exception { public void testEventBusTopicAction() { EventBusAction action = new EventBusAction(); action.putValue(Action.ACTION_COMMAND_KEY, "FooAction"); - EventTopicSubscriber subscriber = new EventTopicSubscriber() { + IEventTopicSubscriber subscriber = new IEventTopicSubscriber() { public void onEvent(String topic, Object evt) { subscribedEvents.add(evt); } @@ -70,7 +70,7 @@ public void testEventBusTopicActionEventServiceValueFirst() { EventBusAction action = new EventBusAction(); action.putValue(EventBusAction.EVENT_SERVICE_TOPIC_NAME, "FooAction"); action.putValue(Action.ACTION_COMMAND_KEY, "BarAction"); - EventBus.subscribeStrongly("FooAction", new EventTopicSubscriber() { + EventBus.subscribeStrongly("FooAction", new IEventTopicSubscriber() { public void onEvent(String topic, Object evt) { subscribedEvents.add(evt); } @@ -87,7 +87,7 @@ public void testEventBusTopicActionIDValueFirst() { EventBusAction action = new EventBusAction(); action.putValue("ID", "FooAction"); action.putValue(Action.ACTION_COMMAND_KEY, "BarAction"); - EventBus.subscribeStrongly("FooAction", new EventTopicSubscriber() { + EventBus.subscribeStrongly("FooAction", new IEventTopicSubscriber() { public void onEvent(String topic, Object evt) { subscribedEvents.add(evt); } @@ -103,7 +103,7 @@ public void onEvent(String topic, Object evt) { public void testEventBusTopicActionNameWorks() { EventBusAction action = new EventBusAction(); action.putValue(Action.NAME, "FooAction"); - EventBus.subscribeStrongly("FooAction", new EventTopicSubscriber() { + EventBus.subscribeStrongly("FooAction", new IEventTopicSubscriber() { public void onEvent(String topic, Object evt) { subscribedEvents.add(evt); } @@ -122,7 +122,7 @@ protected Object getEventServiceEvent(ActionEvent evt) { return new MyEventServiceEvent(aSource, evt); } }; - EventBus.subscribe(MyEventServiceEvent.class, new EventSubscriber() { + EventBus.subscribe(MyEventServiceEvent.class, new IEventSubscriber() { public void onEvent(Object evt) { assertEquals(((EventServiceEvent) evt).getSource(), aSource); subscribedEvents.add(evt); @@ -148,7 +148,7 @@ public void testContainerEventAction() { EventService es = ContainerEventServiceFinder.getEventService(button); assertTrue(EventBus.getGlobalEventService() != es); assertEquals(0, subscribedEvents.size()); - es.subscribe("FooAction", new EventTopicSubscriber() { + es.subscribe("FooAction", new IEventTopicSubscriber() { public void onEvent(String topic, Object evt) { subscribedEvents.add(evt); } diff --git a/src/test/java/org/scijava/event/bushe/TestEventBus.java b/src/test/java/org/scijava/event/bushe/TestEventBus.java index 80f8cba2f..487d0b277 100644 --- a/src/test/java/org/scijava/event/bushe/TestEventBus.java +++ b/src/test/java/org/scijava/event/bushe/TestEventBus.java @@ -26,8 +26,8 @@ public class TestEventBus extends TestCase { - private EventSubscriber eventSubscriber = null; - private EventTopicSubscriber eventTopicSubscriber; + private IEventSubscriber eventSubscriber = null; + private IEventTopicSubscriber eventTopicSubscriber; private EBTestCounter testCounter = new EBTestCounter(); public TestEventBus(String name) { @@ -53,20 +53,20 @@ private Class getEventClass() { return createEvent().getClass(); } - private EventSubscriber createEventSubscriber(boolean throwException) { + private IEventSubscriber createEventSubscriber(boolean throwException) { SubscriberForTest test = new SubscriberForTest(testCounter, throwException); return test; } - private EventTopicSubscriber createEventTopicSubscriber(boolean throwException) { + private IEventTopicSubscriber createEventTopicSubscriber(boolean throwException) { return new TopicSubscriberForTest(testCounter, throwException); } - private EventSubscriber getEventSubscriber() { + private IEventSubscriber getEventSubscriber() { return getEventSubscriber(true); } - private EventSubscriber getEventSubscriber(boolean throwException) { + private IEventSubscriber getEventSubscriber(boolean throwException) { if (eventSubscriber == null) { eventSubscriber = createEventSubscriber(throwException); } @@ -75,7 +75,7 @@ private EventSubscriber getEventSubscriber(boolean throwException) { public void testSubscribe() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = EventBus.subscribe(getEventClass(), subscriber); assertTrue("testSubscribe(new subscriber)", actualReturn); @@ -106,7 +106,7 @@ public void testSubscribe() { } - public static class SwingThreadTestEventSubscriber implements EventSubscriber { + public static class SwingThreadTestEventSubscriber implements IEventSubscriber { public boolean wasOnSwingThread; public void onEvent(Object event) { @@ -124,7 +124,7 @@ public void testSwingThreading() { public void testSubscribeWeakly() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = EventBus.subscribe(getEventClass(), subscriber); assertTrue("testSubscribeWeakly(new subscriber)", actualReturn); @@ -212,7 +212,7 @@ public void testIllegalArgs() { public void testVeto() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = EventBus.subscribe(getEventClass(), subscriber); @@ -239,7 +239,7 @@ public void testVeto() { public void testVetoException() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = EventBus.subscribe(getEventClass(), subscriber); assertTrue(actualReturn); @@ -267,7 +267,7 @@ public void testVetoException() { public void testVetoTopic() { boolean actualReturn; - EventTopicSubscriber subscriber = createEventTopicSubscriber(false); + IEventTopicSubscriber subscriber = createEventTopicSubscriber(false); actualReturn = EventBus.subscribeStrongly("FooTopic", subscriber); @@ -298,7 +298,7 @@ public boolean shouldVeto(String topic, Object data) { public void testVetoWeak() { boolean actualReturn; - EventSubscriber subscriber = createEventSubscriber(false); + IEventSubscriber subscriber = createEventSubscriber(false); actualReturn = EventBus.subscribe(getEventClass(), subscriber); @@ -333,7 +333,7 @@ public boolean shouldVeto(Object evt) { public void testVetoTopicWeak() { boolean actualReturn; - EventTopicSubscriber subscriber = createEventTopicSubscriber(false); + IEventTopicSubscriber subscriber = createEventTopicSubscriber(false); actualReturn = EventBus.subscribeStrongly("FooTopic", subscriber); @@ -402,7 +402,7 @@ public void testUnsubscribe() { } public void testUnsubscribeTopic() { - EventTopicSubscriber eventTopicSubscriber = createEventTopicSubscriber(false); + IEventTopicSubscriber eventTopicSubscriber = createEventTopicSubscriber(false); EventBus.subscribeStrongly("FooTopic", eventTopicSubscriber); boolean actualReturn; @@ -484,7 +484,7 @@ public void testPublish() { assertEquals("testPublish(completed)", 4, testCounter.eventsHandledCount); assertEquals("testPublish(exceptions)", 2, testCounter.subscribeExceptionCount); - EventSubscriber eventSubscriber = createEventSubscriber(false); + IEventSubscriber eventSubscriber = createEventSubscriber(false); EventBus.subscribe(ObjectEvent.class, eventSubscriber); testCounter.eventsHandledCount = 0; testCounter.subscribeExceptionCount = 0; @@ -558,11 +558,11 @@ public void testNumOfMethods() { //Really a compilation test public void testGeneric() { - EventBus.subscribe(String.class, new EventSubscriber() { + EventBus.subscribe(String.class, new IEventSubscriber() { public void onEvent(JComponent event) { } }); - EventBus.subscribe("foo", new EventTopicSubscriber() { + EventBus.subscribe("foo", new IEventTopicSubscriber() { public void onEvent(String topic, JComponent data) { } }); diff --git a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java index c0b839a4a..49417097a 100644 --- a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java +++ b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java @@ -20,7 +20,7 @@ protected void tearDown() throws Exception { public void testConfigurableEventService() { try { - EventBus.subscribe("foo", new EventTopicSubscriber() { + EventBus.subscribe("foo", new IEventTopicSubscriber() { public void onEvent(String topic, Object data) { } }); diff --git a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java index a89ec9765..7d6dcb309 100644 --- a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java +++ b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java @@ -18,7 +18,7 @@ protected void tearDown() throws Exception { public void testConfigurableEventService() { try { - EventBus.subscribe("foo", new EventTopicSubscriber() { + EventBus.subscribe("foo", new IEventTopicSubscriber() { public void onEvent(String topic, Object data) { } }); diff --git a/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java b/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java index 791f558d7..27cb12c06 100644 --- a/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java +++ b/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java @@ -20,8 +20,8 @@ /** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ public class TestEventBusTiming extends EventServiceLocatorTestCase { - private EventSubscriber eventSubscriber = null; - private EventTopicSubscriber eventTopicSubscriber; + private IEventSubscriber eventSubscriber = null; + private IEventTopicSubscriber eventTopicSubscriber; private SubscriberTimingEvent timing; private EBTestCounter testCounter = new EBTestCounter(); @@ -41,30 +41,30 @@ private Class getEventClass() { return createEvent().getClass(); } - private EventSubscriber createEventSubscriber(boolean throwException) { + private IEventSubscriber createEventSubscriber(boolean throwException) { return new SubscriberForTest(testCounter, throwException); } - private EventTopicSubscriber createEventTopicSubscriber(boolean throwException) { + private IEventTopicSubscriber createEventTopicSubscriber(boolean throwException) { return new TopicSubscriberForTest(testCounter, throwException); } - private EventSubscriber createEventSubscriber(Long waitTime) { + private IEventSubscriber createEventSubscriber(Long waitTime) { return new SubscriberForTest(testCounter, waitTime); } - private EventSubscriber getEventSubscriber() { + private IEventSubscriber getEventSubscriber() { return getEventSubscriber(true); } - private EventSubscriber getEventSubscriber(boolean throwException) { + private IEventSubscriber getEventSubscriber(boolean throwException) { if (eventSubscriber == null) { eventSubscriber = createEventSubscriber(throwException); } return eventSubscriber; } - private EventTopicSubscriber getEventTopicSubscriber() { + private IEventTopicSubscriber getEventTopicSubscriber() { if (eventTopicSubscriber == null) { eventTopicSubscriber = createEventTopicSubscriber(false); } @@ -74,7 +74,7 @@ private EventTopicSubscriber getEventTopicSubscriber() { public void thisOnlyWorksSometimesNow_testTimeHandling() { EventBus.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); final Boolean[] wasCalled = new Boolean[1]; - EventBus.subscribe(SubscriberTimingEvent.class, new EventSubscriber() { + EventBus.subscribe(SubscriberTimingEvent.class, new IEventSubscriber() { public void onEvent(Object evt) { wasCalled[0] = Boolean.TRUE; } @@ -84,7 +84,7 @@ public void onEvent(Object evt) { assertTrue(wasCalled[0] == null); EventBus.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); final Boolean[] wasCalled2 = new Boolean[1]; - EventBus.subscribe(SubscriberTimingEvent.class, new EventSubscriber() { + EventBus.subscribe(SubscriberTimingEvent.class, new IEventSubscriber() { public void onEvent(Object evt) { wasCalled2[0] = Boolean.TRUE; timing = (SubscriberTimingEvent) evt; diff --git a/src/test/java/org/scijava/event/bushe/TestPerformance.java b/src/test/java/org/scijava/event/bushe/TestPerformance.java index a936200ee..f597ae488 100644 --- a/src/test/java/org/scijava/event/bushe/TestPerformance.java +++ b/src/test/java/org/scijava/event/bushe/TestPerformance.java @@ -12,12 +12,12 @@ * For proving performance. */ public class TestPerformance extends TestCase { - private EventSubscriber doNothingSubscriber = new EventSubscriber() { + private IEventSubscriber doNothingSubscriber = new IEventSubscriber() { public void onEvent(Object event) { } }; - private EventTopicSubscriber doNothingTopicSubscriber = new EventTopicSubscriber() { + private IEventTopicSubscriber doNothingTopicSubscriber = new IEventTopicSubscriber() { public void onEvent(String topic, Object payload) { } }; diff --git a/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java b/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java index 9f44264f0..a02310228 100644 --- a/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java +++ b/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java @@ -11,8 +11,6 @@ import junit.framework.TestCase; -import org.scijava.event.bushe.annotation.AnnotationProcessor; - /** * Tests the Prioritized interface va. normal FIFO order. */ @@ -39,7 +37,7 @@ public void record() { /** * A subscriber that adds itself to a supplied list so that the order of calls is recorded. */ - class OrderRecorderSubscriber extends OrderRecorder implements EventSubscriber { + class OrderRecorderSubscriber extends OrderRecorder implements IEventSubscriber { OrderRecorderSubscriber(List listToRecordTo) { super(listToRecordTo); @@ -53,7 +51,7 @@ public void onEvent(Object event) { /** * Ditto, for topics */ - class OrderRecorderTopicSubscriber extends OrderRecorder implements EventTopicSubscriber { + class OrderRecorderTopicSubscriber extends OrderRecorder implements IEventTopicSubscriber { OrderRecorderTopicSubscriber(List listToRecordTo) { super(listToRecordTo); @@ -104,15 +102,15 @@ protected void tearDown() throws Exception { } public void testNormalFIFO() { - List calledOrder = new ArrayList(); - List originalOrder = new ArrayList(); + List calledOrder = new ArrayList(); + List originalOrder = new ArrayList(); originalOrder.add(new OrderRecorderSubscriber(calledOrder)); originalOrder.add(new OrderRecorderSubscriber(calledOrder)); originalOrder.add(new OrderRecorderSubscriber(calledOrder)); originalOrder.add(new OrderRecorderSubscriber(calledOrder)); originalOrder.add(new OrderRecorderSubscriber(calledOrder)); //mixing an inner class into the test - EventSubscriber inner = new EventSubscriber() { + IEventSubscriber inner = new IEventSubscriber() { public void onEvent(Object event) { } }; @@ -120,7 +118,7 @@ public void onEvent(Object event) { originalOrder.add(new OrderRecorderSubscriber(calledOrder)); originalOrder.add(new OrderRecorderSubscriber(calledOrder)); //add them all - for (EventSubscriber eventSubscriber : originalOrder) { + for (IEventSubscriber eventSubscriber : originalOrder) { eventService.subscribe(Color.class, eventSubscriber); } eventService.publish(Color.BLUE); @@ -129,8 +127,8 @@ public void onEvent(Object event) { } public void testNoPrioritizedWithZeroPrioritized() { - List calledOrder = new ArrayList(); - List originalOrder = new ArrayList(); + List calledOrder = new ArrayList(); + List originalOrder = new ArrayList(); originalOrder.add(new OrderRecorderSubscriber(calledOrder)); originalOrder.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); originalOrder.add(new OrderRecorderSubscriber(calledOrder)); @@ -149,7 +147,7 @@ public int getPriority() { originalOrder.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); originalOrder.add(new OrderRecorderSubscriber(calledOrder)); //add them all - for (EventSubscriber eventSubscriber : originalOrder) { + for (IEventSubscriber eventSubscriber : originalOrder) { eventService.subscribe(Color.class, eventSubscriber); } eventService.publish(Color.BLUE); @@ -158,18 +156,18 @@ public int getPriority() { } public void testOnlyPrioritized() { - List calledOrder = new ArrayList(); - List originalOrder = new ArrayList(); + List calledOrder = new ArrayList(); + List originalOrder = new ArrayList(); for (int i = 0; i < 100; i++) { Random random = new Random(); originalOrder.add(new PrioritizedOrderRecorderSubscriber(random.nextInt(10000) - 5000, calledOrder)); } - for (EventSubscriber eventSubscriber : originalOrder) { + for (IEventSubscriber eventSubscriber : originalOrder) { eventService.subscribe(Color.class, eventSubscriber); } eventService.publish(Color.BLUE); int lastPriority = -5001; - for (EventSubscriber eventSubscriber : calledOrder) { + for (IEventSubscriber eventSubscriber : calledOrder) { int priority = ((PrioritizedOrderRecorderSubscriber) eventSubscriber).getPriority(); assertTrue(priority >= lastPriority); lastPriority = priority; @@ -178,8 +176,8 @@ public void testOnlyPrioritized() { public void testMixedOfPrioritizedNonPrioritizedAndPrioritized0() { Random rand = new Random(); - List calledOrder = new ArrayList(); - List prioritized = new ArrayList(); + List calledOrder = new ArrayList(); + List prioritized = new ArrayList(); //100 negative for (int i = 0; i < 100; i++) { Random random = new Random(); @@ -192,7 +190,7 @@ public void testMixedOfPrioritizedNonPrioritizedAndPrioritized0() { } Collections.shuffle(prioritized); //100 fifo - List fifo = new ArrayList(); + List fifo = new ArrayList(); for (int i = 0; i < 100; i++) { if (rand.nextBoolean()) { fifo.add(new OrderRecorderSubscriber(calledOrder)); @@ -200,10 +198,10 @@ public void testMixedOfPrioritizedNonPrioritizedAndPrioritized0() { fifo.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); } } - List prioritizedCopy = new ArrayList(prioritized); - List fifoCopy = new ArrayList(fifo); + List prioritizedCopy = new ArrayList(prioritized); + List fifoCopy = new ArrayList(fifo); //Subscribe all, randomizing a fifo or prioritized - EventSubscriber eventSubscriber; + IEventSubscriber eventSubscriber; int subscribeCount = 0; int prioritizedSubscribeCount = 0; int nonPrioritizedSubscribeCount = 0; @@ -237,7 +235,7 @@ public void testMixedOfPrioritizedNonPrioritizedAndPrioritized0() { assertEquals(300, calledOrder.size()); int lastPriority = -10001; for (int i = 0; i < 99; i++) { - EventSubscriber subscriber = calledOrder.get(i); + IEventSubscriber subscriber = calledOrder.get(i); assertTrue(subscriber instanceof PrioritizedOrderRecorderSubscriber); PrioritizedOrderRecorderSubscriber prioritizedOrderRecorderSubscriber = (PrioritizedOrderRecorderSubscriber) subscriber; int priority = prioritizedOrderRecorderSubscriber.getPriority(); @@ -246,7 +244,7 @@ public void testMixedOfPrioritizedNonPrioritizedAndPrioritized0() { lastPriority = priority; } for (int i = 100; i < 199; i++) { - EventSubscriber subscriber = calledOrder.get(i); + IEventSubscriber subscriber = calledOrder.get(i); assertTrue(subscriber instanceof OrderRecorderSubscriber); if (subscriber instanceof PrioritizedOrderRecorderSubscriber) { PrioritizedOrderRecorderSubscriber prioritizedOrderRecorderSubscriber = (PrioritizedOrderRecorderSubscriber) subscriber; @@ -257,7 +255,7 @@ public void testMixedOfPrioritizedNonPrioritizedAndPrioritized0() { } lastPriority = 0; for (int i = 200; i < 299; i++) { - EventSubscriber subscriber = calledOrder.get(i); + IEventSubscriber subscriber = calledOrder.get(i); assertTrue(subscriber instanceof PrioritizedOrderRecorderSubscriber); PrioritizedOrderRecorderSubscriber prioritizedOrderRecorderSubscriber = (PrioritizedOrderRecorderSubscriber) subscriber; int priority = prioritizedOrderRecorderSubscriber.getPriority(); @@ -273,13 +271,13 @@ public void testPriorityAnnotation() throws EventServiceExistsException { EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, eventService); List calledOrder = new ArrayList(); OrderRecorder sn100 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) public void annotateMe(Object foo) { record(); } }; OrderRecorder sn50 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) public void annotateMe(Object foo) { record(); } @@ -287,49 +285,49 @@ public void annotateMe(Object foo) { PrioritizedOrderRecorderSubscriber spn30 = new PrioritizedOrderRecorderSubscriber(-30, calledOrder); OrderRecorderSubscriber so_1 = new OrderRecorderSubscriber(calledOrder); OrderRecorder s100 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) public void annotateMe(Object foo) { record(); } }; OrderRecorder sn10 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) public void annotateMe(Object foo) { record(); } }; OrderRecorder s0_2 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) public void annotateMe(Object foo) { record(); } }; OrderRecorder s0_3 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) public void annotateMe(Object foo) { record(); } }; OrderRecorder s50 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) public void annotateMe(Object foo) { record(); } }; OrderRecorder s0_4 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) public void annotateMe(Object foo) { record(); } }; OrderRecorder s10 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) public void annotateMe(Object foo) { record(); } }; OrderRecorder s0_5 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) public void annotateMe(Object foo) { record(); } @@ -337,8 +335,8 @@ public void annotateMe(Object foo) { Object[] toAdd = {sn100, s100, so_1, spn30, s0_2, s50, s0_3, sn10, sn50, s0_4, s10, s0_5}; List expectedResult = Arrays.asList(sn100, sn50, spn30, sn10, so_1, s0_2, s0_3, s0_4, s0_5, s10, s50, s100); for (Object o : toAdd) { - if (o instanceof EventSubscriber) { - eventService.subscribe(Color.class, (EventSubscriber) o); + if (o instanceof IEventSubscriber) { + eventService.subscribe(Color.class, (IEventSubscriber) o); } else { AnnotationProcessor.process(o); } @@ -358,12 +356,12 @@ public void annotateMe(Object foo) { public void testIssue26OneNegOthersNormal() { final List calledOrder = new ArrayList(); //non-Prioritized FIFO subscribers - EventSubscriber sub1 = new EventSubscriber() { + IEventSubscriber sub1 = new IEventSubscriber() { public void onEvent(Object event) { calledOrder.add(1); } }; - EventSubscriber sub0 = new PrioritizedEventSubscriber() { + IEventSubscriber sub0 = new PrioritizedEventSubscriber() { public void onEvent(Object event) { calledOrder.add(-1); } @@ -371,7 +369,7 @@ public int getPriority() { return -1; } }; - EventSubscriber sub2 = new EventSubscriber() { + IEventSubscriber sub2 = new IEventSubscriber() { public void onEvent(Object event) { calledOrder.add(2); } @@ -398,12 +396,12 @@ public void onEvent(Object event) { public void testOnePosOthersNormal() { final List calledOrder = new ArrayList(); //non-Prioritized FIFO subscribers - EventSubscriber sub1 = new EventSubscriber() { + IEventSubscriber sub1 = new IEventSubscriber() { public void onEvent(Object event) { calledOrder.add(1); } }; - EventSubscriber sub0 = new PrioritizedEventSubscriber() { + IEventSubscriber sub0 = new PrioritizedEventSubscriber() { public void onEvent(Object event) { calledOrder.add(11); } @@ -411,7 +409,7 @@ public int getPriority() { return 11; } }; - EventSubscriber sub2 = new EventSubscriber() { + IEventSubscriber sub2 = new IEventSubscriber() { public void onEvent(Object event) { calledOrder.add(2); } @@ -434,13 +432,13 @@ public void testPriorityTopicAnnotation() throws EventServiceExistsException { EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, eventService); List calledOrder = new ArrayList(); OrderRecorder sn100 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder sn50 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) public void annotateMe(String topic, Object foo) { record(); } @@ -448,49 +446,49 @@ public void annotateMe(String topic, Object foo) { PrioritizedOrderRecorderTopicSubscriber spn30 = new PrioritizedOrderRecorderTopicSubscriber(-30, calledOrder); OrderRecorderTopicSubscriber so_1 = new OrderRecorderTopicSubscriber(calledOrder); OrderRecorder s100 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder sn10 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s0_2 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s0_3 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s50 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s0_4 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s10 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s0_5 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) public void annotateMe(String topic, Object foo) { record(); } @@ -498,8 +496,8 @@ public void annotateMe(String topic, Object foo) { Object[] toAdd = {sn100, s100, so_1, spn30, s0_2, s50, s0_3, sn10, sn50, s0_4, s10, s0_5}; List expectedResult = Arrays.asList(sn100, sn50, spn30, sn10, so_1, s0_2, s0_3, s0_4, s0_5, s10, s50, s100); for (Object o : toAdd) { - if (o instanceof EventTopicSubscriber) { - eventService.subscribe("Color", (EventTopicSubscriber) o); + if (o instanceof IEventTopicSubscriber) { + eventService.subscribe("Color", (IEventTopicSubscriber) o); } else { AnnotationProcessor.process(o); } @@ -516,13 +514,13 @@ public void testPriorityTopicPatternAnnotation() throws EventServiceExistsExcept EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, eventService); List calledOrder = new ArrayList(); OrderRecorder sn100 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder sn50 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -50) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -50) public void annotateMe(String topic, Object foo) { record(); } @@ -530,49 +528,49 @@ public void annotateMe(String topic, Object foo) { PrioritizedOrderRecorderTopicSubscriber spn30 = new PrioritizedOrderRecorderTopicSubscriber(-30, calledOrder); OrderRecorderTopicSubscriber so_1 = new OrderRecorderTopicSubscriber(calledOrder); OrderRecorder s100 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder sn10 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s0_2 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s0_3 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s50 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s0_4 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s10 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) public void annotateMe(String topic, Object foo) { record(); } }; OrderRecorder s0_5 = new OrderRecorder(calledOrder) { - @org.scijava.event.bushe.annotation.EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) + @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) public void annotateMe(String topic, Object foo) { record(); } @@ -582,7 +580,7 @@ public void annotateMe(String topic, Object foo) { for (Object o : toAdd) { if (o instanceof OrderRecorderTopicSubscriber) { Pattern pattern = Pattern.compile("Col[a-z]+"); - eventService.subscribe(pattern, (EventTopicSubscriber) o); + eventService.subscribe(pattern, (IEventTopicSubscriber) o); } else { AnnotationProcessor.process(o); } diff --git a/src/test/java/org/scijava/event/bushe/TestPublicationStates.java b/src/test/java/org/scijava/event/bushe/TestPublicationStates.java index d4aed0a81..71f7c02e8 100644 --- a/src/test/java/org/scijava/event/bushe/TestPublicationStates.java +++ b/src/test/java/org/scijava/event/bushe/TestPublicationStates.java @@ -18,7 +18,7 @@ public void setPublicationStatus(PublicationStatus status) { stuffHappens.add(status); } }; - EventSubscriber subscriber = new EventSubscriber() { + IEventSubscriber subscriber = new IEventSubscriber() { public void onEvent(Object event) { stuffHappens.add(this); } diff --git a/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java b/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java index 3b7836df8..3109681d1 100644 --- a/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java +++ b/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java @@ -4,7 +4,7 @@ * @author Michael Bushe * @since Nov 19, 2005 11:00:53 PM */ -public class TopicSubscriberForTest implements EventTopicSubscriber { +public class TopicSubscriberForTest implements IEventTopicSubscriber { private boolean throwException; private Long waitTime; private EBTestCounter testDefaultEventService; diff --git a/src/test/java/org/scijava/event/bushe/annotation/WeakClassAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/WeakClassAnnotatedEventSubscriber.java similarity index 92% rename from src/test/java/org/scijava/event/bushe/annotation/WeakClassAnnotatedEventSubscriber.java rename to src/test/java/org/scijava/event/bushe/WeakClassAnnotatedEventSubscriber.java index 0c7f7703a..6d821a6ec 100644 --- a/src/test/java/org/scijava/event/bushe/annotation/WeakClassAnnotatedEventSubscriber.java +++ b/src/test/java/org/scijava/event/bushe/WeakClassAnnotatedEventSubscriber.java @@ -1,4 +1,4 @@ -package org.scijava.event.bushe.annotation; +package org.scijava.event.bushe; import java.util.Collection; import java.util.List; From bd41c8ace85af020099eaa95f09da4ce64eee47b Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 11:56:18 -0500 Subject: [PATCH 100/185] Make most of the bushe classes package-private The goal is not to add new SciJava Common API, but merely to vendor the org.bushe:eventbus code for internal use. Unfortunately, we don't have JPMS yet, and cannot fully hide the package. But we can get pretty close. --- .../org/scijava/event/DefaultEventBus.java | 4 ++-- .../org/scijava/event/DefaultEventService.java | 8 ++++---- .../java/org/scijava/event/EventHandler.java | 18 +++++++++--------- .../event/bushe/AbstractEventServiceEvent.java | 2 +- .../event/bushe/AnnotationProcessor.java | 2 +- .../event/bushe/BaseProxySubscriber.java | 2 +- .../bushe/ContainerEventServiceAction.java | 2 +- .../bushe/ContainerEventServiceFinder.java | 2 +- .../bushe/ContainerEventServiceRegistrar.java | 2 +- .../bushe/ContainerEventServiceSupplier.java | 2 +- .../java/org/scijava/event/bushe/EventBus.java | 2 +- .../scijava/event/bushe/EventBusAction.java | 2 +- .../org/scijava/event/bushe/EventService.java | 2 +- .../event/bushe/EventServiceAction.java | 2 +- .../scijava/event/bushe/EventServiceEvent.java | 2 +- .../bushe/EventServiceExistsException.java | 2 +- .../event/bushe/EventServiceLocator.java | 2 +- .../scijava/event/bushe/EventSubscriber.java | 2 +- .../bushe/EventTopicPatternSubscriber.java | 2 +- .../event/bushe/EventTopicSubscriber.java | 2 +- .../event/bushe/IEventTopicSubscriber.java | 2 +- .../java/org/scijava/event/bushe/Logger.java | 2 +- .../org/scijava/event/bushe/ObjectEvent.java | 2 +- .../org/scijava/event/bushe/Prioritized.java | 2 +- .../bushe/PrioritizedEventSubscriber.java | 2 +- .../bushe/PrioritizedEventTopicSubscriber.java | 2 +- .../scijava/event/bushe/ProxySubscriber.java | 2 +- .../bushe/ProxyTopicPatternSubscriber.java | 2 +- .../event/bushe/ProxyTopicSubscriber.java | 2 +- .../scijava/event/bushe/PublicationStatus.java | 2 +- .../event/bushe/PublicationStatusTracker.java | 2 +- .../bushe/RuntimeTopicEventSubscriber.java | 2 +- .../RuntimeTopicPatternEventSubscriber.java | 2 +- .../event/bushe/SubscriberTimingEvent.java | 2 +- .../scijava/event/bushe/SwingEventService.java | 2 +- .../scijava/event/bushe/SwingException.java | 2 +- .../org/scijava/event/bushe/TypeReference.java | 2 +- ...TheClassOfTheAnnotatedMethodsParameter.java | 2 +- .../scijava/event/bushe/VetoEventListener.java | 2 +- .../VetoRuntimeTopicPatternSubscriber.java | 2 +- .../bushe/VetoRuntimeTopicSubscriber.java | 2 +- .../scijava/event/bushe/VetoSubscriber.java | 2 +- .../event/bushe/VetoTopicEventListener.java | 2 +- .../bushe/VetoTopicPatternSubscriber.java | 2 +- .../event/bushe/VetoTopicSubscriber.java | 2 +- 45 files changed, 57 insertions(+), 57 deletions(-) diff --git a/src/main/java/org/scijava/event/DefaultEventBus.java b/src/main/java/org/scijava/event/DefaultEventBus.java index a85989de8..85ae5f382 100644 --- a/src/main/java/org/scijava/event/DefaultEventBus.java +++ b/src/main/java/org/scijava/event/DefaultEventBus.java @@ -41,11 +41,11 @@ import org.scijava.thread.ThreadService; /** - * An {@link org.scijava.event.bushe.EventService} implementation for SciJava. + * An {@code org.scijava.event.bushe.EventService} implementation for SciJava. *

      * It is called "DefaultEventBus" rather than "DefaultEventService" to avoid a * name clash with {@link DefaultEventService}, which is not an - * {@link org.scijava.event.bushe.EventService} but rather a SciJava + * {@code org.scijava.event.bushe.EventService} but rather a SciJava * {@link Service} implementation. *

      * diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index c5717d8a9..b36ec1929 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -42,7 +42,6 @@ import org.scijava.Priority; import org.scijava.event.bushe.AbstractProxySubscriber; -import org.scijava.event.bushe.BaseProxySubscriber; import org.scijava.event.bushe.ReferenceStrength; import org.scijava.log.LogService; import org.scijava.plugin.Parameter; @@ -262,9 +261,10 @@ private synchronized void keepIt(final Object o, final ProxySubscriber subscr /** * Helper class used by {@link #subscribe(Object)}. *

      - * Recapitulates some logic from {@link BaseProxySubscriber}, because that - * class implements {@link org.scijava.event.bushe.IEventSubscriber} as a raw - * type, which is incompatible with this class implementing SciJava's + * Recapitulates some logic from + * {@code org.scijava.event.bushe.BaseProxySubscriber}, because that class + * implements {@link org.scijava.event.bushe.IEventSubscriber} as a raw type, + * which is incompatible with this class implementing SciJava's * {@link EventSubscriber} as a typed interface; it becomes impossible to * implement both {@code onEvent(Object)} and {@code onEvent(E)}. *

      diff --git a/src/main/java/org/scijava/event/EventHandler.java b/src/main/java/org/scijava/event/EventHandler.java index 55f4b3a6f..a3d5a4bba 100644 --- a/src/main/java/org/scijava/event/EventHandler.java +++ b/src/main/java/org/scijava/event/EventHandler.java @@ -40,15 +40,15 @@ * handling methods and annotating each with @{@link EventHandler}. *

      * Note to developers: This annotation serves exactly the same purpose as - * EventBus's {@link org.scijava.event.bushe.EventSubscriber} - * annotation, recapitulating a subset of the same functionality. We do this to - * avoid third party code depending directly on EventBus. That is, we do not - * wish to require SciJava developers to {@code import org.scijava.event.bushe.*} - * or similar. In this way, EventBus is isolated as only a transitive dependency - * of downstream code, rather than a direct dependency. Unfortunately, because - * Java annotation interfaces cannot utilize inheritance, we have to - * recapitulate the functionality rather than extend it (as we are able to do - * with {@link EventSubscriber}). + * EventBus's {@code org.scijava.event.bushe.EventSubscriber} annotation, + * recapitulating a subset of the same functionality. We do this to avoid third + * party code depending directly on EventBus. That is, we do not wish to require + * SciJava developers to {@code import org.scijava.event.bushe.*} or similar. In + * this way, EventBus is isolated as only a transitive dependency of downstream + * code, rather than a direct dependency. Unfortunately, because Java annotation + * interfaces cannot utilize inheritance, we have to recapitulate the + * functionality rather than extend it (as we are able to do with + * {@link EventSubscriber}). *

      * * @author Curtis Rueden diff --git a/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java b/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java index 3c4b84b5c..2497af721 100644 --- a/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java +++ b/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java @@ -22,7 +22,7 @@ * * @author Michael Bushe michael@bushe.com */ -public abstract class AbstractEventServiceEvent implements EventServiceEvent, PublicationStatusTracker { +abstract class AbstractEventServiceEvent implements EventServiceEvent, PublicationStatusTracker { private Object source = null; protected final Object stateLock = new Object(); diff --git a/src/main/java/org/scijava/event/bushe/AnnotationProcessor.java b/src/main/java/org/scijava/event/bushe/AnnotationProcessor.java index 22ae777ac..c7428c7e1 100644 --- a/src/main/java/org/scijava/event/bushe/AnnotationProcessor.java +++ b/src/main/java/org/scijava/event/bushe/AnnotationProcessor.java @@ -36,7 +36,7 @@ * code.
    7. In a Annotation Processing Tool plugin, when it becomes available. Support for these other methods * are not yet implemented. */ -public class AnnotationProcessor { +class AnnotationProcessor { protected static final Logger LOG = Logger.getLogger(EventService.class.getName()); diff --git a/src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java b/src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java index 8c8ccd6ae..a84bcdde7 100644 --- a/src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java +++ b/src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java @@ -4,7 +4,7 @@ import java.lang.reflect.Method; /** A class is subscribed to an EventService on behalf of another object. */ -public class BaseProxySubscriber extends AbstractProxySubscriber +class BaseProxySubscriber extends AbstractProxySubscriber implements org.scijava.event.bushe.IEventSubscriber, VetoEventListener { private Class subscriptionClass; diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java index 8e71a5a69..39844dfe4 100644 --- a/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java +++ b/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java @@ -39,7 +39,7 @@ * @see EventServiceAction for further documentation * @see ContainerEventServiceFinder on how the service is found */ -public class ContainerEventServiceAction extends EventServiceAction { +class ContainerEventServiceAction extends EventServiceAction { public ContainerEventServiceAction() { } diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java index b62cc874f..a3464241f 100644 --- a/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java +++ b/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java @@ -38,7 +38,7 @@ * * @author Michael Bushe michael@bushe.com */ -public class ContainerEventServiceFinder { +class ContainerEventServiceFinder { /** The client property used to put a new SwingEventService on top-level components. */ public static final String CLIENT_PROPERTY_KEY_TOP_LEVEL_EVENT_SERVICE = "ContainerEventServiceFinder.createdService"; diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java index d75de00c3..d39d1238e 100644 --- a/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java +++ b/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java @@ -35,7 +35,7 @@ * * @author Michael Bushe michael@bushe.com */ -public class ContainerEventServiceRegistrar { +class ContainerEventServiceRegistrar { private JComponent jComp; private IEventSubscriber eventSubscriber; private VetoEventListener vetoSubscriber; diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java index 70985d749..915a41fb1 100644 --- a/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java +++ b/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java @@ -37,6 +37,6 @@ * * @author Michael Bushe michael@bushe.com */ -public interface ContainerEventServiceSupplier { +interface ContainerEventServiceSupplier { public EventService getContainerEventService(); } diff --git a/src/main/java/org/scijava/event/bushe/EventBus.java b/src/main/java/org/scijava/event/bushe/EventBus.java index 7a01fc2bd..0197d0ebd 100644 --- a/src/main/java/org/scijava/event/bushe/EventBus.java +++ b/src/main/java/org/scijava/event/bushe/EventBus.java @@ -37,7 +37,7 @@ * @see SwingEventService * @see ThreadSafeEventService See package JavaDoc for more information */ -public class EventBus { +class EventBus { /** * The EventBus uses a global static EventService. This method is not necessary in usual usage, use the other static diff --git a/src/main/java/org/scijava/event/bushe/EventBusAction.java b/src/main/java/org/scijava/event/bushe/EventBusAction.java index a320bde9a..f4d69010b 100644 --- a/src/main/java/org/scijava/event/bushe/EventBusAction.java +++ b/src/main/java/org/scijava/event/bushe/EventBusAction.java @@ -25,7 +25,7 @@ * @author Michael Bushe michael@bushe.com * @see EventServiceAction */ -public class EventBusAction extends EventServiceAction { +class EventBusAction extends EventServiceAction { public EventBusAction() { this(null, null); } diff --git a/src/main/java/org/scijava/event/bushe/EventService.java b/src/main/java/org/scijava/event/bushe/EventService.java index 6ead66e96..4552ff752 100644 --- a/src/main/java/org/scijava/event/bushe/EventService.java +++ b/src/main/java/org/scijava/event/bushe/EventService.java @@ -115,7 +115,7 @@ * @see {@link org.scijava.event.bushe.IEventSubscriber} for subscription annotations * @see {@link org.scijava.event.bushe.IEventTopicSubscriber} for subscription annotations */ -public interface EventService { +interface EventService { /** * Publishes an object so that subscribers will be notified if they subscribed to the object's class, one of its diff --git a/src/main/java/org/scijava/event/bushe/EventServiceAction.java b/src/main/java/org/scijava/event/bushe/EventServiceAction.java index bf304b091..a87cfc59d 100644 --- a/src/main/java/org/scijava/event/bushe/EventServiceAction.java +++ b/src/main/java/org/scijava/event/bushe/EventServiceAction.java @@ -40,7 +40,7 @@ * * @author Michael Bushe michael@bushe.com */ -public abstract class EventServiceAction extends AbstractAction { +abstract class EventServiceAction extends AbstractAction { public static final String EVENT_SERVICE_TOPIC_NAME = "event-service-topic"; private boolean throwsExceptionOnNullEventService = true; diff --git a/src/main/java/org/scijava/event/bushe/EventServiceEvent.java b/src/main/java/org/scijava/event/bushe/EventServiceEvent.java index 11a6e6edd..4eb3febaf 100644 --- a/src/main/java/org/scijava/event/bushe/EventServiceEvent.java +++ b/src/main/java/org/scijava/event/bushe/EventServiceEvent.java @@ -24,7 +24,7 @@ * @author Michael Bushe michael@bushe.com * @see AbstractEventServiceEvent for a simple base class */ -public interface EventServiceEvent { +interface EventServiceEvent { /** @return The issuer of the event. */ Object getSource(); } diff --git a/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java b/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java index 4e1cb6f1f..f993c9418 100644 --- a/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java +++ b/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java @@ -1,7 +1,7 @@ package org.scijava.event.bushe; /** Exception thrown by the EventServiceLocator when an EventService already is registered for a name. */ -public class EventServiceExistsException extends Exception { +class EventServiceExistsException extends Exception { public EventServiceExistsException(String msg) { super(msg); } diff --git a/src/main/java/org/scijava/event/bushe/EventServiceLocator.java b/src/main/java/org/scijava/event/bushe/EventServiceLocator.java index 9d631196e..7854dcd0b 100644 --- a/src/main/java/org/scijava/event/bushe/EventServiceLocator.java +++ b/src/main/java/org/scijava/event/bushe/EventServiceLocator.java @@ -51,7 +51,7 @@ * * @author Michael Bushe michael@bushe.com */ -public class EventServiceLocator { +class EventServiceLocator { /** The name "EventBus" is reserved for the service that the EventBus wraps and is returned by {@link #getEventBusService}.*/ public static final String SERVICE_NAME_EVENT_BUS = "EventBus"; /** The name "SwingEventService" is reserved for the service that is returned by {@link #getSwingEventService}. */ diff --git a/src/main/java/org/scijava/event/bushe/EventSubscriber.java b/src/main/java/org/scijava/event/bushe/EventSubscriber.java index 1a1e89d34..f501cf50b 100644 --- a/src/main/java/org/scijava/event/bushe/EventSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/EventSubscriber.java @@ -82,7 +82,7 @@ */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface EventSubscriber { +@interface EventSubscriber { /** The class to subscribe to, if not specified, a subscription is created for the type of the method parameter. */ Class eventClass() default UseTheClassOfTheAnnotatedMethodsParameter.class; diff --git a/src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java index 8be245312..2e07fa70f 100644 --- a/src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java @@ -7,7 +7,7 @@ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface EventTopicPatternSubscriber { +@interface EventTopicPatternSubscriber { /** The Regular Expression to subscribe to. */ String topicPattern(); diff --git a/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java index f47a64ca8..00f305ae7 100644 --- a/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java @@ -83,7 +83,7 @@ */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface EventTopicSubscriber { +@interface EventTopicSubscriber { /** The topic to subscribe to */ String topic(); diff --git a/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java index 6a99f5f30..04570b631 100644 --- a/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java @@ -20,7 +20,7 @@ * * @author Michael Bushe michael@bushe.com */ -public interface IEventTopicSubscriber { +interface IEventTopicSubscriber { /** * Handle an event published on a topic. diff --git a/src/main/java/org/scijava/event/bushe/Logger.java b/src/main/java/org/scijava/event/bushe/Logger.java index 0c940eec6..bc7476d31 100644 --- a/src/main/java/org/scijava/event/bushe/Logger.java +++ b/src/main/java/org/scijava/event/bushe/Logger.java @@ -19,7 +19,7 @@ * explicit. There is also no explicit use of classes outside java.util, * anything else is used by reflection to avoid NoClassDefFound errors on class load. */ -public class Logger { +class Logger { private java.util.logging.Logger utilLogger; private /*Untyped to avoid java.lang.NoClassDefFoundError org.apache.commons.logging.Log*/ Object commonsLogger; diff --git a/src/main/java/org/scijava/event/bushe/ObjectEvent.java b/src/main/java/org/scijava/event/bushe/ObjectEvent.java index db9790a76..5a67d24a9 100644 --- a/src/main/java/org/scijava/event/bushe/ObjectEvent.java +++ b/src/main/java/org/scijava/event/bushe/ObjectEvent.java @@ -22,7 +22,7 @@ * * @author Michael Bushe michael@bushe.com */ -public class ObjectEvent extends AbstractEventServiceEvent { +class ObjectEvent extends AbstractEventServiceEvent { private Object eventObject; /** diff --git a/src/main/java/org/scijava/event/bushe/Prioritized.java b/src/main/java/org/scijava/event/bushe/Prioritized.java index ba57f4611..7a3187055 100644 --- a/src/main/java/org/scijava/event/bushe/Prioritized.java +++ b/src/main/java/org/scijava/event/bushe/Prioritized.java @@ -9,6 +9,6 @@ * from this interface is positive, then this subscriber will be called after non-Prioritized subscribers, the more * positive, the later it is called. */ -public interface Prioritized { +interface Prioritized { int getPriority(); } diff --git a/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java b/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java index 8ebe233c7..af3a93dc8 100644 --- a/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java @@ -4,5 +4,5 @@ * This is a convenience interface, particularly for inner classes, that implements * {@link IEventSubscriber} and {@link Prioritized}. */ -public interface PrioritizedEventSubscriber extends IEventSubscriber, Prioritized { +interface PrioritizedEventSubscriber extends IEventSubscriber, Prioritized { } diff --git a/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java index 63732799e..c58ce6b76 100644 --- a/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java @@ -4,5 +4,5 @@ * This is a convenience interface, particularly for inner classes, that implements * {@link org.scijava.event.bushe.IEventTopicSubscriber} and {@link org.scijava.event.bushe.Prioritized}. */ -public interface PrioritizedEventTopicSubscriber extends IEventTopicSubscriber, Prioritized { +interface PrioritizedEventTopicSubscriber extends IEventTopicSubscriber, Prioritized { } \ No newline at end of file diff --git a/src/main/java/org/scijava/event/bushe/ProxySubscriber.java b/src/main/java/org/scijava/event/bushe/ProxySubscriber.java index a80cc3bf1..04ac3ce0a 100644 --- a/src/main/java/org/scijava/event/bushe/ProxySubscriber.java +++ b/src/main/java/org/scijava/event/bushe/ProxySubscriber.java @@ -25,7 +25,7 @@ * * @author Michael Bushe */ -public interface ProxySubscriber { +interface ProxySubscriber { /** @return the object this proxy is subscribed on behalf of */ public Object getProxiedSubscriber(); diff --git a/src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java index 478665f25..feaf2701b 100644 --- a/src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java @@ -6,7 +6,7 @@ /** * A Proxy Subscriber for Annotations that use topic patterns */ -public class ProxyTopicPatternSubscriber extends ProxyTopicSubscriber { +class ProxyTopicPatternSubscriber extends ProxyTopicSubscriber { private Pattern pattern; /** diff --git a/src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java index d2699b465..76a821a10 100644 --- a/src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java @@ -8,7 +8,7 @@ * {@link @org.scijava.event.bushe.annotation.EventTopicSubscriber}. Advanced EventBus * users could use this class in Aspect-Oriented code. Consider using the * {@link AnnotationProcessor} instead, it may suit your needs and be easier.*/ -public class ProxyTopicSubscriber extends AbstractProxySubscriber +class ProxyTopicSubscriber extends AbstractProxySubscriber implements org.scijava.event.bushe.IEventTopicSubscriber, VetoTopicEventListener { private String topic; diff --git a/src/main/java/org/scijava/event/bushe/PublicationStatus.java b/src/main/java/org/scijava/event/bushe/PublicationStatus.java index acdf3d4e2..84c0090d0 100644 --- a/src/main/java/org/scijava/event/bushe/PublicationStatus.java +++ b/src/main/java/org/scijava/event/bushe/PublicationStatus.java @@ -7,7 +7,7 @@ * with the corresponding PublicationStatus as the event object is processed. The EventService is not * required to set the Unpublished state. */ -public enum PublicationStatus { +enum PublicationStatus { /** Recommended default.*/ Unpublished, /** Set directly after publication on an EventService.*/ diff --git a/src/main/java/org/scijava/event/bushe/PublicationStatusTracker.java b/src/main/java/org/scijava/event/bushe/PublicationStatusTracker.java index b22520751..cc6a98595 100644 --- a/src/main/java/org/scijava/event/bushe/PublicationStatusTracker.java +++ b/src/main/java/org/scijava/event/bushe/PublicationStatusTracker.java @@ -7,7 +7,7 @@ * EventService implementations must call setEventStatus(status) on event objects and * payloads that implement this interface. */ -public interface PublicationStatusTracker { +interface PublicationStatusTracker { /** * Implementations of this method must be made thread safe. diff --git a/src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java b/src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java index 878f2eb7c..3fb264538 100644 --- a/src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java @@ -10,7 +10,7 @@ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface RuntimeTopicEventSubscriber { +@interface RuntimeTopicEventSubscriber { /** * @return name of a method (that must return a String) and whose return value will become the subscription topic. */ diff --git a/src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java b/src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java index 168574556..6d88c1432 100644 --- a/src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java @@ -7,7 +7,7 @@ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface RuntimeTopicPatternEventSubscriber { +@interface RuntimeTopicPatternEventSubscriber { /** * @return name of a method (which should return a String) and whose return value will become the subscription topic. */ diff --git a/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java b/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java index 6bfaef918..3037ee83e 100644 --- a/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java +++ b/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java @@ -22,7 +22,7 @@ * @author Michael Bushe michael@bushe.com * @see ThreadSafeEventService */ -public class SubscriberTimingEvent extends AbstractEventServiceEvent { +class SubscriberTimingEvent extends AbstractEventServiceEvent { private Long start; private Long end; private Long timeLimitMilliseconds; diff --git a/src/main/java/org/scijava/event/bushe/SwingEventService.java b/src/main/java/org/scijava/event/bushe/SwingEventService.java index aded25830..20d40e7b3 100644 --- a/src/main/java/org/scijava/event/bushe/SwingEventService.java +++ b/src/main/java/org/scijava/event/bushe/SwingEventService.java @@ -28,7 +28,7 @@ * * @author Michael Bushe michael@bushe.com */ -public class SwingEventService extends ThreadSafeEventService { +class SwingEventService extends ThreadSafeEventService { /** * By default, the SwingEventService is constructed such that any listener that takes over 200 ms causes an diff --git a/src/main/java/org/scijava/event/bushe/SwingException.java b/src/main/java/org/scijava/event/bushe/SwingException.java index 68249e45a..f46dd321e 100644 --- a/src/main/java/org/scijava/event/bushe/SwingException.java +++ b/src/main/java/org/scijava/event/bushe/SwingException.java @@ -38,7 +38,7 @@ * @todo in SwingUtils, make an invokeLater() method that saves the calling stack and catches all exceptions from a * subsequent call to SwingUtilities.invokeLater(), then throws a Swing Exception so the calling stack is saved. */ -public class SwingException extends Exception { +class SwingException extends Exception { protected StackTraceElement[] callingStackTrace; /** Default constructor */ diff --git a/src/main/java/org/scijava/event/bushe/TypeReference.java b/src/main/java/org/scijava/event/bushe/TypeReference.java index 1a40a5791..06ff73a8c 100644 --- a/src/main/java/org/scijava/event/bushe/TypeReference.java +++ b/src/main/java/org/scijava/event/bushe/TypeReference.java @@ -9,7 +9,7 @@ * Courtesy of Neil Gafter's blog. * Thanks to Curt Cox for the pointer. */ -public abstract class TypeReference { +abstract class TypeReference { private final Type type; private volatile Constructor constructor; diff --git a/src/main/java/org/scijava/event/bushe/UseTheClassOfTheAnnotatedMethodsParameter.java b/src/main/java/org/scijava/event/bushe/UseTheClassOfTheAnnotatedMethodsParameter.java index ec1e35b60..490303378 100644 --- a/src/main/java/org/scijava/event/bushe/UseTheClassOfTheAnnotatedMethodsParameter.java +++ b/src/main/java/org/scijava/event/bushe/UseTheClassOfTheAnnotatedMethodsParameter.java @@ -11,5 +11,5 @@ * Object.class cannot be used, since it is legal to subscribe to Object. hence, this class was created which documents * the issue and provides decent feedback when using an IDE's parameter insight. */ -public final class UseTheClassOfTheAnnotatedMethodsParameter { +final class UseTheClassOfTheAnnotatedMethodsParameter { } diff --git a/src/main/java/org/scijava/event/bushe/VetoEventListener.java b/src/main/java/org/scijava/event/bushe/VetoEventListener.java index 693a15a36..0c20a3c4f 100644 --- a/src/main/java/org/scijava/event/bushe/VetoEventListener.java +++ b/src/main/java/org/scijava/event/bushe/VetoEventListener.java @@ -20,7 +20,7 @@ * * @author Michael Bushe michael@bushe.com */ -public interface VetoEventListener { +interface VetoEventListener { /** * Determine whether an event should be vetoed or published. diff --git a/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicPatternSubscriber.java index fb9fa479d..3a6283fe0 100644 --- a/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicPatternSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicPatternSubscriber.java @@ -7,7 +7,7 @@ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface VetoRuntimeTopicPatternSubscriber { +@interface VetoRuntimeTopicPatternSubscriber { /** * @return name of a method (which should return a String) and whose return value will become the subscription topic. */ diff --git a/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicSubscriber.java index 04811518b..e5ce7d6eb 100644 --- a/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicSubscriber.java @@ -10,7 +10,7 @@ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface VetoRuntimeTopicSubscriber { +@interface VetoRuntimeTopicSubscriber { /** * @return name of a method (that must return a String) and whose return value will become the subscription topic. */ diff --git a/src/main/java/org/scijava/event/bushe/VetoSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoSubscriber.java index 22c86d8c9..e8172744e 100644 --- a/src/main/java/org/scijava/event/bushe/VetoSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/VetoSubscriber.java @@ -41,7 +41,7 @@ */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface VetoSubscriber { +@interface VetoSubscriber { /** The class to subscribe to, if not specified, a subscription is created for the type of the method parameter. */ public abstract Class eventClass() default UseTheClassOfTheAnnotatedMethodsParameter.class; diff --git a/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java b/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java index 8bfbb5755..a1dd81a80 100644 --- a/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java +++ b/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java @@ -5,7 +5,7 @@ * * @author Michael Bushe michael@bushe.com */ -public interface VetoTopicEventListener { +interface VetoTopicEventListener { /** * Determine whether a topic publication should be vetoed or allowed. diff --git a/src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java index bf6e9134c..72de5cbed 100644 --- a/src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java @@ -41,7 +41,7 @@ */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface VetoTopicPatternSubscriber { +@interface VetoTopicPatternSubscriber { /** The topic to subscribe to */ public abstract String topicPattern(); diff --git a/src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java index 630930660..81fbb7366 100644 --- a/src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java @@ -41,7 +41,7 @@ */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface VetoTopicSubscriber { +@interface VetoTopicSubscriber { /** The topic to subscribe to */ String topic(); From a51dfcdfa36028705c6e440f9a01e131338865c7 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 11:35:54 -0500 Subject: [PATCH 101/185] Make EventBus cleanup timer a daemon thread To prevent intermittent hangs on JVM shutdown. --- .../java/org/scijava/event/bushe/ThreadSafeEventService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java index 1a0dcf585..1f3868fd2 100644 --- a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java +++ b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java @@ -2095,7 +2095,7 @@ protected void decWeakRefPlusProxySubscriberCount() { private void startCleanup() { synchronized(listenerLock) { if (cleanupTimer == null) { - cleanupTimer = new Timer(); + cleanupTimer = new Timer(true); } if (cleanupTimerTask == null) { cleanupTimerTask = new CleanupTimerTask(); From ac03bcad87d6def72a79d78686c17cf4ead09784 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 12:23:39 -0500 Subject: [PATCH 102/185] Remove many unneeded org.bushe:eventbus classes --- .../org/scijava/event/DefaultEventBus.java | 2 +- .../scijava/event/DefaultEventService.java | 2 +- .../org/scijava/event/EventSubscriber.java | 2 +- .../bushe/AbstractEventServiceEvent.java | 56 - .../event/bushe/AnnotationProcessor.java | 557 ------- .../event/bushe/BaseProxySubscriber.java | 130 -- .../bushe/ContainerEventServiceAction.java | 71 - .../bushe/ContainerEventServiceFinder.java | 84 - .../bushe/ContainerEventServiceRegistrar.java | 248 --- .../bushe/ContainerEventServiceSupplier.java | 42 - .../org/scijava/event/bushe/EventBus.java | 423 ----- .../scijava/event/bushe/EventBusAction.java | 41 - .../org/scijava/event/bushe/EventService.java | 54 +- .../event/bushe/EventServiceAction.java | 214 --- .../event/bushe/EventServiceEvent.java | 30 - .../bushe/EventServiceExistsException.java | 8 - .../event/bushe/EventServiceLocator.java | 174 -- .../scijava/event/bushe/EventSubscriber.java | 121 +- .../bushe/EventTopicPatternSubscriber.java | 31 - .../event/bushe/EventTopicSubscriber.java | 122 +- .../scijava/event/bushe/IEventSubscriber.java | 35 - .../event/bushe/IEventTopicSubscriber.java | 38 - .../org/scijava/event/bushe/ObjectEvent.java | 42 - .../bushe/PrioritizedEventSubscriber.java | 8 - .../PrioritizedEventTopicSubscriber.java | 8 - .../bushe/ProxyTopicPatternSubscriber.java | 86 - .../event/bushe/ProxyTopicSubscriber.java | 144 -- .../bushe/RuntimeTopicEventSubscriber.java | 34 - .../RuntimeTopicPatternEventSubscriber.java | 34 - .../event/bushe/SubscriberTimingEvent.java | 116 -- .../event/bushe/SwingEventService.java | 93 -- .../event/bushe/ThreadSafeEventService.java | 137 +- ...heClassOfTheAnnotatedMethodsParameter.java | 15 - .../VetoRuntimeTopicPatternSubscriber.java | 34 - .../bushe/VetoRuntimeTopicSubscriber.java | 34 - .../scijava/event/bushe/VetoSubscriber.java | 65 - .../bushe/VetoTopicPatternSubscriber.java | 62 - .../event/bushe/VetoTopicSubscriber.java | 62 - .../event/bushe/AbstractSubscriber.java | 27 - .../event/bushe/AnnotatedEventSubscriber.java | 88 -- .../event/bushe/AnnotatedVetoSubscriber.java | 83 - .../AnotherAnnotatedEventSubscriber.java | 46 - ...AnotherDoubleAnnotatedEventSubscriber.java | 23 - .../scijava/event/bushe/BadEventService.java | 4 +- .../event/bushe/ConcreteSubscriber.java | 17 - .../bushe/DoubleAnnotatedEventSubscriber.java | 33 - .../bushe/EventServiceLocatorTestCase.java | 32 - .../java/org/scijava/event/bushe/Factory.java | 12 - .../event/bushe/Issue15Subscriber.java | 68 - .../event/bushe/Issue15Subscriber2.java | 65 - .../bushe/RuntimeTopicPatternSubscriber.java | 32 - .../event/bushe/RuntimeTopicSubscriber.java | 31 - .../bushe/StrongAnnotatedEventSubscriber.java | 30 - .../StrongClassAnnotatedEventSubscriber.java | 24 - .../event/bushe/SubscriberForTest.java | 2 +- .../bushe/TestAnnotationInAbstractClass.java | 18 - .../bushe/TestContainerEventService.java | 218 --- .../event/bushe/TestDefaultEventService.java | 1394 ----------------- .../scijava/event/bushe/TestEventAction.java | 181 --- .../org/scijava/event/bushe/TestEventBus.java | 570 ------- .../event/bushe/TestEventBusServiceClass.java | 32 - .../TestEventBusServiceClassBadType.java | 30 - .../event/bushe/TestEventBusTiming.java | 107 -- .../event/bushe/TestEventServiceLocator.java | 50 - .../event/bushe/TestEventServiceLocator2.java | 46 - .../event/bushe/TestEventServiceLocator3.java | 44 - .../event/bushe/TestEventServiceLocator4.java | 44 - .../event/bushe/TestEventServiceLocator5.java | 43 - .../event/bushe/TestEventServiceLocator6.java | 44 - .../event/bushe/TestEventServiceLocator7.java | 49 - .../TestEventServiceLocatorConfiguration.java | 28 - ...TestEventServiceLocatorConfiguration2.java | 28 - ...TestEventServiceLocatorConfiguration3.java | 28 - ...TestEventServiceLocatorConfiguration4.java | 27 - .../scijava/event/bushe/TestPerformance.java | 4 +- .../bushe/TestPrioritizedSubscribers.java | 591 ------- .../event/bushe/TestPublicationStates.java | 67 - .../event/bushe/TopicSubscriberForTest.java | 2 +- .../WeakClassAnnotatedEventSubscriber.java | 24 - 79 files changed, 130 insertions(+), 7615 deletions(-) delete mode 100644 src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java delete mode 100644 src/main/java/org/scijava/event/bushe/AnnotationProcessor.java delete mode 100644 src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java delete mode 100644 src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java delete mode 100644 src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java delete mode 100644 src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java delete mode 100644 src/main/java/org/scijava/event/bushe/EventBus.java delete mode 100644 src/main/java/org/scijava/event/bushe/EventBusAction.java delete mode 100644 src/main/java/org/scijava/event/bushe/EventServiceAction.java delete mode 100644 src/main/java/org/scijava/event/bushe/EventServiceEvent.java delete mode 100644 src/main/java/org/scijava/event/bushe/EventServiceExistsException.java delete mode 100644 src/main/java/org/scijava/event/bushe/EventServiceLocator.java delete mode 100644 src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/IEventSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/ObjectEvent.java delete mode 100644 src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java delete mode 100644 src/main/java/org/scijava/event/bushe/SwingEventService.java delete mode 100644 src/main/java/org/scijava/event/bushe/UseTheClassOfTheAnnotatedMethodsParameter.java delete mode 100644 src/main/java/org/scijava/event/bushe/VetoRuntimeTopicPatternSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/VetoRuntimeTopicSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/VetoSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java delete mode 100644 src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/AbstractSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/AnnotatedEventSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/AnnotatedVetoSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/AnotherAnnotatedEventSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/AnotherDoubleAnnotatedEventSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/ConcreteSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/DoubleAnnotatedEventSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/EventServiceLocatorTestCase.java delete mode 100644 src/test/java/org/scijava/event/bushe/Factory.java delete mode 100644 src/test/java/org/scijava/event/bushe/Issue15Subscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/Issue15Subscriber2.java delete mode 100644 src/test/java/org/scijava/event/bushe/RuntimeTopicPatternSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/RuntimeTopicSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/StrongAnnotatedEventSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/StrongClassAnnotatedEventSubscriber.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestAnnotationInAbstractClass.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestContainerEventService.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestDefaultEventService.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventAction.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventBus.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventBusTiming.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator2.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator3.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator4.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator5.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator6.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocator7.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration2.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration3.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration4.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java delete mode 100644 src/test/java/org/scijava/event/bushe/TestPublicationStates.java delete mode 100644 src/test/java/org/scijava/event/bushe/WeakClassAnnotatedEventSubscriber.java diff --git a/src/main/java/org/scijava/event/DefaultEventBus.java b/src/main/java/org/scijava/event/DefaultEventBus.java index 85ae5f382..365102949 100644 --- a/src/main/java/org/scijava/event/DefaultEventBus.java +++ b/src/main/java/org/scijava/event/DefaultEventBus.java @@ -59,7 +59,7 @@ public class DefaultEventBus extends ThreadSafeEventService { public DefaultEventBus(final ThreadService threadService, final LogService log) { - super(200L, false, null, null, null); + super(200L, null, null, null); this.threadService = threadService; this.log = log; } diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index b36ec1929..074a20bad 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -263,7 +263,7 @@ private synchronized void keepIt(final Object o, final ProxySubscriber subscr *

      * Recapitulates some logic from * {@code org.scijava.event.bushe.BaseProxySubscriber}, because that class - * implements {@link org.scijava.event.bushe.IEventSubscriber} as a raw type, + * implements {@link org.scijava.event.bushe.EventSubscriber} as a raw type, * which is incompatible with this class implementing SciJava's * {@link EventSubscriber} as a typed interface; it becomes impossible to * implement both {@code onEvent(Object)} and {@code onEvent(E)}. diff --git a/src/main/java/org/scijava/event/EventSubscriber.java b/src/main/java/org/scijava/event/EventSubscriber.java index a25ba2c1a..a36181639 100644 --- a/src/main/java/org/scijava/event/EventSubscriber.java +++ b/src/main/java/org/scijava/event/EventSubscriber.java @@ -44,7 +44,7 @@ * @param Type of event for which to listen */ public interface EventSubscriber extends - org.scijava.event.bushe.IEventSubscriber + org.scijava.event.bushe.EventSubscriber { @Override diff --git a/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java b/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java deleted file mode 100644 index 2497af721..000000000 --- a/src/main/java/org/scijava/event/bushe/AbstractEventServiceEvent.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -/** - * Convenience base class for EventServiceEvents in the application. Provides the convenience of - * holding the event source publication and event status. It is not necessary to use this event class when - * using an EventService. - * - * @author Michael Bushe michael@bushe.com - */ -abstract class AbstractEventServiceEvent implements EventServiceEvent, PublicationStatusTracker { - - private Object source = null; - protected final Object stateLock = new Object(); - private PublicationStatus publicationStatus = PublicationStatus.Unpublished; - - /** - * Default constructor - * - * @param source the source of the event - */ - public AbstractEventServiceEvent(Object source) { - this.source = source; - } - - /** @return the source of this event */ - public Object getSource() { - return source; - } - - public PublicationStatus getPublicationStatus() { - synchronized (stateLock) { - return publicationStatus; - } - } - - public void setPublicationStatus(PublicationStatus status) { - synchronized (stateLock) { - publicationStatus = status; - } - } -} diff --git a/src/main/java/org/scijava/event/bushe/AnnotationProcessor.java b/src/main/java/org/scijava/event/bushe/AnnotationProcessor.java deleted file mode 100644 index c7428c7e1..000000000 --- a/src/main/java/org/scijava/event/bushe/AnnotationProcessor.java +++ /dev/null @@ -1,557 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.annotation.Annotation; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.regex.Pattern; -import java.util.Arrays; - -/** - * Enhances classes that use EventService Annotations. - *

      - * This class makes the EventService annotations "come alive." This can be used in code like so: - *

      - * 
      - * public class MyAppController {
      - *   public MyAppController {
      - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
      - *   }
      - *   @EventSubscriber
      - *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
      - *      //do something
      - *   }
      - *   @EventSubscriber
      - *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
      - *      //do something
      - *   }
      - * }
      - * ... some other place, needed in some cases when the like a window disposal before it's garbage collected ....
      - * AnnotationProcessor.unprocess(this);
      - * 
      - * 
      - *

      - * This class can be leveraged in outside of source code in other ways in which Annotations are used:

      • In an - * Aspect-Oriented tool
      • In a Swing Framework classloader that wants to load and understand events.
      • In other - * Inversion of Control containers, such as Spring or PicoContainer.
      • In the apt tool, though this does not generate - * code.
      • In a Annotation Processing Tool plugin, when it becomes available.
      Support for these other methods - * are not yet implemented. - */ -class AnnotationProcessor { - - protected static final Logger LOG = Logger.getLogger(EventService.class.getName()); - - /** - * Add the appropriate subscribers to one or more EventServices for an instance of a class with - * EventBus annotations. - * @param obj the instance that may or may not have annotations - */ - public static void process(Object obj) { - processOrUnprocess(obj, true); - } - - /** - * Remove the appropriate subscribers from one or more EventServices for an instance of a class with - * EventBus annotations. - * @param obj the instance that may or may not have annotations - */ - public static void unprocess(Object obj) { - processOrUnprocess(obj, false); - } - - private static void processOrUnprocess(Object obj, boolean add) { - if (obj == null) { - return; - } - Class cl = obj.getClass(); - Method[] methods = cl.getMethods(); - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Looking for EventBus annotations for class " + cl + ", methods:" + Arrays.toString(methods)); - } - for (Method method : methods) { - - EventSubscriber classAnnotation = method.getAnnotation(EventSubscriber.class); - if (classAnnotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found EventSubscriber:"+classAnnotation +" on method:" + method); - } - process(classAnnotation, obj, method, add); - } - EventTopicSubscriber topicAnnotation = method.getAnnotation(EventTopicSubscriber.class); - if (topicAnnotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found EventTopicSubscriber: "+topicAnnotation +" on method:" + method); - } - process(topicAnnotation, obj, method, add); - } - EventTopicPatternSubscriber topicPatternAnnotation = method.getAnnotation(EventTopicPatternSubscriber.class); - if (topicPatternAnnotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found EventTopicPatternSubscriber: "+topicPatternAnnotation+" on method:" + method); - } - process(topicPatternAnnotation, obj, method, add); - } - RuntimeTopicEventSubscriber runtimeTopicAnnotation = method.getAnnotation(RuntimeTopicEventSubscriber.class); - if (runtimeTopicAnnotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found RuntimeTopicEventSubscriber: "+runtimeTopicAnnotation+" on method:" + method); - } - process(runtimeTopicAnnotation, obj, method, add); - } - RuntimeTopicPatternEventSubscriber annotation = method.getAnnotation(RuntimeTopicPatternEventSubscriber.class); - if (annotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found RuntimeTopicPatternEventSubscriber:"+annotation+" on method:" + method); - } - process(annotation, obj, method, add); - } - - - VetoSubscriber vetoClassAnnotation = method.getAnnotation(VetoSubscriber.class); - if (vetoClassAnnotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found VetoSubscriber:"+vetoClassAnnotation +" on method:" + method); - } - process(vetoClassAnnotation, obj, method, add); - } - VetoTopicSubscriber vetoTopicAnnotation = method.getAnnotation(VetoTopicSubscriber.class); - if (vetoTopicAnnotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found VetoTopicSubscriber: "+vetoTopicAnnotation +" on method:" + method); - } - process(vetoTopicAnnotation, obj, method, add); - } - VetoTopicPatternSubscriber vetoTopicPatternAnnotation = method.getAnnotation(VetoTopicPatternSubscriber.class); - if (vetoTopicPatternAnnotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found VetoTopicPatternSubscriber: "+vetoTopicPatternAnnotation+" on method:" + method); - } - process(vetoTopicPatternAnnotation, obj, method, add); - } - VetoRuntimeTopicSubscriber vetoRuntimeTopicAnnotation = method.getAnnotation(VetoRuntimeTopicSubscriber.class); - if (vetoRuntimeTopicAnnotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found VetoRuntimeTopicSubscriber: "+vetoRuntimeTopicAnnotation+" on method:" + method); - } - process(vetoRuntimeTopicAnnotation, obj, method, add); - } - VetoRuntimeTopicPatternSubscriber vetoAnnotation = method.getAnnotation(VetoRuntimeTopicPatternSubscriber.class); - if (vetoAnnotation != null) { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("Found VetoRuntimeTopicPatternSubscriber:"+vetoAnnotation+" on method:" + method); - } - process(vetoAnnotation, obj, method, add); - } - } - } - - - private static void process(EventTopicPatternSubscriber topicPatternAnnotation, Object obj, - Method method, boolean add) { - //Check args - String topicPattern = topicPatternAnnotation.topicPattern(); - if (topicPattern == null) { - throw new IllegalArgumentException("Topic pattern cannot be null for EventTopicPatternSubscriber annotation"); - } - - //Get event service - Class eventServiceClass = topicPatternAnnotation.autoCreateEventServiceClass(); - String eventServiceName = topicPatternAnnotation.eventServiceName(); - EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); - int priority = topicPatternAnnotation.priority(); - - //Create proxy and subscribe - Pattern pattern = Pattern.compile(topicPattern); - //See Issue #18 - //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. - if (add) { - ProxyTopicPatternSubscriber subscriber = new ProxyTopicPatternSubscriber(obj, method, - topicPatternAnnotation.referenceStrength(), priority, eventService, - topicPattern, pattern, false); - - eventService.subscribeStrongly(pattern, subscriber); - } else { - eventService.unsubscribe(pattern, obj); - } - } - - private static void process(EventTopicSubscriber topicAnnotation, Object obj, Method method, boolean add) { - //Check args - String topic = topicAnnotation.topic(); - if (topic == null) { - throw new IllegalArgumentException("Topic cannot be null for EventTopicSubscriber annotation"); - } - - //Get event service - Class eventServiceClass = topicAnnotation.autoCreateEventServiceClass(); - String eventServiceName = topicAnnotation.eventServiceName(); - EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); - - int priority = topicAnnotation.priority(); - - //See Issue #18 - //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. - if (add) { - //Create proxy and subscribe - ProxyTopicSubscriber subscriber = new ProxyTopicSubscriber(obj, method, - topicAnnotation.referenceStrength(), priority, eventService, topic, false); - - eventService.subscribeStrongly(topic, subscriber); - } else { - eventService.unsubscribe(topic, obj); - } - } - - private static void process(EventSubscriber annotation, Object obj, Method method, boolean add) { - //Check args - Class eventClass = annotation.eventClass(); - if (eventClass == null) { - throw new IllegalArgumentException("Event class cannot be null for EventSubscriber annotation"); - } else if (UseTheClassOfTheAnnotatedMethodsParameter.class.equals(eventClass)) { - Class[] params = method.getParameterTypes(); - if (params.length < 1) { - throw new RuntimeException("Expected annotated method to have one parameter."); - } else { - eventClass = params[0]; - } - } - - //Get event service - Class eventServiceClass = annotation.autoCreateEventServiceClass(); - String eventServiceName = annotation.eventServiceName(); - EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); - - if (add) { - int priority = annotation.priority(); - - //Create proxy and subscribe - //See https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - BaseProxySubscriber subscriber = new BaseProxySubscriber(obj, method, annotation.referenceStrength(), - priority, eventService, eventClass, false); - if (annotation.exact()) { - //See Issue #18 - //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. - eventService.subscribeExactlyStrongly(eventClass, subscriber); - } else { - //See Issue #18 - //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. - eventService.subscribeStrongly(eventClass, subscriber); - } - } else { - if (annotation.exact()) { - eventService.unsubscribeExactly(eventClass, obj); - } else { - eventService.unsubscribe(eventClass, obj); - } - } - } - - - - private static void process(final RuntimeTopicEventSubscriber annotation, final Object subscriber, final Method method, boolean add) { - EventTopicSubscriber eventTopicSubscriber = new EventTopicSubscriber() { - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public Class autoCreateEventServiceClass() { - return annotation.autoCreateEventServiceClass(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public String eventServiceName() { - return annotation.eventServiceName(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public ReferenceStrength referenceStrength() { - return annotation.referenceStrength(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public int priority() { - return annotation.priority(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public String topic() { - return getTopic(annotation.methodName(), subscriber, method); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public Class annotationType() { - return annotation.annotationType(); - } - }; - process(eventTopicSubscriber, subscriber, method, add); - } - - private static void process(final RuntimeTopicPatternEventSubscriber annotation, final Object subscriber, final Method method, boolean add) { - EventTopicPatternSubscriber eventTopicPatternSubscriber = new EventTopicPatternSubscriber() { - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public Class autoCreateEventServiceClass() { - return annotation.autoCreateEventServiceClass(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public String eventServiceName() { - return annotation.eventServiceName(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public ReferenceStrength referenceStrength() { - return annotation.referenceStrength(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public int priority() { - return annotation.priority(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public boolean exact() { - return annotation.exact(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public String topicPattern() { - return getTopic(annotation.methodName(), subscriber, method); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public Class annotationType() { - return annotation.annotationType(); - } - }; - process(eventTopicPatternSubscriber, subscriber, method, add); - } - - /* This is a cut and paste from above practically, sure which Annotations could be extended. - * TODO: When Java 7 comes out, or whatever JSR-308 is delivered, reduce this file by 70% */ - private static void process(VetoTopicPatternSubscriber topicPatternAnnotation, Object obj, Method method, boolean add) { - //Check args - String topicPattern = topicPatternAnnotation.topicPattern(); - if (topicPattern == null) { - throw new IllegalArgumentException("Topic pattern cannot be null for VetoTopicPatternSubscriber annotation"); - } - - //Get event service - Class eventServiceClass = topicPatternAnnotation.autoCreateEventServiceClass(); - String eventServiceName = topicPatternAnnotation.eventServiceName(); - EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); - int priority = topicPatternAnnotation.priority(); - - //Create proxy and subscribe - Pattern pattern = Pattern.compile(topicPattern); - ProxyTopicPatternSubscriber subscriber = new ProxyTopicPatternSubscriber(obj, method, topicPatternAnnotation.referenceStrength(), - priority, eventService, topicPattern, pattern, true); - - //See Issue #18 - //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. - if (add) { - eventService.subscribeVetoListenerStrongly(pattern, subscriber); - } else { - eventService.unsubscribeVeto(pattern, obj); - } - } - - private static void process(VetoTopicSubscriber topicAnnotation, Object obj, Method method, boolean add) { - //Check args - String topic = topicAnnotation.topic(); - if (topic == null) { - throw new IllegalArgumentException("Topic cannot be null for VetoTopicSubscriber annotation"); - } - - //Get event service - Class eventServiceClass = topicAnnotation.autoCreateEventServiceClass(); - String eventServiceName = topicAnnotation.eventServiceName(); - EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); - - int priority = topicAnnotation.priority(); - - //Create proxy and subscribe - ProxyTopicSubscriber subscriber = new ProxyTopicSubscriber(obj, method, - topicAnnotation.referenceStrength(), priority, eventService, topic, true); - - //See Issue #18 - //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. - if (add) { - eventService.subscribeVetoListenerStrongly(topic, subscriber); - } else { - eventService.unsubscribeVeto(topic, obj); - } - } - - private static void process(VetoSubscriber annotation, Object obj, Method method, boolean add) { - //Check args - Class eventClass = annotation.eventClass(); - if (eventClass == null) { - throw new IllegalArgumentException("Event class cannot be null for VetoSubscriber annotation"); - } else if (UseTheClassOfTheAnnotatedMethodsParameter.class.equals(eventClass)) { - Class[] params = method.getParameterTypes(); - if (params.length < 1) { - throw new RuntimeException("Expected annotated method to have one parameter."); - } else { - eventClass = params[0]; - } - } - - //Get event service - Class eventServiceClass = annotation.autoCreateEventServiceClass(); - String eventServiceName = annotation.eventServiceName(); - EventService eventService = getEventServiceFromAnnotation(eventServiceName, eventServiceClass); - - int priority = annotation.priority(); - - //Create proxy and subscribe - //See https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - BaseProxySubscriber subscriber = new BaseProxySubscriber(obj, method, annotation.referenceStrength(), - priority, eventService, eventClass, true); - if (add) { - if (annotation.exact()) { - //See Issue #18 - //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. - eventService.subscribeVetoListenerExactlyStrongly(eventClass, subscriber); - } else { - //See Issue #18 - //Also note that this post is wrong: https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=19499&forumID=1834 - //Since two WeakReferences are not treated as one. So this always has to be strong and we'll have to clean up occasionally. - eventService.subscribeVetoListenerStrongly(eventClass, subscriber); - } - } else { - if (annotation.exact()) { - eventService.unsubscribeVetoExactly(eventClass, obj); - } else { - eventService.unsubscribeVeto(eventClass, obj); - } - } - } - - - private static void process(final VetoRuntimeTopicSubscriber annotation, final Object subscriber, final Method method, boolean add) { - VetoTopicSubscriber eventTopicSubscriber = new VetoTopicSubscriber() { - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public Class autoCreateEventServiceClass() { - return annotation.autoCreateEventServiceClass(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public String eventServiceName() { - return annotation.eventServiceName(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public ReferenceStrength referenceStrength() { - return annotation.referenceStrength(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public int priority() { - return annotation.priority(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public String topic() { - return getTopic(annotation.methodName(), subscriber, method); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public Class annotationType() { - return annotation.annotationType(); - } - }; - process(eventTopicSubscriber, subscriber, method, add); - } - - private static void process(final VetoRuntimeTopicPatternSubscriber annotation, final Object subscriber, final Method method, boolean add) { - VetoTopicPatternSubscriber eventTopicPatternSubscriber = new VetoTopicPatternSubscriber() { - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public Class autoCreateEventServiceClass() { - return annotation.autoCreateEventServiceClass(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public String eventServiceName() { - return annotation.eventServiceName(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public ReferenceStrength referenceStrength() { - return annotation.referenceStrength(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public int priority() { - return annotation.priority(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public boolean exact() { - return annotation.exact(); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public String topicPattern() { - return getTopic(annotation.methodName(), subscriber, method); - } - - //TODO uncomment when language level is set to 1.6 (2.0) @Override - public Class annotationType() { - return annotation.annotationType(); - } - }; - process(eventTopicPatternSubscriber, subscriber, method, add); - } - - - private static String getTopic(String methodName, Object subscriber, Method method) { - try { - Method runtimeEvalMethod = subscriber.getClass().getMethod(methodName, new Class[0]); - //necessary in case the method does not have public access or if the class it belongs - //to isn't public - runtimeEvalMethod.setAccessible(true); - return runtimeEvalMethod.invoke(subscriber, new Object[0]).toString(); - } catch (SecurityException e) { - throw new RuntimeException("Could not retrieve method for subscription. Method: " + methodName, e); - } catch (NoSuchMethodException e) { - throw new RuntimeException("Could not retrieve method for subscription. Method: " + methodName, e); - } catch (InvocationTargetException e) { - e.getTargetException().printStackTrace(); - throw new RuntimeException("Could not invoke method for subscription. Method: " + methodName, e); - } catch (IllegalAccessException e) { - throw new RuntimeException("Could not invoke method for subscription. Method: " + methodName, e); - } - } - - - private static EventService getEventServiceFromAnnotation(String eventServiceName, - Class eventServiceClass) { - EventService eventService = EventServiceLocator.getEventService(eventServiceName); - if (eventService == null) { - if (EventServiceLocator.SERVICE_NAME_EVENT_BUS.equals(eventServiceName)) { - //This may be the first time the EventBus is accessed. - eventService = EventServiceLocator.getSwingEventService(); - } else { - //The event service does not yet exist, create it - try { - eventService = eventServiceClass.newInstance(); - } catch (InstantiationException e) { - throw new RuntimeException("Could not instance of create EventService class " + eventServiceClass, e); - } catch (IllegalAccessException e) { - throw new RuntimeException("Could not instance of create EventService class " + eventServiceClass, e); - } - try { - EventServiceLocator.setEventService(eventServiceName, eventService); - } catch (EventServiceExistsException e) { - //ignore it, it's OK - eventService = EventServiceLocator.getEventService(eventServiceName); - } - } - } - return eventService; - } - -} diff --git a/src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java b/src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java deleted file mode 100644 index a84bcdde7..000000000 --- a/src/main/java/org/scijava/event/bushe/BaseProxySubscriber.java +++ /dev/null @@ -1,130 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** A class is subscribed to an EventService on behalf of another object. */ -class BaseProxySubscriber extends AbstractProxySubscriber - implements org.scijava.event.bushe.IEventSubscriber, VetoEventListener { - private Class subscriptionClass; - - /** - * Creates a proxy. This does not subscribe it. - * - * @param proxiedSubscriber the subscriber that the proxy will call when an event is published - * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter - * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should - * be too - * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer - * exist - * @param subscription the class to subscribe to, used for unsubscription only - * @param veto whether this is a veto subscriber - */ - public BaseProxySubscriber(Object proxiedSubscriber, Method subscriptionMethod, ReferenceStrength referenceStrength, - EventService es, Class subscription, boolean veto) { - this(proxiedSubscriber, subscriptionMethod, referenceStrength, 0, es, subscription, veto); - } - - /** - * Creates a proxy with a priority. This does not subscribe it. - * - * @param proxiedSubscriber the subscriber that the proxy will call when an event is published - * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter - * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should - * be too - * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer - * exist - * @param subscription the class to subscribe to, used for unsubscription only - * @param veto whether this is a veto subscriber - */ - public BaseProxySubscriber(Object proxiedSubscriber, Method subscriptionMethod, ReferenceStrength referenceStrength, - int priority, EventService es, Class subscription, boolean veto) { - super(proxiedSubscriber, subscriptionMethod, referenceStrength, priority, es, veto); - this.subscriptionClass = subscription; - Class[] params = subscriptionMethod.getParameterTypes(); - if (params == null || params.length != 1 || params[0].isPrimitive()) { - throw new IllegalArgumentException("The subscriptionMethod must have a single non-primitive parameter."); - } - } - - /** - * Handles the event publication by pushing it to the real subscriber's subscription Method. - * - * @param event The Object that is being published. - */ - public void onEvent(Object event) { - Object[] args = new Object[]{event}; - Method subscriptionMethod = null; - Object obj = null; - try { - obj = getProxiedSubscriber(); - if (obj == null) { - //has been garbage collected - return; - } - subscriptionMethod = getSubscriptionMethod(); - subscriptionMethod.invoke(obj, args); - } catch (IllegalAccessException e) { - String message = "Exception when invoking annotated method from EventService publication. Event class:" + event.getClass() + ", Event:" + event + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(); - retryReflectiveCallUsingAccessibleObject(args, subscriptionMethod, obj, e, message); - } catch (InvocationTargetException e) { - throw new RuntimeException("InvocationTargetException when invoking annotated method from EventService publication. Event class:" + event.getClass() + ", Event:" + event + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(), e); - } - } - - - public boolean shouldVeto(Object event) { - Object[] args = new Object[]{event}; - Method subscriptionMethod = null; - Object obj = null; - try { - obj = getProxiedSubscriber(); - if (obj == null) { - //has been garbage collected - return false; - } - subscriptionMethod = getSubscriptionMethod(); - return Boolean.valueOf(subscriptionMethod.invoke(obj, args)+""); - } catch (IllegalAccessException e) { - String message = "Exception when invoking annotated method from EventService publication. Event class:" + event.getClass() + ", Event:" + event + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(); - return retryReflectiveCallUsingAccessibleObject(args, subscriptionMethod, obj, e, message); - } catch (InvocationTargetException e) { - throw new RuntimeException("InvocationTargetException when invoking annotated method from EventService publication. Event class:" + event.getClass() + ", Event:" + event + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(), e); - } - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof BaseProxySubscriber) { - if (!super.equals(obj)) { - return false; - } - BaseProxySubscriber bps = (BaseProxySubscriber) obj; - if (subscriptionClass != bps.subscriptionClass) { - if (subscriptionClass == null) { - return false; - } else { - if (!subscriptionClass.equals(bps.subscriptionClass)) { - return false; - } - } - } - return true; - } else { - return false; - } - } - - @Override - public String toString() { - return "BaseProxySubscriber{" + - "subscription=" + subscriptionClass + - "veto=" + veto + - "realSubscriber=" + getProxiedSubscriber() + - ", subscriptionMethod=" + getSubscriptionMethod() + - ", referenceStrength=" + getReferenceStrength() + - ", eventService=" + getEventService() + - '}'; - } - -} diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java deleted file mode 100644 index 39844dfe4..000000000 --- a/src/main/java/org/scijava/event/bushe/ContainerEventServiceAction.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import java.awt.Component; -import java.awt.event.ActionEvent; -import javax.swing.ImageIcon; - -/** - * When fired, this action publishes an ActionEvent on a Container EventService. - * See {@link EventServiceAction} for more information. - *

      - * By default, the Container EventService is found by asking the ContainerEventServiceFinder to find the EventService - * for the source of the fired ActionEvent, which must be a java.awt.Component and contained in a hierarchy (the source - * must have been added to another Swing container). If the action was on a button, this means the container hierarchy - * of the button is walked (up) until a ContainerEventServiceSupplier is found or until the top of the hierarchy is - * reached, at which point a ContainerEventService is created automatically on the fly via the top container's - * putClientProperty() method using the key {@link ContainerEventServiceFinder#CLIENT_PROPERTY_KEY_TOP_LEVEL_EVENT_SERVICE}. - * If the event is from a JPopupMenu then the popup menu's invoker's hierarchy is walked. - *

      - * To exhibit other behavior, override the getSwingEventService() to return another EventService. For example, the - * creator of a popup menu may pass itself to the ContainerEventServiceFinder to return a parent's EventService. - *

      - * - * @author Michael Bushe michael@bushe.com - * @see EventServiceAction for further documentation - * @see ContainerEventServiceFinder on how the service is found - */ -class ContainerEventServiceAction extends EventServiceAction { - public ContainerEventServiceAction() { - } - - public ContainerEventServiceAction(String actionName, ImageIcon icon) { - super(actionName, icon); - } - - protected EventService getEventService(ActionEvent event) { - Component comp = null; - try { - if (event.getSource() instanceof Component) { - comp = (Component) event.getSource(); - } - if (comp == null) { - if (getThrowsExceptionOnNullEventService()) { - throw new RuntimeException("ActionEvent source was null, could not find event bus, must override getContainerEventService in action with id:" + getName()); - } - } else { - return ContainerEventServiceFinder.getEventService(comp); - } - } catch (ClassCastException ex) { - if (getThrowsExceptionOnNullEventService()) { - throw new RuntimeException("ActionEvent source was not a component (" + (comp == null ? "null" : comp.getClass() + "") + "), must override getContainerEventService in action with id:" + getName(), ex); - } - } - return null; - } -} - diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java deleted file mode 100644 index a3464241f..000000000 --- a/src/main/java/org/scijava/event/bushe/ContainerEventServiceFinder.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import java.awt.Component; -import javax.swing.JComponent; -import javax.swing.JPopupMenu; -import javax.swing.RootPaneContainer; - -/** - * This class finds a component's container event service, and creates one if necessary and possible. - *

      - * A Container EventService is, unlike the EventBus, an EventService that is container specific, in other words, it is - * shared only amongst components within a container. For example, a Form component can supply an EventService used - * only by components in the form. The Form's components can publish value change events on their Container's Event - * Service. The Form's Model and Validator may listen to these events to collect data and show errors, respectively. - *

      - * Most importantly, Container EventService's cuts down event traffic, avoid naming and listener clashes, promotes - * componentization, and splits events usage into logical subsets. - *

      - * The finder will walk up a component's hierarchy searching for a parent that implements ContainerEventServiceSupplier. - * If it find one, it returns it. If it doesn't find one, the top level JComponent (specifically, the highest parent in - * the hierarchy, typically a JRootPane) has a client property added to it (if not already set) that has the value of a - * new SwingEventService, which is then returned. The EventBus is never returned. - * - * @author Michael Bushe michael@bushe.com - */ -class ContainerEventServiceFinder { - /** The client property used to put a new SwingEventService on top-level components. */ - public static final String CLIENT_PROPERTY_KEY_TOP_LEVEL_EVENT_SERVICE = "ContainerEventServiceFinder.createdService"; - - /** - * Walks the component's parents until it find an ContainerEventServiceSupplier and returns the supplier's - * EventService. If the component in the tree is a JPopupMenu, then the menu's invoker is walked. - * - * @param component any component - * - * @return the ContainerEventService of the nearest parent - */ - public static EventService getEventService(Component component) { - while (component != null) { - if (component instanceof ContainerEventServiceSupplier) { - return ((ContainerEventServiceSupplier) component).getContainerEventService(); - } - if (component instanceof JPopupMenu) { - component = ((JPopupMenu) component).getInvoker(); - } else { - if (component.getParent() == null) { - //There is no supplier. Instead of returning null, make an event service - //and stick it in the client properties of the top level container. - if (component instanceof RootPaneContainer) { - component = ((RootPaneContainer) component).getRootPane(); - } - if (!(component instanceof JComponent)) { - return null; - } - JComponent jComp = ((JComponent) component); - SwingEventService eventService = (SwingEventService) jComp.getClientProperty(CLIENT_PROPERTY_KEY_TOP_LEVEL_EVENT_SERVICE); - if (eventService == null) { - eventService = new SwingEventService(); - jComp.putClientProperty(CLIENT_PROPERTY_KEY_TOP_LEVEL_EVENT_SERVICE, eventService); - } - return eventService; - } else { - component = component.getParent(); - } - } - } - return null; - } -} diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java deleted file mode 100644 index d39d1238e..000000000 --- a/src/main/java/org/scijava/event/bushe/ContainerEventServiceRegistrar.java +++ /dev/null @@ -1,248 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import javax.swing.JComponent; -import javax.swing.event.AncestorEvent; -import javax.swing.event.AncestorListener; -import java.awt.event.ContainerEvent; -import java.awt.event.ContainerListener; -import java.awt.event.HierarchyEvent; -import java.awt.event.HierarchyListener; - - -/** - * Registers a component with it's Container's EventService while keeping track of the component's container. - *

      - * Registering with a component's ContainerEventService is tricky since components may not be in their hierarchy when - * they want to register with it, or components may move (though rarely). This class subscribes a component with it's - * container event service. If it is unavailable, the registrar waits until the component's Container becomes available - * and subscribes at that time. If the component changes Containers, the registrar unsubscribes the component from its - * old container and subscribes it to the new one. - * - * @author Michael Bushe michael@bushe.com - */ -class ContainerEventServiceRegistrar { - private JComponent jComp; - private IEventSubscriber eventSubscriber; - private VetoEventListener vetoSubscriber; - private Class[] eventClasses; - private IEventTopicSubscriber eventTopicSubscriber; - private VetoTopicEventListener vetoTopicSubscriber; - private String[] topics; - private EventService containerEventService; - - /** - * Create a registrar that will keep track of the container event service, typically used in the publish-only cases - * where the getContainerEventServer() call will be made before publication. - * - * @param jComp the component whose container to monitor - */ - public ContainerEventServiceRegistrar(JComponent jComp) { - this(jComp, null, null, null, null, null, null); - } - - /** - * Create a registrar that will keep track of the container event service, and subscribe the subscriber to the - * eventClass when the ContainerEventService is available and when it changes. - * - * @param jComp the component whose container to monitor - * @param eventSubscriber the subscriber to register to the Container EventServer - * @param eventClasses the class(es) to register for - */ - public ContainerEventServiceRegistrar(JComponent jComp, IEventSubscriber eventSubscriber, Class... eventClasses) { - this(jComp, eventSubscriber, null, eventClasses, null, null, null); - } - - /** - * Create a registrar that will keep track of the container event service, and subscribe the subscriber to the topic - * when the ContainerEventService is available and when it changes. - * - * @param jComp the component whose container to monitor - * @param eventTopicSubscriber the topic subscriber to register to the Container EventServer - * @param topics the event topic name to register for - */ - public ContainerEventServiceRegistrar(JComponent jComp, IEventTopicSubscriber eventTopicSubscriber, String... topics) { - this(jComp, null, null, null, eventTopicSubscriber, null, topics); - } - - /** - * Create a registrar that will keep track of the container event service, and subscribeStrongly the veto subscriber - * to the topics when the ContainerEventService is available and when it changes. - * - * @param jComp the component whose container to monitor - * @param vetoSubscriber the veto subscriber to register to the Container EventServer - * @param eventClasses the classes of event to register for - */ - public ContainerEventServiceRegistrar(JComponent jComp, VetoEventListener vetoSubscriber, Class... eventClasses) { - this(jComp, null, vetoSubscriber, eventClasses, null, null, null); - } - - /** - * Create a registrar that will keep track of the container event service, and subscribeStrongly the veto subscriber - * to the topics when the ContainerEventService is available and when it changes. - * - * @param jComp the component whose container to monitor - * @param vetoTopicSubscriber the veto subscriber to register to the Container EventServer - * @param topics the event topic(s) to register for - */ - public ContainerEventServiceRegistrar(JComponent jComp, VetoTopicEventListener vetoTopicSubscriber, String... topics) { - this(jComp, null, null, null, null, vetoTopicSubscriber, topics); - } - - /** - * Create a registrar that will keep track of the container event service, and subscribe the subscriber to the topics - * and the event classes when the ContainerEventService is available and when it changes. - * - * @param jComp the component whose container to monitor - * @param eventSubscriber the subscriber to register to the Container EventServer - * @param eventClasses the classes of event to register for - * @param eventTopicSubscriber the topic subscriber to keep registered to the topic(s) - * @param topics the event topic names to register for - */ - public ContainerEventServiceRegistrar(JComponent jComp, IEventSubscriber eventSubscriber, Class[] eventClasses, - IEventTopicSubscriber eventTopicSubscriber, String[] topics) { - this(jComp, eventSubscriber, null, eventClasses, eventTopicSubscriber, null, topics); - } - - /** - * Create a registrar that will keep track of the container event service, and subscribe the subscriber to the topics - * and the event classes when the ContainerEventService is available and when it changes. - * - * @param jComp the component whose container to monitor - * @param eventSubscriber the subscriber to register to the Container EventServer - * @param vetoSubscriber a veto subscriber for the eventClasses - * @param eventClasses the classes of event to register for - * @param eventTopicSubscriber the topic subscriber to keep registered to the topic(s) - * @param vetoTopicSubscriber a veto subscriber for the topics - * @param topics the event topic names to register for - */ - public ContainerEventServiceRegistrar(JComponent jComp, IEventSubscriber eventSubscriber, VetoEventListener vetoSubscriber, - Class[] eventClasses, IEventTopicSubscriber eventTopicSubscriber, VetoTopicEventListener vetoTopicSubscriber, - String[] topics) { - this.jComp = jComp; - this.eventSubscriber = eventSubscriber; - this.vetoSubscriber = vetoSubscriber; - this.eventClasses = eventClasses; - this.eventTopicSubscriber = eventTopicSubscriber; - this.vetoTopicSubscriber = vetoTopicSubscriber; - this.topics = topics; - - if (jComp == null) { - throw new NullPointerException("JComponent is null"); - } - updateContainerEventService(); - jComp.addHierarchyListener(new HierarchyListener() { - public void hierarchyChanged(HierarchyEvent e) { - updateContainerEventService(); - } - }); - jComp.addContainerListener(new ContainerListener() { - public void componentAdded(ContainerEvent e) { - updateContainerEventService(); - } - - public void componentRemoved(ContainerEvent e) { - updateContainerEventService(); - } - }); - jComp.addAncestorListener(new AncestorListener() { - public void ancestorAdded(AncestorEvent event) { - updateContainerEventService(); - } - - public void ancestorMoved(AncestorEvent event) { - //ignore - not necessary to keep track of movement - } - - public void ancestorRemoved(AncestorEvent event) { - updateContainerEventService(); - } - }); - } - - /** - * Called by this class when the container may have changed. - *

      - * Override this method and call super if your class wants to be notified when the container changes (compare the - * references of getContainerEventService() around the calls to super.updateContainerEventService()). - */ - protected void updateContainerEventService() { - if (containerEventService != null) { - if (eventClasses != null) { - for (int i = 0; i < eventClasses.length; i++) { - Class eventClass = eventClasses[i]; - if (eventSubscriber != null) { - containerEventService.unsubscribe(eventClass, eventSubscriber); - } - if (vetoSubscriber != null) { - containerEventService.unsubscribeVeto(eventClass, vetoSubscriber); - } - } - } - if (topics != null) { - for (int i = 0; i < topics.length; i++) { - String topic = topics[i]; - if (eventTopicSubscriber != null) { - containerEventService.unsubscribe(topic, eventTopicSubscriber); - } - if (vetoTopicSubscriber != null) { - containerEventService.unsubscribeVeto(topic, vetoTopicSubscriber); - } - } - } - } - - containerEventService = ContainerEventServiceFinder.getEventService(jComp); - if (containerEventService != null) { - if (eventClasses != null) { - for (int i = 0; i < eventClasses.length; i++) { - Class eventClass = eventClasses[i]; - if (eventSubscriber != null) { - containerEventService.subscribe(eventClass, eventSubscriber); - } - if (vetoSubscriber != null) { - containerEventService.subscribeVetoListener(eventClass, vetoSubscriber); - } - } - } - if (topics != null) { - for (int i = 0; i < topics.length; i++) { - String topic = topics[i]; - if (eventTopicSubscriber != null) { - containerEventService.subscribe(topic, eventTopicSubscriber); - } - if (vetoTopicSubscriber != null) { - containerEventService.subscribeVetoListener(topic, vetoTopicSubscriber); - } - } - } - } - } - - /** - * @return the container event service, if null, it tries to find it, but it still may be null if this object is not - * in a container. - */ - public EventService getContainerEventService() { - if (containerEventService != null) { - return containerEventService; - } else { - updateContainerEventService(); - return containerEventService; - } - } -} diff --git a/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java b/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java deleted file mode 100644 index 915a41fb1..000000000 --- a/src/main/java/org/scijava/event/bushe/ContainerEventServiceSupplier.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -/** - * A interface implemented by a Swing Container to supply an EventService local to it's child components. - *

      - * A Container EventService is an {@link EventService} which, unlike the {@link EventBus}, is specific to a container, - * in other words, it is shared only among components within a Swing Container. The only difference between a Container - * EventService and any other EventService is that it's found and used by the children of a container. The API and - * available implementations all work the same as any other EventService. - *

      - * A good candidate for a ContainerEventServiceSupplier is a Form class. The components that the Form contains can - * publish objects when they they change state - for example when their values change or when they become invalid or - * valid. The Form may have a model that collects the user's entries by subscribing to events published on the Form's - * EventService. A FormValidator may also listen to publications on the Form's EventService to subscribe to validation - * errors. The Form's components don't have to know about the form, or the model or the validator. They just publish - * events on their Container's EventService, which they can find by using a {@link ContainerEventServiceFinder}. - *

      - * This class does not ever have to be implemented or used directly. The ContainerEventServiceFinder will create a - * ContainerEventService on JRootPanes by default on demand. Hence, each dialog and Frame will have their own - * automatically as needed. You only want to implement this interface when you want to limit events to subscribers - * in containers smaller than a JRootPane, such as a Form's JPanel. - * - * @author Michael Bushe michael@bushe.com - */ -interface ContainerEventServiceSupplier { - public EventService getContainerEventService(); -} diff --git a/src/main/java/org/scijava/event/bushe/EventBus.java b/src/main/java/org/scijava/event/bushe/EventBus.java deleted file mode 100644 index 0197d0ebd..000000000 --- a/src/main/java/org/scijava/event/bushe/EventBus.java +++ /dev/null @@ -1,423 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import java.util.List; -import java.util.regex.Pattern; -import java.lang.reflect.Type; - -/** - * The EventBus provides event publication and subscription services. It is a simple static wrapper around a - * global instance of an {@link EventService}, specifically a {@link SwingEventService} by default. - *

      - * For Swing Applications the EventBus is nearly all you need, besides some of your own Event classes (if so desired). - *

      - * The EventBus is really just a convenience class that provides a static wrapper around a global {@link - * EventService} instance. This class exists solely for simplicity. Calling - * EventBus.subscribeXXX/publishXXX is equivalent to - * EventServiceLocator.getEventBusService().subscribeXXX/publishXXX, - * it is just shorter to type. See {@link org.scijava.event.bushe.EventServiceLocator} for details on how to customize - * the global EventService in place of the default SwingEventService. - * - * @author Michael Bushe michael@bushe.com - * @see EventService - * @see SwingEventService - * @see ThreadSafeEventService See package JavaDoc for more information - */ -class EventBus { - - /** - * The EventBus uses a global static EventService. This method is not necessary in usual usage, use the other static - * methods instead. It is used to expose any other functionality and for framework classes (EventBusAction) - * - * @return the global static EventService - */ - public static EventService getGlobalEventService() { - return EventServiceLocator.getEventBusService(); - } - - /** @see EventService#publish(Object) */ - public static void publish(Object event) { - if (event == null) { - throw new IllegalArgumentException("Can't publish null."); - } - EventServiceLocator.getEventBusService().publish(event); - } - - /** @see EventService#publish(String,Object) */ - public static void publish(String topic, Object o) { - if (topic == null) { - throw new IllegalArgumentException("Can't publish to null topic."); - } - EventServiceLocator.getEventBusService().publish(topic, o); - } - - /** @see EventService#publish(java.lang.reflect.Type, Object) */ - public static void publish(Type genericType, Object o) { - if (genericType == null) { - throw new IllegalArgumentException("Can't publish to null type."); - } - EventServiceLocator.getEventBusService().publish(genericType, o); - } - - - /** @see EventService#subscribe(Class,IEventSubscriber) */ - public static boolean subscribe(Class eventClass, IEventSubscriber subscriber) { - return EventServiceLocator.getEventBusService().subscribe(eventClass, subscriber); - } - - /** @see EventService#subscribe(java.lang.reflect.Type, IEventSubscriber) */ - public static boolean subscribe(Type genericType, IEventSubscriber subscriber) { - return EventServiceLocator.getEventBusService().subscribe(genericType, subscriber); - } - - /** @see EventService#subscribeExactly(Class,IEventSubscriber) */ - public static boolean subscribeExactly(Class eventClass, IEventSubscriber subscriber) { - return EventServiceLocator.getEventBusService().subscribeExactly(eventClass, subscriber); - } - - /** @see EventService#subscribe(String,IEventTopicSubscriber) */ - public static boolean subscribe(String topic, IEventTopicSubscriber subscriber) { - return EventServiceLocator.getEventBusService().subscribe(topic, subscriber); - } - - /** @see EventService#subscribe(Pattern,IEventTopicSubscriber) */ - public static boolean subscribe(Pattern topicPattern, IEventTopicSubscriber subscriber) { - return EventServiceLocator.getEventBusService().subscribe(topicPattern, subscriber); - } - - /** @see EventService#subscribeStrongly(Class,IEventSubscriber) */ - public static boolean subscribeStrongly(Class eventClass, IEventSubscriber subscriber) { - return EventServiceLocator.getEventBusService().subscribeStrongly(eventClass, subscriber); - } - - /** @see EventService#subscribeExactlyStrongly(Class,IEventSubscriber) */ - public static boolean subscribeExactlyStrongly(Class eventClass, IEventSubscriber subscriber) { - return EventServiceLocator.getEventBusService().subscribeExactlyStrongly(eventClass, subscriber); - } - - /** @see EventService#subscribeStrongly(String,IEventTopicSubscriber) */ - public static boolean subscribeStrongly(String topic, IEventTopicSubscriber subscriber) { - return EventServiceLocator.getEventBusService().subscribeStrongly(topic, subscriber); - } - - /** @see EventService#subscribeStrongly(Pattern,IEventTopicSubscriber) */ - public static boolean subscribeStrongly(Pattern topicPattern, IEventTopicSubscriber subscriber) { - return EventServiceLocator.getEventBusService().subscribeStrongly(topicPattern, subscriber); - } - - /** @see EventService#unsubscribe(Class,IEventSubscriber) */ - public static boolean unsubscribe(Class eventClass, IEventSubscriber subscriber) { - return EventServiceLocator.getEventBusService().unsubscribe(eventClass, subscriber); - } - - /** @see EventService#unsubscribeExactly(Class,IEventSubscriber) */ - public static boolean unsubscribeExactly(Class eventClass, IEventSubscriber subscriber) { - return EventServiceLocator.getEventBusService().unsubscribeExactly(eventClass, subscriber); - } - - /** @see EventService#unsubscribe(String,IEventTopicSubscriber) */ - public static boolean unsubscribe(String topic, IEventTopicSubscriber subscriber) { - return EventServiceLocator.getEventBusService().unsubscribe(topic, subscriber); - } - - /** @see EventService#unsubscribe(Pattern,IEventTopicSubscriber) */ - public static boolean unsubscribe(Pattern topicPattern, IEventTopicSubscriber subscriber) { - return EventServiceLocator.getEventBusService().unsubscribe(topicPattern, subscriber); - } - - /** - * For usage with annotations. - * - * @see EventService#unsubscribe(Class,Object) - */ - public static boolean unsubscribe(Class eventClass, Object object) { - return EventServiceLocator.getEventBusService().unsubscribe(eventClass, object); - } - - /** - * For usage with annotations. - * - * @see EventService#unsubscribeExactly(Class,Object) - */ - public static boolean unsubscribeExactly(Class eventClass, Object subscriber) { - return EventServiceLocator.getEventBusService().unsubscribeExactly(eventClass, subscriber); - } - - /** - * For usage with annotations. - * - * @see EventService#unsubscribe(String,Object) - */ - public static boolean unsubscribe(String topic, Object subscriber) { - return EventServiceLocator.getEventBusService().unsubscribe(topic, subscriber); - } - - /** - * For usage with annotations. - * - * @see EventService#unsubscribe(Pattern,Object) - */ - public static boolean unsubscribe(Pattern topicPattern, Object subscriber) { - return EventServiceLocator.getEventBusService().unsubscribe(topicPattern, subscriber); - } - - /** @see EventService#subscribeVetoListener(Class,VetoEventListener) */ - public static boolean subscribeVetoListener(Class eventClass, VetoEventListener vetoListener) { - return EventServiceLocator.getEventBusService().subscribeVetoListener(eventClass, vetoListener); - } - - /** @see EventService#subscribeVetoListener(Class,VetoEventListener) */ - public static boolean subscribeVetoListenerExactly(Class eventClass, VetoEventListener vetoListener) { - return EventServiceLocator.getEventBusService().subscribeVetoListenerExactly(eventClass, vetoListener); - } - - - /** @see EventService#subscribeVetoListener(String,VetoTopicEventListener) */ - public static boolean subscribeVetoListener(String topic, VetoTopicEventListener vetoListener) { - return EventServiceLocator.getEventBusService().subscribeVetoListener(topic, vetoListener); - } - - /** @see EventService#subscribeVetoListener(Pattern,VetoTopicEventListener) */ - public static boolean subscribeVetoListener(Pattern topicPattern, VetoTopicEventListener vetoListener) { - return EventServiceLocator.getEventBusService().subscribeVetoListener(topicPattern, vetoListener); - } - - /** @see EventService#subscribeVetoListenerStrongly(Class,VetoEventListener) */ - public static boolean subscribeVetoListenerStrongly(Class eventClass, VetoEventListener vetoListener) { - return EventServiceLocator.getEventBusService().subscribeVetoListenerStrongly(eventClass, vetoListener); - } - - /** @see EventService#subscribeVetoListenerExactlyStrongly(Class,VetoEventListener) */ - public static boolean subscribeVetoListenerExactlyStrongly(Class eventClass, VetoEventListener vetoListener) { - return EventServiceLocator.getEventBusService().subscribeVetoListenerExactlyStrongly(eventClass, vetoListener); - } - - /** @see EventService#subscribeVetoListenerStrongly(String,VetoTopicEventListener) */ - public static boolean subscribeVetoListenerStrongly(String topic, VetoTopicEventListener vetoListener) { - return EventServiceLocator.getEventBusService().subscribeVetoListenerStrongly(topic, vetoListener); - } - - /** @see EventService#subscribeVetoListener(String,VetoTopicEventListener) */ - public static boolean subscribeVetoListenerStrongly(Pattern topicPattern, VetoTopicEventListener vetoListener) { - return EventServiceLocator.getEventBusService().subscribeVetoListenerStrongly(topicPattern, vetoListener); - } - - /** @see EventService#unsubscribeVetoListener(Class,VetoEventListener) */ - public static boolean unsubscribeVetoListener(Class eventClass, VetoEventListener vetoListener) { - return EventServiceLocator.getEventBusService().unsubscribeVetoListener(eventClass, vetoListener); - } - - /** @see EventService#unsubscribeVetoListenerExactly(Class,VetoEventListener) */ - public static boolean unsubscribeVetoListenerExactly(Class eventClass, VetoEventListener vetoListener) { - return EventServiceLocator.getEventBusService().unsubscribeVetoListenerExactly(eventClass, vetoListener); - } - - /** @see EventService#unsubscribeVetoListener(String,VetoTopicEventListener) */ - public static boolean unsubscribeVetoListener(String topic, VetoTopicEventListener vetoListener) { - return EventServiceLocator.getEventBusService().unsubscribeVetoListener(topic, vetoListener); - } - - /** @see EventService#unsubscribeVetoListener(Pattern,VetoTopicEventListener) */ - public static boolean unsubscribeVetoListener(Pattern topicPattern, VetoTopicEventListener vetoListener) { - return EventServiceLocator.getEventBusService().unsubscribeVetoListener(topicPattern, vetoListener); - } - - /** @see EventService#getSubscribers(Class) */ - public static List getSubscribers(Class eventClass) { - return EventServiceLocator.getEventBusService().getSubscribers(eventClass); - } - - /** @see EventService#getSubscribersToClass(Class) */ - public static List getSubscribersToClass(Class eventClass) { - return EventServiceLocator.getEventBusService().getSubscribersToClass(eventClass); - } - - /** @see EventService#getSubscribersToExactClass(Class) */ - public static List getSubscribersToExactClass(Class eventClass) { - return EventServiceLocator.getEventBusService().getSubscribersToExactClass(eventClass); - } - - /** @see EventService#getSubscribers(Type) */ - public static List getSubscribers(Type type) { - return EventServiceLocator.getEventBusService().getSubscribers(type); - } - - /** @see EventService#getSubscribers(String) */ - public static List getSubscribers(String topic) { - return EventServiceLocator.getEventBusService().getSubscribers(topic); - } - - /** @see EventService#getSubscribersToTopic(String) */ - public static List getSubscribersToTopic(String topic) { - return EventServiceLocator.getEventBusService().getSubscribersToTopic(topic); - } - - /** @see EventService#getSubscribers(Pattern) */ - public static List getSubscribers(Pattern pattern) { - return EventServiceLocator.getEventBusService().getSubscribers(pattern); - } - - /** @see EventService#getSubscribersByPattern(String) */ - public static List getSubscribersByPattern(String topic) { - return EventServiceLocator.getEventBusService().getSubscribersByPattern(topic); - } - - /** @see EventService#getSubscribers(Class) */ - public static List getVetoSubscribers(Class eventClass) { - return EventServiceLocator.getEventBusService().getVetoSubscribers(eventClass); - } - - /** @see EventService#getVetoSubscribersToClass(Class) */ - public static List getVetoSubscribersToClass(Class eventClass) { - return EventServiceLocator.getEventBusService().getVetoSubscribersToClass(eventClass); - } - - /** @see EventService#getVetoSubscribersToExactClass(Class) */ - public static List getVetoSubscribersToExactClass(Class eventClass) { - return EventServiceLocator.getEventBusService().getVetoSubscribersToExactClass(eventClass); - } - - /** @see EventService#getVetoSubscribers(Class) - * @deprecated use getVetoSubscribersToTopic instead for direct replacement, - * or use getVetoEventListeners to get topic and pattern matchers. - * In EventBus 2.0 this name will replace getVetoEventListeners() - * and have it's union functionality - */ - public static List getVetoSubscribers(String topic) { - return EventServiceLocator.getEventBusService().getVetoSubscribers(topic); - } - - /** @see EventService#getVetoEventListeners(String) */ - public static List getVetoEventListeners(String topic) { - return EventServiceLocator.getEventBusService().getVetoEventListeners(topic); - } - - /** @see EventService#getVetoSubscribers(Pattern) */ - public static List getVetoSubscribers(Pattern pattern) { - return EventServiceLocator.getEventBusService().getVetoSubscribers(pattern); - } - - /** @see EventService#getVetoSubscribersToTopic(String) */ - public static List getVetoSubscribersToTopic(String topic) { - return EventServiceLocator.getEventBusService().getVetoSubscribersToTopic(topic); - } - - /** @see EventService#getVetoSubscribersByPattern(String) */ - public static List getVetoSubscribersByPattern(String topic) { - return EventServiceLocator.getEventBusService().getVetoSubscribersByPattern(topic); - } - - /** @see EventService#unsubscribeVeto(Class, Object) */ - public static boolean unsubscribeVeto(Class eventClass, Object subscribedByProxy) { - return EventServiceLocator.getEventBusService().unsubscribeVeto(eventClass, subscribedByProxy); - } - - /** @see EventService#unsubscribeVetoExactly(Class, Object) */ - public static boolean unsubscribeVetoExactly(Class eventClass, Object subscribedByProxy) { - return EventServiceLocator.getEventBusService().unsubscribeVetoExactly(eventClass, subscribedByProxy); - } - - /** @see EventService#unsubscribeVeto(String, Object) */ - public static boolean unsubscribeVeto(String topic, Object subscribedByProxy) { - return EventServiceLocator.getEventBusService().unsubscribeVeto(topic, subscribedByProxy); - } - - /** @see EventService#unsubscribeVeto(Pattern, Object) */ - public static boolean unsubscribeVeto(Pattern pattern, Object subscribedByProxy) { - return EventServiceLocator.getEventBusService().unsubscribeVeto(pattern, subscribedByProxy); - } - - /** @see EventService#clearAllSubscribers() */ - public static void clearAllSubscribers() { - EventServiceLocator.getEventBusService().clearAllSubscribers(); - } - - /** @see EventService#setDefaultCacheSizePerClassOrTopic(int) */ - public static void setDefaultCacheSizePerClassOrTopic(int defaultCacheSizePerClassOrTopic) { - EventServiceLocator.getEventBusService().setDefaultCacheSizePerClassOrTopic(defaultCacheSizePerClassOrTopic); - } - - /** @see org.scijava.event.bushe.EventService#getDefaultCacheSizePerClassOrTopic() */ - public static int getDefaultCacheSizePerClassOrTopic() { - return EventServiceLocator.getEventBusService().getDefaultCacheSizePerClassOrTopic(); - } - - /** @see EventService#setCacheSizeForEventClass(Class,int) */ - public static void setCacheSizeForEventClass(Class eventClass, int cacheSize) { - EventServiceLocator.getEventBusService().setCacheSizeForEventClass(eventClass, cacheSize); - } - - /** @see EventService#getCacheSizeForEventClass(Class) */ - public static int getCacheSizeForEventClass(Class eventClass) { - return EventServiceLocator.getEventBusService().getCacheSizeForEventClass(eventClass); - } - - /** @see EventService#setCacheSizeForTopic(String,int) */ - public static void setCacheSizeForTopic(String topicName, int cacheSize) { - EventServiceLocator.getEventBusService().setCacheSizeForTopic(topicName, cacheSize); - } - - /** @see EventService#setCacheSizeForTopic(java.util.regex.Pattern,int) */ - public static void setCacheSizeForTopic(Pattern pattern, int cacheSize) { - EventServiceLocator.getEventBusService().setCacheSizeForTopic(pattern, cacheSize); - } - - /** @see EventService#getCacheSizeForTopic(String) */ - public static int getCacheSizeForTopic(String topic) { - return EventServiceLocator.getEventBusService().getCacheSizeForTopic(topic); - } - - /** @see EventService#getLastEvent(Class) */ - public static T getLastEvent(Class eventClass) { - return EventServiceLocator.getEventBusService().getLastEvent(eventClass); - } - - /** @see EventService#getCachedEvents(Class) */ - public static List getCachedEvents(Class eventClass) { - return EventServiceLocator.getEventBusService().getCachedEvents(eventClass); - } - - /** @see EventService#getLastTopicData(String) */ - public static Object getLastTopicData(String topic) { - return EventServiceLocator.getEventBusService().getLastTopicData(topic); - } - - /** @see EventService#getCachedTopicData(String) */ - public static List getCachedTopicData(String topic) { - return EventServiceLocator.getEventBusService().getCachedTopicData(topic); - } - - /** @see EventService#clearCache(Class) */ - public static void clearCache(Class eventClass) { - EventServiceLocator.getEventBusService().clearCache(eventClass); - } - - /** @see EventService#clearCache(String) */ - public static void clearCache(String topic) { - EventServiceLocator.getEventBusService().clearCache(topic); - } - - /** @see EventService#clearCache(java.util.regex.Pattern) */ - public static void clearCache(Pattern pattern) { - EventServiceLocator.getEventBusService().clearCache(pattern); - } - - /** @see org.scijava.event.bushe.EventService#clearCache() */ - public static void clearCache() { - EventServiceLocator.getEventBusService().clearCache(); - } -} diff --git a/src/main/java/org/scijava/event/bushe/EventBusAction.java b/src/main/java/org/scijava/event/bushe/EventBusAction.java deleted file mode 100644 index f4d69010b..000000000 --- a/src/main/java/org/scijava/event/bushe/EventBusAction.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import java.awt.event.ActionEvent; -import javax.swing.ImageIcon; - -/** - * When fired, this action publishes events on the EventBus. - *

      - * - * @author Michael Bushe michael@bushe.com - * @see EventServiceAction - */ -class EventBusAction extends EventServiceAction { - public EventBusAction() { - this(null, null); - } - - public EventBusAction(String actionName, ImageIcon icon) { - super(actionName, icon); - } - - protected EventService getEventService(ActionEvent event) { - return EventBus.getGlobalEventService(); - } -} - diff --git a/src/main/java/org/scijava/event/bushe/EventService.java b/src/main/java/org/scijava/event/bushe/EventService.java index 4552ff752..6b07fb777 100644 --- a/src/main/java/org/scijava/event/bushe/EventService.java +++ b/src/main/java/org/scijava/event/bushe/EventService.java @@ -23,17 +23,17 @@ * The core interface. An EventService provides publish/subscribe services to a single JVM using Class-based and * String-based (i.e. "topic") publications and subscriptions. *

      - * In class-based pub/sub, {@link IEventSubscriber}s subscribe to a type on an {@link EventService}, such + * In class-based pub/sub, {@link EventSubscriber}s subscribe to a type on an {@link EventService}, such * as the {@link org.scijava.event.bushe.EventBus}, by providing a class, interface or generic type. The EventService * notifies subscribers when objects are published on the EventService with a matching type. Full class semantics are * respected. That is, if a subscriber subscribes to a class, the subscriber is notified if an object of * that class is publish or if an object of a subclass of that class is published. Likewise if a subscriber subscribes * to an interface, it will be notified if any object that implements that interface is published. Subscribers can - * subscribe "exactly" using {@link #subscribeExactly(Class, IEventSubscriber)} so that they are notified only if an + * subscribe "exactly" using {@link #subscribeExactly(Class, EventSubscriber)} so that they are notified only if an * object of the exact class is published (and will not be notified if subclasses are published, since this would not * be "exact") *

      - * In topic-based pub/sub, an object "payload" is published on a topic name (String). {@link IEventTopicSubscriber}s subscribe + * In topic-based pub/sub, an object "payload" is published on a topic name (String). {@link EventTopicSubscriber}s subscribe * to either the exact name of the topic or they may subscribe using a Regular Expression that is used to match topic * names. *

      @@ -110,10 +110,6 @@ * * @author Michael Bushe michael@bushe.com * @see {@link ThreadSafeEventService} for the default implementation - * @see {@link SwingEventService} for the Swing-safe implementation - * @see {@link EventBus} for simple access to the Swing-safe implementation - * @see {@link org.scijava.event.bushe.IEventSubscriber} for subscription annotations - * @see {@link org.scijava.event.bushe.IEventTopicSubscriber} for subscription annotations */ interface EventService { @@ -127,7 +123,7 @@ interface EventService { /** * Use this method to publish generified objects to subscribers of Types, i.e. subscribers that use - * {@link #subscribe(Type, IEventSubscriber)}, and to publish to subscribers of the non-generic type. + * {@link #subscribe(Type, EventSubscriber)}, and to publish to subscribers of the non-generic type. *

      * Due to generic type erasure, the type must be supplied by the caller. You can get a declared object's * type by using the {@link org.scijava.event.bushe.TypeReference} class. For Example: @@ -181,7 +177,7 @@ interface EventService { * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribe(Class eventClass, IEventSubscriber subscriber); + public boolean subscribe(Class eventClass, EventSubscriber subscriber); /** * Subscribe an EventSubscriber to publication of generic Types. @@ -206,7 +202,7 @@ interface EventService { * @param subscriber the subscriber to the type * @return true if a new subscription is made, false if it already existed */ - public boolean subscribe(Type type, IEventSubscriber subscriber); + public boolean subscribe(Type type, EventSubscriber subscriber); /** * Subscribes an EventSubscriber to the publication of objects exactly matching a type. Only a WeakReference @@ -227,7 +223,7 @@ interface EventService { * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribeExactly(Class eventClass, IEventSubscriber subscriber); + public boolean subscribeExactly(Class eventClass, EventSubscriber subscriber); /** * Subscribes an EventTopicSubscriber to the publication of a topic name. Only a WeakReference @@ -247,7 +243,7 @@ interface EventService { * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribe(String topic, IEventTopicSubscriber subscriber); + public boolean subscribe(String topic, EventTopicSubscriber subscriber); /** * Subscribes an EventSubscriber to the publication of all the topic names that match a RegEx Pattern. Only a @@ -267,67 +263,67 @@ interface EventService { * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribe(Pattern topicPattern, IEventTopicSubscriber subscriber); + public boolean subscribe(Pattern topicPattern, EventTopicSubscriber subscriber); /** * Subscribes an EventSubscriber to the publication of objects matching a type. *

      - * The semantics are the same as {@link #subscribe(Class, IEventSubscriber)}, except that the EventService holds + * The semantics are the same as {@link #subscribe(Class, EventSubscriber)}, except that the EventService holds * a regularly reference, not a WeakReference. *

      - * The subscriber will remain subscribed until {@link #unsubscribe(Class,IEventSubscriber)} is called. + * The subscriber will remain subscribed until {@link #unsubscribe(Class,EventSubscriber)} is called. * * @param eventClass the class of published objects to listen to * @param subscriber The subscriber that will accept the events when published. * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribeStrongly(Class eventClass, IEventSubscriber subscriber); + public boolean subscribeStrongly(Class eventClass, EventSubscriber subscriber); /** * Subscribes an EventSubscriber to the publication of objects matching a type exactly. *

      - * The semantics are the same as {@link #subscribeExactly(Class, IEventSubscriber)}, except that the EventService + * The semantics are the same as {@link #subscribeExactly(Class, EventSubscriber)}, except that the EventService * holds a regularly reference, not a WeakReference. *

      - * The subscriber will remain subscribed until {@link #unsubscribe(Class,IEventSubscriber)} is called. + * The subscriber will remain subscribed until {@link #unsubscribe(Class,EventSubscriber)} is called. * * @param eventClass the class of published objects to listen to * @param subscriber The subscriber that will accept the events when published. * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribeExactlyStrongly(Class eventClass, IEventSubscriber subscriber); + public boolean subscribeExactlyStrongly(Class eventClass, EventSubscriber subscriber); /** * Subscribes a subscriber to an event topic name. *

      - * The semantics are the same as {@link #subscribe(String, IEventTopicSubscriber)}, except that the EventService + * The semantics are the same as {@link #subscribe(String, EventTopicSubscriber)}, except that the EventService * holds a regularly reference, not a WeakReference. *

      - * The subscriber will remain subscribed until {@link #unsubscribe(String,IEventTopicSubscriber)} is called. + * The subscriber will remain subscribed until {@link #unsubscribe(String,EventTopicSubscriber)} is called. * * @param topic the name of the topic listened to * @param subscriber The topic subscriber that will accept the events when published. * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribeStrongly(String topic, IEventTopicSubscriber subscriber); + public boolean subscribeStrongly(String topic, EventTopicSubscriber subscriber); /** * Subscribes a subscriber to all the event topic names that match a RegEx expression. *

      - * The semantics are the same as {@link #subscribe(java.util.regex.Pattern, IEventTopicSubscriber)}, except that the + * The semantics are the same as {@link #subscribe(java.util.regex.Pattern, EventTopicSubscriber)}, except that the * EventService holds a regularly reference, not a WeakReference. *

      - * The subscriber will remain subscribed until {@link #unsubscribe(String,IEventTopicSubscriber)} is called. + * The subscriber will remain subscribed until {@link #unsubscribe(String,EventTopicSubscriber)} is called. * * @param topicPattern the name of the topic listened to * @param subscriber The topic subscriber that will accept the events when published. * * @return true if the subscriber was subscribed successfully, false otherwise */ - public boolean subscribeStrongly(Pattern topicPattern, IEventTopicSubscriber subscriber); + public boolean subscribeStrongly(Pattern topicPattern, EventTopicSubscriber subscriber); /** * Stop the subscription for a subscriber that is subscribed to a class. @@ -337,7 +333,7 @@ interface EventService { * * @return true if the subscriber was subscribed to the event, false if it wasn't */ - public boolean unsubscribe(Class eventClass, IEventSubscriber subscriber); + public boolean unsubscribe(Class eventClass, EventSubscriber subscriber); /** * Stop the subscription for a subscriber that is subscribed to an exact class. @@ -347,7 +343,7 @@ interface EventService { * * @return true if the subscriber was subscribed to the event, false if it wasn't */ - public boolean unsubscribeExactly(Class eventClass, IEventSubscriber subscriber); + public boolean unsubscribeExactly(Class eventClass, EventSubscriber subscriber); /** * Stop the subscription for a subscriber that is subscribed to an event topic. @@ -357,7 +353,7 @@ interface EventService { * * @return true if the subscriber was subscribed to the event, false if it wasn't */ - public boolean unsubscribe(String topic, IEventTopicSubscriber subscriber); + public boolean unsubscribe(String topic, EventTopicSubscriber subscriber); /** * Stop the subscription for a subscriber that is subscribed to event topics via a Pattern. @@ -367,7 +363,7 @@ interface EventService { * * @return true if the subscriber was subscribed to the event, false if it wasn't */ - public boolean unsubscribe(Pattern topicPattern, IEventTopicSubscriber subscriber); + public boolean unsubscribe(Pattern topicPattern, EventTopicSubscriber subscriber); /** * Subscribes a VetoEventListener to publication of event matching a class. Only a WeakReference to the diff --git a/src/main/java/org/scijava/event/bushe/EventServiceAction.java b/src/main/java/org/scijava/event/bushe/EventServiceAction.java deleted file mode 100644 index a87cfc59d..000000000 --- a/src/main/java/org/scijava/event/bushe/EventServiceAction.java +++ /dev/null @@ -1,214 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import java.awt.event.ActionEvent; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.ImageIcon; - -/** - * Abstract class that publishes a Swing ActionEvent (or another object) to an {@link EventService}. - *

      - * This abstract class ties the Swing Actions with the Event Bus. When fired, an ActionEvent is published on an - * EventService - either the global EventBus or a Container EventService. - *

      - * There are two derivatives of this class: The EventBusAction, which publishes the ActionEvent on the global EventBus, - * and the ContainerEventServiceAction, which publishes the ActionEvent on the a local ContainerEventService. - *

      - * By default the ActionEvent is published on an EventService topic corresponding to this action's - * Action.ACTION_COMMAND_KEY. Though this behavior is highly configurable. See {@link #getTopicName(ActionEvent)} and - * {@link #setTopicName(String)} for ways to customize the topic used. Override {@link #getTopicValue(ActionEvent)} to - * publish an object other than the ActionEvent. - *

      - * Instead of publishing on a topic, the ActionEvent can be published using class-based publication, use {@link - * #setPublishesOnTopic(boolean)} to set this behavior. When using class-based publication, the ActionEvent is published - * by default. Override {@link #getEventServiceEvent(ActionEvent)} to publish an object other than the ActionEvent. - * - * @author Michael Bushe michael@bushe.com - */ -abstract class EventServiceAction extends AbstractAction { - public static final String EVENT_SERVICE_TOPIC_NAME = "event-service-topic"; - - private boolean throwsExceptionOnNullEventService = true; - public static final String EVENT_BUS_EVENT_CLASS_NAME = "eventBus.eventClassName"; - - private String topicName; - private boolean publishesOnTopic = true; - - public EventServiceAction() { - } - - public EventServiceAction(String actionName, ImageIcon icon) { - super(actionName, icon); - } - - - /** - * Override to return the EventService on which to publish. - * - * @param event the event passed to #execute(ActionEvent) - * - * @return the event service to publish on, if null and - * getThrowsExceptionOnNullEventService() is true (default) an exception is thrown - * - * @see EventBusAction - * @see ContainerEventServiceAction - */ - protected abstract EventService getEventService(ActionEvent event); - - /** @return true if this action publishes on a topic, false if it uses class-based publication. */ - public boolean isPublishesOnTopic() { - return publishesOnTopic; - } - - /** - * Sets whether this action publishes on a topic or uses class-based publication. - * - * @param onTopic true if publishes on topic (the default), false if using class-based publication. - */ - public void setPublishesOnTopic(boolean onTopic) { - this.publishesOnTopic = onTopic; - } - - /** - * Explicitly sets the topic name this action publishes on. - *

      - * A topic name does not need to be explicitly set. See {@link #getTopicName(ActionEvent)} to understand how the - * topic name is determined implicitly. - */ - public void setTopicName(String topicName) { - this.topicName = topicName; - } - - /** - * The topic name is the first non-null value out of:

      1. A topic name explicitly set via {@link - * #setTopicName(String)}
      2. the action's getValue("event-service-topic") {@link #EVENT_SERVICE_TOPIC_NAME}
      3. the - * action's getValue("ID") (for compatibility with the SAM ActionManager's ID)
      4. the action's {@link - * javax.swing.Action#ACTION_COMMAND_KEY}
      5. the action event's {@link javax.swing.Action#ACTION_COMMAND_KEY} - *
      6. the action's {@link javax.swing.Action#NAME} the value is used (if the value is not a String, the value's - * toString() is used). - *

        - * To use a different name, override this method. - * - * @param event the event passed to #execute(ActionEvent) - * - * @return the topic name to publish on, getId() by default - */ - public String getTopicName(ActionEvent event) { - if (topicName != null) { - return topicName; - } - Object topic = getValue(EVENT_SERVICE_TOPIC_NAME); - if (topic != null) { - return topic + ""; - } else { - topic = getValue("ID"); - if (topic != null) { - return topic + ""; - } else { - topic = getValue(Action.ACTION_COMMAND_KEY); - if (topic != null) { - return topic + ""; - } else { - topic = event.getActionCommand(); - if (topic != null) { - return topic + ""; - } else { - return (String) getName(); - } - } - } - } - } - - /** - * By default, the ActionEvent is the object published on the topic. Override this method to publish another - * object. - * - * @param event the event passed to #execute(ActionEvent) - * - * @return the topic value to publish, getId() by default - */ - protected Object getTopicValue(ActionEvent event) { - return event; - } - - /** @return the name of the action (javax.swing.Action#NAME) */ - public Object getName() { - return getValue(Action.NAME); - } - - /** - * If isPublishesOnTopic() returns false (i.e., when using class-based rather than topic-based publication), then - * override this method to publish an on object other than the ActionEvent. - * - * @return the Object to publish, cannot be null - */ - protected Object getEventServiceEvent(ActionEvent event) { - return event; - } - - /** - * Publishes the event on the EventService returned by getEventService(event) - *

        - * Gets the EventService from {@link #getEventService(java.awt.event.ActionEvent)}. Checks isPublishesOnTopic(). If true, - * gets the topic name from {@link #getTopicName(java.awt.event.ActionEvent)} and the topic value from {@link - * #getTopicValue(ActionEvent)}, and publishes the value on the topic on the EventService. If false, gets event from - * {@link #getEventServiceEvent(java.awt.event.ActionEvent)}, and publishes the event on the EventService. - *

        - * - * @param event the action event to publish. - * - * @throws RuntimeException if getThrowsExceptionOnNullEventService() && getEventService(event) == null - */ - public void actionPerformed(ActionEvent event) { - EventService eventService = getEventService(event); - if (eventService == null) { - if (getThrowsExceptionOnNullEventService()) { - throw new RuntimeException("Null EventService supplied to EventServiceAction with name:" + getName()); - } else { - return; - } - } - if (isPublishesOnTopic()) { - String topic = getTopicName(event); - Object topicValue = getTopicValue(event); - eventService.publish(topic, topicValue); - } else { - Object esEvent = getEventServiceEvent(event); - eventService.publish(esEvent); - } - } - - /** - * By default, exceptions are throw if getEventService() returns null. - * - * @return false to suppress this behavior - */ - public boolean getThrowsExceptionOnNullEventService() { - return throwsExceptionOnNullEventService; - } - - /** - * By default, exceptions are thrown if getEventService() returns null. - * - * @param throwsExceptionOnNullEventService true to suppress the exception when there is no event service - */ - public void setThrowsExceptionOnNullEventService(boolean throwsExceptionOnNullEventService) { - this.throwsExceptionOnNullEventService = throwsExceptionOnNullEventService; - } -} diff --git a/src/main/java/org/scijava/event/bushe/EventServiceEvent.java b/src/main/java/org/scijava/event/bushe/EventServiceEvent.java deleted file mode 100644 index 4eb3febaf..000000000 --- a/src/main/java/org/scijava/event/bushe/EventServiceEvent.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -/** - * Convenience interface for events that get processed by the EventService, its usage is not required in any way. Any - * object can be published on an EventService or on the EventBus. - *

        - * It is a good practice to specify the source of the event when using pub/sub, especially in Swing applications. - * - * @author Michael Bushe michael@bushe.com - * @see AbstractEventServiceEvent for a simple base class - */ -interface EventServiceEvent { - /** @return The issuer of the event. */ - Object getSource(); -} diff --git a/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java b/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java deleted file mode 100644 index f993c9418..000000000 --- a/src/main/java/org/scijava/event/bushe/EventServiceExistsException.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.scijava.event.bushe; - -/** Exception thrown by the EventServiceLocator when an EventService already is registered for a name. */ -class EventServiceExistsException extends Exception { - public EventServiceExistsException(String msg) { - super(msg); - } -} diff --git a/src/main/java/org/scijava/event/bushe/EventServiceLocator.java b/src/main/java/org/scijava/event/bushe/EventServiceLocator.java deleted file mode 100644 index 7854dcd0b..000000000 --- a/src/main/java/org/scijava/event/bushe/EventServiceLocator.java +++ /dev/null @@ -1,174 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import java.util.HashMap; -import java.util.Map; - -/** - * A central registry of EventServices. Used by the {@link EventBus}. - *

        - * By default will lazily hold a SwingEventService, which is mapped to {@link #SERVICE_NAME_SWING_EVENT_SERVICE} and - * returned by {@link #getSwingEventService()}. Also by default this same instance is returned by {@link #getEventBusService()}, - * is mapped to {@link #SERVICE_NAME_EVENT_BUS} and wrapped by the EventBus. - *

        - * Since the default EventService implementation is thread safe, and since it's not good to have lots of events on the - * EventDispatchThread you may want multiple EventServices running on multiple threads, perhaps pulling events from a - * server and coalescing them into one or more events that are pushed onto the EDT. - *

        - * To change the default implementation class for the EventBus' EventService, use the API: - *

        - * EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, new SomeEventServiceImpl());
        - * 
        - * Or use system properties by: - *
        - * System.setProperty(EventServiceLocator.SERVICE_NAME_EVENT_BUS, YourEventServiceImpl.class.getName());
        - * 
        - * Likewise, you can set this on the command line via -Dorg.scijava.event.bushe.swingEventServiceClass=foo.YourEventServiceImpl - *

        - * To change the default implementation class for the SwingEventService, use the API: - *

        - * EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, new SomeSwingEventServiceImpl());
        - * 
        - * Or use system properties by: - *
        - * System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, YourEventServiceImpl.class.getName());
        - * 
        - * Likewise, you can set this on the command line via -Dorg.scijava.event.bushe.swingEventServiceClass=foo.YourEventServiceImpl - * - * @author Michael Bushe michael@bushe.com - */ -class EventServiceLocator { - /** The name "EventBus" is reserved for the service that the EventBus wraps and is returned by {@link #getEventBusService}.*/ - public static final String SERVICE_NAME_EVENT_BUS = "EventBus"; - /** The name "SwingEventService" is reserved for the service that is returned by {@link #getSwingEventService}. */ - public static final String SERVICE_NAME_SWING_EVENT_SERVICE = "SwingEventService"; - - /** - * Set this Java property to a Class that implements EventService to use an instance of that class instead of - * the instance returned by {@link #getSwingEventService}. Must be set before {@link #getEventBusService()} is called. - */ - public static final String EVENT_BUS_CLASS = "org.scijava.event.bushe.eventBusClass"; - /** - * Set this Java property to a Class that implements EventService to use an instance of that class instead of - * {@link SwingEventService} as service returned by {@link #getSwingEventService}. Must be set on startup or - * before the method {@link #getSwingEventService}is called. - */ - public static final String SWING_EVENT_SERVICE_CLASS = "org.scijava.event.bushe.swingEventServiceClass"; - - private static EventService EVENT_BUS_SERVICE; - private static EventService SWING_EVENT_SERVICE; - - private static final Map EVENT_SERVICES = new HashMap(); - - /** @return the singleton instance of the EventService used by the EventBus */ - public static synchronized EventService getEventBusService() { - if (EVENT_BUS_SERVICE == null) { - EVENT_BUS_SERVICE = getEventService(EVENT_BUS_CLASS, getSwingEventService()); - EVENT_SERVICES.put(SERVICE_NAME_EVENT_BUS, EVENT_BUS_SERVICE); - } - return EVENT_BUS_SERVICE; - } - - /** @return the singleton instance of a SwingEventService */ - public static synchronized EventService getSwingEventService() { - if (SWING_EVENT_SERVICE == null) { - SWING_EVENT_SERVICE = getEventService(SWING_EVENT_SERVICE_CLASS, new SwingEventService()); - EVENT_SERVICES.put(SERVICE_NAME_SWING_EVENT_SERVICE, SWING_EVENT_SERVICE); - } - return SWING_EVENT_SERVICE; - } - - /** - * @param serviceName the service name of the EventService, as registered by #setEventService(String, EventService), - * or {@link #SERVICE_NAME_EVENT_BUS} or {@link #SERVICE_NAME_SWING_EVENT_SERVICE} . - * - * @return a named event service instance - */ - public static synchronized EventService getEventService(String serviceName) { - EventService es = (EventService) EVENT_SERVICES.get(serviceName); - if (es == null) { - if (SERVICE_NAME_EVENT_BUS.equals(serviceName)) { - es = getEventBusService(); - } else if (SERVICE_NAME_SWING_EVENT_SERVICE.equals(serviceName)) { - es = getSwingEventService(); - } - } - return es; - } - - /** - * Registers a named EventService to the locator. Can be used to change the default EventBus implementation. - * - * @param serviceName a named event service instance - * @param es the EventService to attach to the service name - * - * @throws EventServiceExistsException if a service by this name already exists and the new service is non-null - */ - public static synchronized void setEventService(String serviceName, EventService es) throws EventServiceExistsException { - if (EVENT_SERVICES.get(serviceName) != null && es != null) { - throw new EventServiceExistsException("An event service by the name " + serviceName + "already exists. Perhaps multiple threads tried to create a service about the same time?"); - } else { - EVENT_SERVICES.put(serviceName, es); - if (SERVICE_NAME_EVENT_BUS.equals(serviceName)) { - EVENT_BUS_SERVICE = es; - } else if (SERVICE_NAME_SWING_EVENT_SERVICE.equals(serviceName)) { - SWING_EVENT_SERVICE = es; - } - } - } - - /** - * Use this carefully. Clears all the event services, including the SwingEventService (used by EventBus). - *

        - * Callers may want to resubscribe existing subscribers. - */ - static synchronized void clearAll() { - EVENT_SERVICES.clear(); - EVENT_BUS_SERVICE = null; - SWING_EVENT_SERVICE = null; - } - - private static synchronized EventService getEventService(String eventServiceClassPropertyName, EventService defaultService) { - EventService result; - String eventServiceClassName = System.getProperty(eventServiceClassPropertyName); - if (eventServiceClassName != null) { - Class sesClass; - try { - sesClass = Class.forName(eventServiceClassName); - } catch (ClassNotFoundException e) { - throw new RuntimeException("Could not find class specified in the property " + eventServiceClassPropertyName + ". Class=" + eventServiceClassName, e); - } - Object service; - try { - service = sesClass.newInstance(); - } catch (InstantiationException e) { - throw new RuntimeException("InstantiationException creating instance of class set from Java property" + eventServiceClassPropertyName + ". Class=" + eventServiceClassName, e); - } catch (IllegalAccessException e) { - throw new RuntimeException("IllegalAccessException creating instance of class set from Java property" + eventServiceClassPropertyName + ". Class=" + eventServiceClassName, e); - } - try { - result = (EventService) service; - } catch (ClassCastException ex) { - throw new RuntimeException("ClassCastException casting to " + EventService.class + " from instance of class set from Java property" + eventServiceClassPropertyName + ". Class=" + eventServiceClassName, ex); - } - } else { - result = defaultService; - } - return result; - } - -} diff --git a/src/main/java/org/scijava/event/bushe/EventSubscriber.java b/src/main/java/org/scijava/event/bushe/EventSubscriber.java index f501cf50b..03e8f9227 100644 --- a/src/main/java/org/scijava/event/bushe/EventSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/EventSubscriber.java @@ -1,106 +1,35 @@ -package org.scijava.event.bushe; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - /** - * An Annotation for subscribing to EventService Events. - *

        - * This annotation simplifies much of the repetitive boilerplate used for subscribing to EventService Events. - *

        - * Instead of this: - *

        - * public class MyAppController implements EventSubscriber {
        - *   public MyAppController {
        - *      EventBus.subscribe(AppClosingEvent.class, this);
        - *   }
        - *   public void onEvent(EventServiceEvent event) {
        - *      AppClosingEvent appClosingEvent = (AppClosingEvent)event;
        - *      //do something
        - *   }
        - * }
        - * 
        - * You can do this: - *
        - * public class MyAppController {  //no interface necessary
        - *   public MyAppController {
        - *       AnnotationProcessor.process(this);//if not using AOP
        - *   }
        - *   @EventSubscriber
        - *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {//Use your own method name with typesafety
        - *      //do something
        - *   }
        - * }
        - * 
        - *

        - * That's pretty good, but when the controller does more, annotations are even nicer. - *

        - * public class MyAppController implements EventSubscriber {
        - *   public MyAppController {
        - *      EventBus.subscribe(AppStartingEvent.class, this);
        - *      EventBus.subscribe(AppClosingEvent.class, this);
        - *   }
        - *   public void onEvent(EventServiceEvent event) {
        - *      //wicked bad pattern, but we have to this
        - *      //...or create multiple subscriber classes and hold instances of them fields, which is even more verbose...
        - *      if (event instanceof AppStartingEvent) {
        - *         onAppStartingEvent((AppStartingEvent)event);
        - *      } else (event instanceof AppClosingEvent) {
        - *         onAppStartingEvent((AppClosingEvent)event);
        - *      }
        + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com
          *
        - *   }
        + * Licensed under the Apache License, Version 2.0 (the "License");
        + * you may not use this file except in compliance with the License.
        + * You may obtain a copy of the License at
          *
        - *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
        - *      //do something
        - *   }
        + * http://www.apache.org/licenses/LICENSE-2.0
          *
        - *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
        - *      //do something
        - *   }
        - * }
        - * 
        - * You can do this: - *
        - * public class MyAppController {
        - *   public MyAppController {
        - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
        - *   }
        - *   @EventSubscriber(eventClass=AppStartingEvent.class)
        - *   public void onAppStartingEvent(AppStartingEvent appStartingEvent) {
        - *      //do something
        - *   }
        - *   @EventSubscriber(eventClass=AppAppClosingEvent.class)
        - *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
        - *      //do something
        - *   }
        - * }
        - * 
        - * Brief, clear, and easy. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface EventSubscriber { - /** The class to subscribe to, if not specified, a subscription is created for the type of the method parameter. */ - Class eventClass() default UseTheClassOfTheAnnotatedMethodsParameter.class; - - /** Determines the order in which this subscriber is called, default is FIFO.*/ - int priority() default 0; - - /** Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ - boolean exact() default false; - - /** Whether to subscribe weakly or strongly. */ - ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; +package org.scijava.event.bushe; - /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ - String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; +/** + * Callback interface for class-based subscribers of an {@link EventService}. + * + * @author Michael Bushe michael@bushe.com + */ +public interface EventSubscriber { /** - * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the - * service needs to be created, it must have a default constructor. + * Handle a published event.

        The EventService calls this method on each publication of an object that matches the + * class or interface passed to one of the EventService's class-based subscribe methods, specifically, {@link + * EventService#subscribe(Class,EventSubscriber)} {@link EventService#subscribeExactly(Class,EventSubscriber)} + * {@link EventService#subscribeStrongly(Class,EventSubscriber)} and {@link EventService#subscribeExactlyStrongly(Class, + *EventSubscriber)}. + * + * @param event The Object that is being published. */ - Class autoCreateEventServiceClass() default ThreadSafeEventService.class; + public void onEvent(T event); } diff --git a/src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java deleted file mode 100644 index 2e07fa70f..000000000 --- a/src/main/java/org/scijava/event/bushe/EventTopicPatternSubscriber.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface EventTopicPatternSubscriber { - /** The Regular Expression to subscribe to. */ - String topicPattern(); - - /** Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ - boolean exact() default false; - - /** Whether to subscribe weakly or strongly. */ - ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ - String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** - * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the - * service needs to be created, it must have a default constructor. - */ - Class autoCreateEventServiceClass() default ThreadSafeEventService.class; - - /** Determines the order in which this subscriber is called, default is FIFO.*/ - int priority() default 0; -} diff --git a/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java index 00f305ae7..54510621d 100644 --- a/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java @@ -1,104 +1,38 @@ -package org.scijava.event.bushe; - - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - /** - * An Annotation for subscribing to EventService Topics. - *

        - * This annotation simplifies much of the repetitive boilerplate used for subscribing to EventService Topics. - *

        - * Instead of this: - *

        - * public class MyAppController implements EventTopicSubscriber {
        - *   public MyAppController {
        - *      EventBus.subscribe("AppClosing", this);
        - *   }
        - *   public void onEvent(String topic, Object data) {
        - *      JComponent source = (JComponent)data;
        - *      //do something
        - *   }
        - * }
        - * 
        - * You can do this: - *
        - * public class MyAppController {  //no interface necessary
        - *   public MyAppController {
        - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
        - *   }
        - *   @EventTopicSubscriber{topic="AppClosingEvent"}
        - *   public void onAppClosing(String topic, Object data) {
        - *      //do something
        - *   }
        - * }
        - * 
        - *

        - * That's pretty good, but when the controller does more, annotations are even nicer. - *

        - * public class MyAppController implements EventTopicSubscriber {
        - *   public MyAppController {
        - *      EventBus.subscribe("AppStartingEvent", this);
        - *      EventBus.subscribe("AppClosingEvent", this);
        - *   }
        - *   public void onEvent(String topic, Object data) {
        - *      //wicked bad pattern, but we have to this
        - *      //...or create multiple subscriber classes and hold instances of them fields, which is even more verbose...
        - *      if ("AppStartingEvent".equals(topic)) {
        - *         onAppStartingEvent((JComponent)data);
        - *      } else ("AppClosingEvent".equals(topic)) {
        - *         onAppClosingEvent((JComponet)data);
        - *      }
        + * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com
          *
        - *   }
        + * Licensed under the Apache License, Version 2.0 (the "License");
        + * you may not use this file except in compliance with the License.
        + * You may obtain a copy of the License at
          *
        - *   public void onAppStartingEvent(JComponent requestor) {
        - *      //do something
        - *   }
        + * http://www.apache.org/licenses/LICENSE-2.0
          *
        - *   public void onAppClosingEvent(JComponent requestor) {
        - *      //do something
        - *   }
        - * }
        - * 
        - * Instead of all that, you can do this: - *
        - * public class MyAppController {
        - *   public MyAppController {
        - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
        - *   }
        - *   @EventTopicSubscriber{topic="AppStartingEvent"}
        - *   public void onAppStartingEvent(Object data) {
        - *      //do something
        - *   }
        - *   @EventTopicSubscriber{topic="AppClosingEvent"}
        - *   public void onAppClosingEvent(Foo data) {
        - *      //do something
        - *   }
        - * }
        - * 
        - * Brief, clear, and easy. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface EventTopicSubscriber { - /** The topic to subscribe to */ - String topic(); - - /** Whether to subscribe weakly or strongly. */ - ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ - String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; +package org.scijava.event.bushe; - /** Determines the order in which this subscriber is called, default is FIFO.*/ - int priority() default 0; +/** + * Callback interface for topic-based subscribers of an {@link EventService}. + * + * @author Michael Bushe michael@bushe.com + */ +interface EventTopicSubscriber { /** - * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the - * service needs to be created, it must have a default constructor. + * Handle an event published on a topic. + *

        + * The EventService calls this method on each publication on a matching topic name passed to one of the + * EventService's topic-based subscribe methods, specifically, {@link EventService#subscribe(String, + *EventTopicSubscriber)} {@link EventService#subscribe(java.util.regex.Pattern,EventTopicSubscriber)} {@link + * EventService#subscribeStrongly(String,EventTopicSubscriber)} and {@link EventService#subscribeStrongly(java.util.regex.Pattern, + *EventTopicSubscriber)}. + * + * @param topic the name of the topic published on + * @param data the data object published on the topic */ - Class autoCreateEventServiceClass() default ThreadSafeEventService.class; + public void onEvent(String topic, T data); } diff --git a/src/main/java/org/scijava/event/bushe/IEventSubscriber.java b/src/main/java/org/scijava/event/bushe/IEventSubscriber.java deleted file mode 100644 index 26556c25b..000000000 --- a/src/main/java/org/scijava/event/bushe/IEventSubscriber.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -/** - * Callback interface for class-based subscribers of an {@link EventService}. - * - * @author Michael Bushe michael@bushe.com - */ -public interface IEventSubscriber { - - /** - * Handle a published event.

        The EventService calls this method on each publication of an object that matches the - * class or interface passed to one of the EventService's class-based subscribe methods, specifically, {@link - * EventService#subscribe(Class,EventSubscriber)} {@link EventService#subscribeExactly(Class,EventSubscriber)} - * {@link EventService#subscribeStrongly(Class,EventSubscriber)} and {@link EventService#subscribeExactlyStrongly(Class, - *EventSubscriber)}. - * - * @param event The Object that is being published. - */ - public void onEvent(T event); -} diff --git a/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java deleted file mode 100644 index 04570b631..000000000 --- a/src/main/java/org/scijava/event/bushe/IEventTopicSubscriber.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -/** - * Callback interface for topic-based subscribers of an {@link EventService}. - * - * @author Michael Bushe michael@bushe.com - */ -interface IEventTopicSubscriber { - - /** - * Handle an event published on a topic. - *

        - * The EventService calls this method on each publication on a matching topic name passed to one of the - * EventService's topic-based subscribe methods, specifically, {@link EventService#subscribe(String, - *EventTopicSubscriber)} {@link EventService#subscribe(java.util.regex.Pattern,EventTopicSubscriber)} {@link - * EventService#subscribeStrongly(String,EventTopicSubscriber)} and {@link EventService#subscribeStrongly(java.util.regex.Pattern, - *EventTopicSubscriber)}. - * - * @param topic the name of the topic published on - * @param data the data object published on the topic - */ - public void onEvent(String topic, T data); -} diff --git a/src/main/java/org/scijava/event/bushe/ObjectEvent.java b/src/main/java/org/scijava/event/bushe/ObjectEvent.java deleted file mode 100644 index 5a67d24a9..000000000 --- a/src/main/java/org/scijava/event/bushe/ObjectEvent.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -/** - * A simple event that delivers an untyped object with a source object. - *

        - * Usage: EventBus.publish(new ObjectEvent(this, objectOfInterest); - * - * @author Michael Bushe michael@bushe.com - */ -class ObjectEvent extends AbstractEventServiceEvent { - private Object eventObject; - - /** - * Constructor - * - * @param sourceObject the source of the event - * @param payload the payload or eventObject of the event - */ - public ObjectEvent(Object sourceObject, Object payload) { - super(sourceObject); - this.eventObject = payload; - } - - public Object getEventObject() { - return eventObject; - } -} diff --git a/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java b/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java deleted file mode 100644 index af3a93dc8..000000000 --- a/src/main/java/org/scijava/event/bushe/PrioritizedEventSubscriber.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.scijava.event.bushe; - -/** - * This is a convenience interface, particularly for inner classes, that implements - * {@link IEventSubscriber} and {@link Prioritized}. - */ -interface PrioritizedEventSubscriber extends IEventSubscriber, Prioritized { -} diff --git a/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java deleted file mode 100644 index c58ce6b76..000000000 --- a/src/main/java/org/scijava/event/bushe/PrioritizedEventTopicSubscriber.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.scijava.event.bushe; - -/** - * This is a convenience interface, particularly for inner classes, that implements - * {@link org.scijava.event.bushe.IEventTopicSubscriber} and {@link org.scijava.event.bushe.Prioritized}. - */ -interface PrioritizedEventTopicSubscriber extends IEventTopicSubscriber, Prioritized { -} \ No newline at end of file diff --git a/src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java deleted file mode 100644 index feaf2701b..000000000 --- a/src/main/java/org/scijava/event/bushe/ProxyTopicPatternSubscriber.java +++ /dev/null @@ -1,86 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.reflect.Method; -import java.util.regex.Pattern; - -/** - * A Proxy Subscriber for Annotations that use topic patterns - */ -class ProxyTopicPatternSubscriber extends ProxyTopicSubscriber { - private Pattern pattern; - - /** - * Creates a proxy. This does not subscribe it. - * - * @param proxiedSubscriber the subscriber that the proxy will call when an event is published - * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter - * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should - * be too - * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer - * exist - * @param patternString the Regular Expression for topics to subscribe to, used for unsubscription only - */ - public ProxyTopicPatternSubscriber(Object proxiedSubscriber, Method subscriptionMethod, - ReferenceStrength referenceStrength, EventService es, String patternString, - Pattern pattern, boolean veto) { - this(proxiedSubscriber, subscriptionMethod, referenceStrength, 0, es, patternString, pattern, veto); - } - - /** - * Creates a proxy. This does not subscribe it. - * - * @param proxiedSubscriber the subscriber that the proxy will call when an event is published - * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter - * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should - * be too - * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer - * exist - * @param patternString the Regular Expression for topics to subscribe to, used for unsubscription only - */ - public ProxyTopicPatternSubscriber(Object proxiedSubscriber, Method subscriptionMethod, - ReferenceStrength referenceStrength, int priority, - EventService es, String patternString, Pattern pattern, boolean veto) { - super(proxiedSubscriber, subscriptionMethod, referenceStrength, priority, es, patternString, veto); - this.pattern = pattern; - } - - protected void unsubscribe(String topic) { - if (veto) { - getEventService().unsubscribeVetoListener(pattern, this); - } else { - getEventService().unsubscribe(pattern, this); - } - pattern = null; - } - - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - - ProxyTopicPatternSubscriber that = (ProxyTopicPatternSubscriber) o; - - if (pattern != null ? !pattern.equals(that.pattern) : that.pattern != null) { - return false; - } - - return true; - } - - public String toString() { - return "ProxyTopicPatternSubscriber{" + - "pattern=" + pattern + - "veto=" + veto + - "realSubscriber=" + getProxiedSubscriber() + - ", subscriptionMethod=" + getSubscriptionMethod() + - ", referenceStrength=" + getReferenceStrength() + - ", eventService=" + getEventService() + - '}'; - } -} diff --git a/src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java deleted file mode 100644 index 76a821a10..000000000 --- a/src/main/java/org/scijava/event/bushe/ProxyTopicSubscriber.java +++ /dev/null @@ -1,144 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** A class that subscribes to an EventService on behalf of another object. - * This class is not used directly (though you could), but rather through the use of the - * {@link @org.scijava.event.bushe.annotation.EventTopicSubscriber}. Advanced EventBus - * users could use this class in Aspect-Oriented code. Consider using the - * {@link AnnotationProcessor} instead, it may suit your needs and be easier.*/ -class ProxyTopicSubscriber extends AbstractProxySubscriber - implements org.scijava.event.bushe.IEventTopicSubscriber, VetoTopicEventListener { - private String topic; - - /** - * Creates a proxy. This does not subscribe it. - * - * @param proxiedSubscriber the subscriber that the proxy will call when an event is published - * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter - * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should - * be too - * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer - * exist - * @param topic the topic to subscribe to, used for unsubscription only - * @param veto if this proxy is for a veto subscriber - */ - public ProxyTopicSubscriber(Object proxiedSubscriber, Method subscriptionMethod, ReferenceStrength referenceStrength, - EventService es, String topic, boolean veto) { - this(proxiedSubscriber, subscriptionMethod, referenceStrength, 0, es, topic, veto); - } - - /** - * Creates a proxy. This does not subscribe it. - * - * @param proxiedSubscriber the subscriber that the proxy will call when an event is published - * @param subscriptionMethod the method the proxy will call, must have an Object as it's first and only parameter - * @param referenceStrength if the subscription is weak, the reference from the proxy to the real subscriber should - * be too - * @param es the EventService we will be subscribed to, since we may need to unsubscribe when weak refs no longer - * exist - * @param topic the topic to subscribe to, used for unsubscription only - * @param veto if this proxy is for a veto subscriber - */ - public ProxyTopicSubscriber(Object proxiedSubscriber, Method subscriptionMethod, ReferenceStrength referenceStrength, - int priority, EventService es, String topic, boolean veto) { - super(proxiedSubscriber, subscriptionMethod, referenceStrength, priority, es, veto); - this.topic = topic; - if (topic == null) { - throw new IllegalArgumentException("Proxies for topic subscribers require a non-null topic."); - } - Class[] params = subscriptionMethod.getParameterTypes(); - if (params == null || params.length != 2 || !String.class.equals(params[0]) || params[1].isPrimitive()) { - throw new IllegalArgumentException("The subscriptionMethod must have the two parameters, the first one must be a String and the second a non-primitive (Object or derivative)."); - } - } - - /** - * Handles the event publication by pushing it to the real subscriber's subscription Method. - * - * @param topic the topic on which the object is being published - * @param data The Object that is being published on the topic. - */ - public void onEvent(String topic, Object data) { - Object[] args = new Object[]{topic, data}; - Object obj = null; - Method subscriptionMethod = null; - try { - obj = getProxiedSubscriber(); - if (obj == null) { - return; - } - subscriptionMethod = getSubscriptionMethod(); - subscriptionMethod.invoke(obj, args); - } catch (IllegalAccessException e) { - String message = "IllegalAccessException when invoking annotated method from EventService publication. Topic:" + topic + ", data:" + data + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(); - retryReflectiveCallUsingAccessibleObject(args, subscriptionMethod, obj, e, message); - } catch (InvocationTargetException e) { - throw new RuntimeException("InvocationTargetException when invoking annotated method from EventService publication. Topic:" + topic + ", data:" + data + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(), e); - } - } - - - public boolean shouldVeto(String topic, Object data) { - Object[] args = new Object[]{topic, data}; - Object obj = null; - Method subscriptionMethod = null; - try { - obj = getProxiedSubscriber(); - if (obj == null) { - return false; - } - subscriptionMethod = getSubscriptionMethod(); - return Boolean.valueOf(subscriptionMethod.invoke(obj, args)+""); - } catch (IllegalAccessException e) { - String message = "IllegalAccessException when invoking annotated veto method from EventService publication. Topic:" + topic + ", data:" + data + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(); - return retryReflectiveCallUsingAccessibleObject(args, subscriptionMethod, obj, e, message); - } catch (InvocationTargetException e) { - throw new RuntimeException("InvocationTargetException when invoking annotated veto method from EventService publication. Topic:" + topic + ", data:" + data + ", subscriber:" + getProxiedSubscriber() + ", subscription Method=" + getSubscriptionMethod(), e); - } - } - - protected void unsubscribe(String topic) { - if (veto) { - getEventService().unsubscribeVetoListener(topic, this); - } else { - getEventService().unsubscribe(topic, this); - } - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof ProxyTopicSubscriber) { - if (!super.equals(obj)) { - return false; - } - ProxyTopicSubscriber proxyTopicSubscriber = (ProxyTopicSubscriber) obj; - if (topic.equals(proxyTopicSubscriber.topic)) { - if (topic == null) { - return false; - } else { - if (!topic.equals(proxyTopicSubscriber.topic)) { - return false; - } - } - } - return true; - } else { - return false; - } - } - - - @Override - public String toString() { - return "ProxyTopicSubscriber{" + - "topic='" + topic + '\'' + - "veto='" + veto + '\'' + - "realSubscriber=" + getProxiedSubscriber() + - ", subscriptionMethod=" + getSubscriptionMethod() + - ", referenceStrength=" + getReferenceStrength() + - ", eventService=" + getEventService() + - '}'; - } -} diff --git a/src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java b/src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java deleted file mode 100644 index 3fb264538..000000000 --- a/src/main/java/org/scijava/event/bushe/RuntimeTopicEventSubscriber.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.scijava.event.bushe; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * A subscriber to a topic that is determined at runtime. - */ - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface RuntimeTopicEventSubscriber { - /** - * @return name of a method (that must return a String) and whose return value will become the subscription topic. - */ - String methodName() default "getTopicName"; - - /** @return Whether to subscribe weakly or strongly. */ - ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** - * @return event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. - */ - String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** @return Determines the order in which this subscriber is called, default is FIFO.*/ - int priority() default 0; - - /** - * @return Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the service needs to be created, it must have a default constructor. - */ - Class autoCreateEventServiceClass() default ThreadSafeEventService.class; -} \ No newline at end of file diff --git a/src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java b/src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java deleted file mode 100644 index 6d88c1432..000000000 --- a/src/main/java/org/scijava/event/bushe/RuntimeTopicPatternEventSubscriber.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface RuntimeTopicPatternEventSubscriber { - /** - * @return name of a method (which should return a String) and whose return value will become the subscription topic. - */ - String methodName() default "getTopicPatternName"; - - /** @return Whether to subscribe weakly or strongly. */ - ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** - * @return event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. - */ - String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** @return Determines the order in which this subscriber is called, default is FIFO.*/ - int priority() default 0; - - /** @return Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ - boolean exact() default false; - - /** - * @return Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the service needs to be created, it must have a default constructor. - */ - Class autoCreateEventServiceClass() default ThreadSafeEventService.class; -} diff --git a/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java b/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java deleted file mode 100644 index 3037ee83e..000000000 --- a/src/main/java/org/scijava/event/bushe/SubscriberTimingEvent.java +++ /dev/null @@ -1,116 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -/** - * This event is published internally to report timing for subscribers on an EventService. Applications may subscribe to - * this event to do handle subscribers that take too long. - * - * @author Michael Bushe michael@bushe.com - * @see ThreadSafeEventService - */ -class SubscriberTimingEvent extends AbstractEventServiceEvent { - private Long start; - private Long end; - private Long timeLimitMilliseconds; - private Object event; - private IEventSubscriber subscriber; - private VetoEventListener vetoEventListener; - private String stringified; - - /** - * Create a timing event - * - * @param source event source - * @param start system time at start of the notification of listener - * @param end system time at end of the notification of listener - * @param timeLimitMilliseconds expected maximum time - * @param event the published event - * @param subscriber the event subscriber that went over the time limit, can be null if vetoEventListener is not - * null - * @param vetoEventListener the vetoEventListener that took too long, can be null if the eventListener is not null - */ - public SubscriberTimingEvent(Object source, Long start, Long end, Long timeLimitMilliseconds, - Object event, IEventSubscriber subscriber, VetoEventListener vetoEventListener) { - super(source); - this.start = start; - this.end = end; - this.timeLimitMilliseconds = timeLimitMilliseconds; - this.event = event; - this.subscriber = subscriber; - this.vetoEventListener = vetoEventListener; - String type = "EventServiceSubscriber"; - String thing = ", EventServiceSubscriber:" + subscriber; - if (vetoEventListener != null) { - type = "VetoEventListener"; - thing = ", VetoEventListener" + vetoEventListener; - } - try { - stringified = "Time limit exceeded for " + type + ". Handling time=" + (end.longValue() - start.longValue()) + - ", Time limit=" + timeLimitMilliseconds + ", event:" + event - + thing + ", start:" + start + ", end:" + end; - } catch (Exception ex) { - stringified = "Time limit exceeded for event, toString threw and exception."; - } - } - - /** @return system time at start of the notification of listener */ - public Long getStart() { - return start; - } - - /** @return system time at end of the notification of listener */ - public Long getEnd() { - return end; - } - - /** @return expected maximum time */ - public Long getTimeLimitMilliseconds() { - return timeLimitMilliseconds; - } - - /** @return the published event */ - public Object getEvent() { - return event; - } - - /** - * @return subscriber the event subscriber that went over the time limit, can be null if vetoEventListener is not - * null - */ - public IEventSubscriber getSubscriber() { - return subscriber; - } - - /** @return the vetoEventListener that took too long, can be null if the eventListener is not null */ - public VetoEventListener getVetoEventListener() { - return vetoEventListener; - } - - /** @return true if a veto listener took too long, false if an EventSubscriber took took long */ - public boolean isVetoExceeded() { - return vetoEventListener != null; - } - - /** @return true if an EventSubscriber took too long, false if a veto listener took took long */ - public boolean isEventHandlingExceeded() { - return subscriber == null; - } - - public String toString() { - return stringified; - } -} diff --git a/src/main/java/org/scijava/event/bushe/SwingEventService.java b/src/main/java/org/scijava/event/bushe/SwingEventService.java deleted file mode 100644 index 20d40e7b3..000000000 --- a/src/main/java/org/scijava/event/bushe/SwingEventService.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import javax.swing.*; -import java.util.Arrays; -import java.util.List; - -/** - * An {@link EventService} implementation for Swing. - *

        - * This class is Swing thread-safe. All publish() calls NOT on the Swing EventDispatchThread thread are queued onto the - * EDT. If the calling thread is the EDT, then this is a simple pass-through (i.e the subscribers are notified on the - * same stack frame, just like they would be had they added themselves via Swing addXXListener methods). - * - * @author Michael Bushe michael@bushe.com - */ -class SwingEventService extends ThreadSafeEventService { - - /** - * By default, the SwingEventService is constructed such that any listener that takes over 200 ms causes an - * SubscriberTimingEvent to be published. You will need to add a subscriber to this event. Note that if you use - * event to launch a modal dialog, the timings will be as long as the dialog is up - this is the way Swing works. - */ - public SwingEventService() { - super((long) 200, false, null, null, null); - } - - public SwingEventService(Long timeThresholdForEventTimingEventPublication) { - super(timeThresholdForEventTimingEventPublication, false, null, null, null); - } - - /** - * Create a SwingEventService is such that any listener that takes over timeThresholdForEventTimingEventPublication - * milliseconds causes an EventSubscriberTimingEvent to be published. You can add a subscriber to this event or set - * subscribeTimingEventsInternally to true to cause the default logging to occur through the protected {@link - * #subscribeTiming(SubscriberTimingEvent)} call. - *

        - * Note that if you use event to launch a modal dialog, the timings will be as long as the dialog is up - this is the - * way Swing works. - * - * @param timeThresholdForEventTimingEventPublication the longest time a subscriber should spend handling an event, - * The service will publish an SubscriberTimingEvent after listener processing if the time was exceeded. If null, no - * SubscriberTimingEvent will be issued. - * @param subscribeTimingEventsInternally add a subscriber to the EventSubscriberTimingEvent internally and call the - * protected {@link #subscribeTiming(SubscriberTimingEvent)} method when they occur. This logs a warning to the - * {@link Logger} logger by default. - * - * @throws IllegalArgumentException if timeThresholdForEventTimingEventPublication is null and - * subscribeTimingEventsInternally is true. - */ - public SwingEventService(Long timeThresholdForEventTimingEventPublication, boolean subscribeTimingEventsInternally) { - super(timeThresholdForEventTimingEventPublication, subscribeTimingEventsInternally, null, null, null); - } - - /** - * Same as ThreadSafeEventService.publish(), except if the call is coming from a thread that is not the Swing Event - * Dispatch Thread, the request is put on the EDT through a a call to SwingUtilities.invokeLater(). Otherwise this - * DOES NOT post a new event on the EDT. The subscribers are called on the same EDT event, just like addXXXListeners - * would be. - */ - protected void publish(final Object event, final String topic, final Object eventObj, - final List subscribers, final List vetoSubscribers, final StackTraceElement[] callingStack) { - if (SwingUtilities.isEventDispatchThread()) { - super.publish(event, topic, eventObj, subscribers, vetoSubscribers, callingStack); - } else { - //Make call to this method - stick on the EDT if not on the EDT - //Check the params first so that this thread can get the exception thrown - SwingUtilities.invokeLater(new Runnable() { - public void run() { - if (LOG.isLoggable(Logger.Level.DEBUG)) { - LOG.debug("publish(" + event + "," + topic + "," + eventObj - + "), called from non-EDT Thread:" + Arrays.toString(callingStack)); - } - SwingEventService.super.publish(event, topic, eventObj, subscribers, vetoSubscribers, callingStack); - } - }); - } - } -} diff --git a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java index 1f3868fd2..685af6b42 100644 --- a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java +++ b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java @@ -181,7 +181,7 @@ public class ThreadSafeEventService implements EventService { /** Creates a ThreadSafeEventService that does not monitor timing of handlers. */ public ThreadSafeEventService() { - this(null, false, null, null, null); + this(null, null, null, null); } /** @@ -192,21 +192,7 @@ public ThreadSafeEventService() { * EventSubscriberTimingEvent will be issued. */ public ThreadSafeEventService(Long timeThresholdForEventTimingEventPublication) { - this(timeThresholdForEventTimingEventPublication, false, null, null, null); - } - - /** - * Creates a ThreadSafeEventService while providing time monitoring options. - * - * @param timeThresholdForEventTimingEventPublication the longest time a subscriber should spend handling an event, - * The service will publish an SubscriberTimingEvent after listener processing if the time was exceeded. If null, no - * EventSubscriberTimingEvent will be issued. - * @param subscribeTimingEventsInternally add a subscriber to the SubscriberTimingEvent internally and call the - * protected subscribeTiming() method when they occur. This logs a warning to the {@link Logger} by - * default. - */ - public ThreadSafeEventService(Long timeThresholdForEventTimingEventPublication, boolean subscribeTimingEventsInternally) { - this(timeThresholdForEventTimingEventPublication, subscribeTimingEventsInternally, null, null, null); + this(timeThresholdForEventTimingEventPublication, null, null, null); } /** @@ -219,8 +205,7 @@ public ThreadSafeEventService(Long timeThresholdForEventTimingEventPublication, */ public ThreadSafeEventService(Integer cleanupStartThreshold, Integer cleanupStopThreshold, Long cleanupPeriodMS) { - this(null, false, cleanupStartThreshold, - cleanupStopThreshold, cleanupPeriodMS); + this(null, cleanupStartThreshold, cleanupStopThreshold, cleanupPeriodMS); } /** @@ -229,31 +214,13 @@ public ThreadSafeEventService(Integer cleanupStartThreshold, * @param timeThresholdForEventTimingEventPublication the longest time a subscriber should spend handling an event. * The service will publish an SubscriberTimingEvent after listener processing if the time was exceeded. If null, no * SubscriberTimingEvent will be issued. - * @param subscribeTimingEventsInternally add a subscriber to the SubscriberTimingEvent internally and call the - * protected subscribeTiming() method when they occur. This logs a warning to the {@link Logger} by - * default. * @param cleanupStartThreshold see class javadoc. * @param cleanupStopThreshold see class javadoc. * @param cleanupPeriodMS see class javadoc. - * - * @throws IllegalArgumentException if timeThresholdForEventTimingEventPublication is null and - * subscribeTimingEventsInternally is true. */ public ThreadSafeEventService(Long timeThresholdForEventTimingEventPublication, - boolean subscribeTimingEventsInternally, Integer cleanupStartThreshold, - Integer cleanupStopThreshold, Long cleanupPeriodMS) { - if (timeThresholdForEventTimingEventPublication == null && subscribeTimingEventsInternally) { - throw new IllegalArgumentException("null, true in constructor is not valid. If you want to send timing messages for all events and subscribe them internally, pass 0, true"); - } + Integer cleanupStartThreshold, Integer cleanupStopThreshold, Long cleanupPeriodMS) { this.timeThresholdForEventTimingEventPublication = timeThresholdForEventTimingEventPublication; - if (subscribeTimingEventsInternally) { - //Listen to timing events and log them - subscribeStrongly(SubscriberTimingEvent.class, new IEventSubscriber() { - public void onEvent(Object event) { - subscribeTiming((SubscriberTimingEvent) event); - } - }); - } if (cleanupStartThreshold == null) { this.cleanupStartThreshhold = CLEANUP_START_THRESHOLD_DEFAULT; } else { @@ -332,8 +299,8 @@ public void setCleanupPeriodMS(Long cleanupPeriodMS) { } } - /** @see EventService#subscribe(Class,IEventSubscriber) */ - public boolean subscribe(Class cl, IEventSubscriber eh) { + /** @see EventService#subscribe(Class,EventSubscriber) */ + public boolean subscribe(Class cl, EventSubscriber eh) { if (cl == null) { throw new IllegalArgumentException("Event class must not be null"); } @@ -343,16 +310,16 @@ public boolean subscribe(Class cl, IEventSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing by class, class:" + cl + ", subscriber:" + eh); } - return subscribe(cl, subscribersByEventClass, new WeakReference(eh)); + return subscribe(cl, subscribersByEventClass, new WeakReference(eh)); } - /** @see EventService#subscribe(java.lang.reflect.Type, IEventSubscriber) */ - public boolean subscribe(Type type, IEventSubscriber eh) { - return subscribe(type, subscribersByEventType, new WeakReference(eh)); + /** @see EventService#subscribe(java.lang.reflect.Type, EventSubscriber) */ + public boolean subscribe(Type type, EventSubscriber eh) { + return subscribe(type, subscribersByEventType, new WeakReference(eh)); } - /** @see EventService#subscribeExactly(Class,IEventSubscriber) */ - public boolean subscribeExactly(Class cl, IEventSubscriber eh) { + /** @see EventService#subscribeExactly(Class,EventSubscriber) */ + public boolean subscribeExactly(Class cl, EventSubscriber eh) { if (cl == null) { throw new IllegalArgumentException("Event class must not be null"); } @@ -362,11 +329,11 @@ public boolean subscribeExactly(Class cl, IEventSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing by class, class:" + cl + ", subscriber:" + eh); } - return subscribe(cl, subscribersByExactEventClass, new WeakReference(eh)); + return subscribe(cl, subscribersByExactEventClass, new WeakReference(eh)); } - /** @see EventService#subscribe(String,IEventTopicSubscriber) */ - public boolean subscribe(String topic, IEventTopicSubscriber eh) { + /** @see EventService#subscribe(String,EventTopicSubscriber) */ + public boolean subscribe(String topic, EventTopicSubscriber eh) { if (topic == null) { throw new IllegalArgumentException("Topic must not be null"); } @@ -376,11 +343,11 @@ public boolean subscribe(String topic, IEventTopicSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing by topic name, name:" + topic + ", subscriber:" + eh); } - return subscribe(topic, subscribersByTopic, new WeakReference(eh)); + return subscribe(topic, subscribersByTopic, new WeakReference(eh)); } - /** @see EventService#subscribe(Pattern,IEventTopicSubscriber) */ - public boolean subscribe(Pattern pat, IEventTopicSubscriber eh) { + /** @see EventService#subscribe(Pattern,EventTopicSubscriber) */ + public boolean subscribe(Pattern pat, EventTopicSubscriber eh) { if (pat == null) { throw new IllegalArgumentException("Pattern must not be null"); } @@ -391,11 +358,11 @@ public boolean subscribe(Pattern pat, IEventTopicSubscriber eh) { LOG.debug("Subscribing by pattern, pattern:" + pat + ", subscriber:" + eh); } PatternWrapper patternWrapper = new PatternWrapper(pat); - return subscribe(patternWrapper, subscribersByTopicPattern, new WeakReference(eh)); + return subscribe(patternWrapper, subscribersByTopicPattern, new WeakReference(eh)); } - /** @see EventService#subscribeStrongly(Class,IEventSubscriber) */ - public boolean subscribeStrongly(Class cl, IEventSubscriber eh) { + /** @see EventService#subscribeStrongly(Class,EventSubscriber) */ + public boolean subscribeStrongly(Class cl, EventSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing weakly by class, class:" + cl + ", subscriber:" + eh); } @@ -405,8 +372,8 @@ public boolean subscribeStrongly(Class cl, IEventSubscriber eh) { return subscribe(cl, subscribersByEventClass, eh); } - /** @see EventService#subscribeExactlyStrongly(Class,IEventSubscriber) */ - public boolean subscribeExactlyStrongly(Class cl, IEventSubscriber eh) { + /** @see EventService#subscribeExactlyStrongly(Class,EventSubscriber) */ + public boolean subscribeExactlyStrongly(Class cl, EventSubscriber eh) { if (cl == null) { throw new IllegalArgumentException("Event class must not be null"); } @@ -419,8 +386,8 @@ public boolean subscribeExactlyStrongly(Class cl, IEventSubscriber eh) { return subscribe(cl, subscribersByExactEventClass, eh); } - /** @see EventService#subscribeStrongly(String,IEventTopicSubscriber) */ - public boolean subscribeStrongly(String name, IEventTopicSubscriber eh) { + /** @see EventService#subscribeStrongly(String,EventTopicSubscriber) */ + public boolean subscribeStrongly(String name, EventTopicSubscriber eh) { if (LOG.isLoggable(Level.DEBUG)) { LOG.debug("Subscribing weakly by topic name, name:" + name + ", subscriber:" + eh); } @@ -430,8 +397,8 @@ public boolean subscribeStrongly(String name, IEventTopicSubscriber eh) { return subscribe(name, subscribersByTopic, eh); } - /** @see EventService#subscribeStrongly(Pattern,IEventTopicSubscriber) */ - public boolean subscribeStrongly(Pattern pat, IEventTopicSubscriber eh) { + /** @see EventService#subscribeStrongly(Pattern,EventTopicSubscriber) */ + public boolean subscribeStrongly(Pattern pat, EventTopicSubscriber eh) { if (pat == null) { throw new IllegalArgumentException("Pattern must not be null"); } @@ -673,30 +640,30 @@ protected boolean subscribe(final Object classTopicOrPatternWrapper, final Map timeThresholdForEventTimingEventPublication.longValue()) { - publish(new SubscriberTimingEvent(this, new Long(start), new Long(end), timeThresholdForEventTimingEventPublication, event, subscriber, l)); - } - } - - protected void subscribeTiming(SubscriberTimingEvent event) { - LOG.log(Level.INFO, event + ""); - } - /** * Handle vetos of an event or topic, by default logs finely. * @@ -1989,7 +1938,7 @@ protected void subscribeVetoException(final Object event, final String topic, fi /** Called during event handling exceptions, calls handleException */ protected void onEventException(final String topic, final Object eventObj, Throwable e, - StackTraceElement[] callingStack, IEventTopicSubscriber eventTopicSubscriber) { + StackTraceElement[] callingStack, EventTopicSubscriber eventTopicSubscriber) { String str = "EventService topic subscriber:" + eventTopicSubscriber; if (eventTopicSubscriber != null) { str = str + ". Subscriber class:" + eventTopicSubscriber.getClass(); @@ -1999,7 +1948,7 @@ protected void onEventException(final String topic, final Object eventObj, Throw /** Called during event handling exceptions, calls handleException */ protected void handleException(final Object event, Throwable e, - StackTraceElement[] callingStack, IEventSubscriber eventSubscriber) { + StackTraceElement[] callingStack, EventSubscriber eventSubscriber) { String str = "EventService subscriber:" + eventSubscriber; if (eventSubscriber != null) { str = str + ". Subscriber class:" + eventSubscriber.getClass(); diff --git a/src/main/java/org/scijava/event/bushe/UseTheClassOfTheAnnotatedMethodsParameter.java b/src/main/java/org/scijava/event/bushe/UseTheClassOfTheAnnotatedMethodsParameter.java deleted file mode 100644 index 490303378..000000000 --- a/src/main/java/org/scijava/event/bushe/UseTheClassOfTheAnnotatedMethodsParameter.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.scijava.event.bushe; - -/** - * This is a dummy class to get around a limitation with annotations. - *

        - * It's nice to use an @EventSubscriber annotation without any parameters. For example: - *

        - * @EventSubscriber public void onEvent(FooEvent event) { //do something } 
        In this case, the method should - * obviously be subscribed to the FooEvent class. Since the eventClass is not required, annotations require a default to - * be supplied. A default of null is not allowed by the compiler since it is not a class literal. A default of - * Object.class cannot be used, since it is legal to subscribe to Object. hence, this class was created which documents - * the issue and provides decent feedback when using an IDE's parameter insight. - */ -final class UseTheClassOfTheAnnotatedMethodsParameter { -} diff --git a/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicPatternSubscriber.java deleted file mode 100644 index 3a6283fe0..000000000 --- a/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicPatternSubscriber.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface VetoRuntimeTopicPatternSubscriber { - /** - * @return name of a method (which should return a String) and whose return value will become the subscription topic. - */ - public abstract String methodName() default "getTopicPatternName"; - - /** @return Whether to subscribe weakly or strongly. */ - public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** - * @return event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. - */ - public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** @return Determines the order in which this subscriber is called, default is FIFO.*/ - public abstract int priority() default 0; - - /** @return Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ - public abstract boolean exact() default false; - - /** - * @return Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the service needs to be created, it must have a default constructor. - */ - public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; -} diff --git a/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicSubscriber.java deleted file mode 100644 index e5ce7d6eb..000000000 --- a/src/main/java/org/scijava/event/bushe/VetoRuntimeTopicSubscriber.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.scijava.event.bushe; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * A veto subscriber to a topic that is determined at runtime. - */ - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface VetoRuntimeTopicSubscriber { - /** - * @return name of a method (that must return a String) and whose return value will become the subscription topic. - */ - public abstract String methodName() default "getTopicName"; - - /** @return Whether to subscribe weakly or strongly. */ - public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** - * @return event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. - */ - public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** @return Determines the order in which this subscriber is called, default is FIFO.*/ - public abstract int priority() default 0; - - /** - * @return Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the service needs to be created, it must have a default constructor. - */ - public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; -} diff --git a/src/main/java/org/scijava/event/bushe/VetoSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoSubscriber.java deleted file mode 100644 index e8172744e..000000000 --- a/src/main/java/org/scijava/event/bushe/VetoSubscriber.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * An Annotation for adding VetoListener subscriptions to EventService Events. - *

        - * This annotation simplifies much of the repetitive boilerplate used for adding veto listeners - * (which in EventBus 2.0 will be called VetoSubscribers, thus this annotation name difference) - * to EventService Events. Example: - *

        - *

        - * public class MyAppController {
        - *   public MyAppController {
        - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
        - *   }
        - *   @EventSubscriber(eventClass=AppAppClosingEvent.class)
        - *   public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
        - *      //close connections, close windows
        - *   }
        - * }
        - *
        - * public class MyDocumentController {
        - *   @VetoSubscriber(eventClass=AppAppClosingEvent.class)
        - *   public boolean ensureDocumentIsSaved(AppAppClosingEvent appClosingEvent) {
        - *      if (docHasUnsavedChanges()) {
        - *         boolean answer = MyModalDialog.show("Are you sure you want to close and lose your changes?");
        - *         if (answer == StandardButtonValues.Cancel) {
        - *            //stop processing this event
        - *            return true;
        - *         }
        - *      }
        - *      //It's OK to close
        - *      return false;
        - *   }
        - * }
        - * 
        - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface VetoSubscriber { - /** The class to subscribe to, if not specified, a subscription is created for the type of the method parameter. */ - public abstract Class eventClass() default UseTheClassOfTheAnnotatedMethodsParameter.class; - - /** Determines the order in which this veto subscriber is called, default is FIFO.*/ - public abstract int priority() default 0; - - /** Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */ - public abstract boolean exact() default false; - - /** Whether to subscribe weakly or strongly. */ - public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ - public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** - * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the - * service needs to be created, it must have a default constructor. - */ - public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; -} diff --git a/src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java deleted file mode 100644 index 72de5cbed..000000000 --- a/src/main/java/org/scijava/event/bushe/VetoTopicPatternSubscriber.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * An Annotation for adding VetoTopicPatternListener subscriptions to EventService Events. - *

        - * This annotation simplifies much of the repetitive boilerplate used for adding veto topic pattern listeners - * (which in EventBus 2.0 will be called VetoTopicPatternSubscribers, thus this annotation name difference) - * to EventService Events. Example: - *

        - *

        - * public class MyAppController {
        - *   public MyAppController {
        - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
        - *   }
        - *   @EvenTopicSubscriber(topic="App.Close.*")
        - *   public void onAppClosingEvent(String topic, Object payload) {
        - *      //close connections, close windows
        - *   }
        - * }
        - *
        - * public class MyDocumentController {
        - *   @VetoTopicSubscriber(topic="App.Close.*")
        - *   public boolean ensureDocumentIsSaved(String topic, Object payload) {
        - *      if (docHasUnsavedChanges()) {
        - *         boolean answer = MyModalDialog.show("Are you sure you want to close and lose your changes?");
        - *         if (answer == StandardButtonValues.Cancel) {
        - *            //stop processing this event
        - *            return true;
        - *         }
        - *      }
        - *      //It's OK to close
        - *      return false;
        - *   }
        - * }
        - * 
        - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface VetoTopicPatternSubscriber { - /** The topic to subscribe to */ - public abstract String topicPattern(); - - /** Determines the order in which this veto subscriber is called, default is FIFO.*/ - public abstract int priority() default 0; - - /** Whether to subscribe weakly or strongly. */ - public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ - public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** - * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the - * service needs to be created, it must have a default constructor. - */ - public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; -} diff --git a/src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java deleted file mode 100644 index 81fbb7366..000000000 --- a/src/main/java/org/scijava/event/bushe/VetoTopicSubscriber.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.scijava.event.bushe; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * An Annotation for adding VetoTopicListener subscriptions to EventService Events. - *

        - * This annotation simplifies much of the repetitive boilerplate used for adding veto topic listeners - * (which in EventBus 2.0 will be called VetoTopicSubscribers, thus this annotation name difference) - * to EventService Events. Example: - *

        - *

        - * public class MyAppController {
        - *   public MyAppController {
        - *       AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
        - *   }
        - *   @EvenTopicSubscriber(topic="App.Close")
        - *   public void onAppClosingEvent(String topic, Object payload) {
        - *      //close connections, close windows
        - *   }
        - * }
        - *
        - * public class MyDocumentController {
        - *   @VetoTopicSubscriber(topic="App.Close")
        - *   public boolean ensureDocumentIsSaved(String topic, Object payload) {
        - *      if (docHasUnsavedChanges()) {
        - *         boolean answer = MyModalDialog.show("Are you sure you want to close and lose your changes?");
        - *         if (answer == StandardButtonValues.Cancel) {
        - *            //stop processing this event
        - *            return true;
        - *         }
        - *      }
        - *      //It's OK to close
        - *      return false;
        - *   }
        - * }
        - * 
        - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@interface VetoTopicSubscriber { - /** The topic to subscribe to */ - String topic(); - - /** Determines the order in which this veto subscriber is called, default is FIFO.*/ - public abstract int priority() default 0; - - /** Whether to subscribe weakly or strongly. */ - public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK; - - /** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */ - public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS; - - /** - * Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the - * service needs to be created, it must have a default constructor. - */ - public abstract Class autoCreateEventServiceClass() default ThreadSafeEventService.class; -} diff --git a/src/test/java/org/scijava/event/bushe/AbstractSubscriber.java b/src/test/java/org/scijava/event/bushe/AbstractSubscriber.java deleted file mode 100644 index 1666a0e20..000000000 --- a/src/test/java/org/scijava/event/bushe/AbstractSubscriber.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.scijava.event.bushe; - -/** - * Intended to answer this post: - * https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=30702&forumID=1834 - */ -public abstract class AbstractSubscriber { - private String targetType; - - abstract protected void initialize(String type); - - @EventSubscriber(eventClass=MyData.class) - public void loadDocumentAnalysis(MyData data) { - System.out.println(data + " received by " + getClass().getName()); - setTargetType(data.getClassification()); - //getStatusCallback().startProgress(getClass().getCanonicalName(), true, null); - initialize(getTargetType()); - } - - public void setTargetType(String targetType) { - this.targetType = targetType; - } - - public String getTargetType() { - return targetType; - } -} diff --git a/src/test/java/org/scijava/event/bushe/AnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/AnnotatedEventSubscriber.java deleted file mode 100644 index 182e26e7a..000000000 --- a/src/test/java/org/scijava/event/bushe/AnnotatedEventSubscriber.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.scijava.event.bushe; - -import java.io.File; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.awt.Color; -import javax.swing.JComponent; -import javax.swing.JToggleButton; - -/** Test class for class-based subscriptions */ -public class AnnotatedEventSubscriber { - static int timesColorChanged = 0; - static String lastCall = null; - static int timesCalled = 0; - - public static int getTimesColorChanged() { - return timesColorChanged; - } - - public static void setTimesColorChanged(int times) { - timesColorChanged = times; - } - - public static int getTimesCalled() { - return timesCalled; - } - - public static void setTimesCalled(int times) { - timesCalled = times; - } - - public static String getLastCall() { - return lastCall; - } - - public static void setLastCall(String call) { - lastCall = call; - } - - @EventSubscriber - public void doColorChange(Color color) { - timesColorChanged++; - timesCalled++; - } - - @EventSubscriber(eventClass = List.class) - public void doList(Collection collection) { - lastCall = "doList"; - timesCalled++; - } - - @EventSubscriber(eventClass = JToggleButton.class, exact = true) - public void doJToggleButtonExactly(JComponent list) { - lastCall = "doJToggleButtonExactly"; - timesCalled++; - } - - @EventSubscriber(eventClass = Iterator.class, - eventServiceName = "IteratorService", - autoCreateEventServiceClass = ThreadSafeEventService.class) - public void autoCreateEventServiceClass(Iterator it) { - lastCall = "autoCreateEventServiceClass"; - timesCalled++; - } - - @EventTopicSubscriber(topic = "File.Open") - public void simpleTopicOpenFile(String topic, File file) { - lastCall = "simpleTopicOpenFile"; - timesCalled++; - } - - @EventTopicSubscriber(topic = "Iterator", - eventServiceName = "IteratorService", - autoCreateEventServiceClass = ThreadSafeEventService.class) - public void autoCreateEventServiceTopic(String topic, Iterator it) { - lastCall = "autoCreateEventServiceClass"; - timesCalled++; - } - - @EventTopicPatternSubscriber(topicPattern = "IceCream.*", - eventServiceName = "IceCreamService") - public void doIceCream(String topic, String order) { - lastCall = "doIceCream"; - timesCalled++; - } - -} diff --git a/src/test/java/org/scijava/event/bushe/AnnotatedVetoSubscriber.java b/src/test/java/org/scijava/event/bushe/AnnotatedVetoSubscriber.java deleted file mode 100644 index 817df28b7..000000000 --- a/src/test/java/org/scijava/event/bushe/AnnotatedVetoSubscriber.java +++ /dev/null @@ -1,83 +0,0 @@ -package org.scijava.event.bushe; - -import java.io.File; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.awt.Color; -import javax.swing.JComponent; -import javax.swing.JToggleButton; - -/** Test class for class-based subscriptions. - * Does not like null, empty, red or cherry */ -public class AnnotatedVetoSubscriber { - - @VetoSubscriber - public boolean vetoBlueColorChange(Color color) { - if (color == Color.RED) { - return true; - } else { - return false; - } - } - - @VetoSubscriber(eventClass = List.class) - public boolean doList(Collection collection) { - if (collection == null || collection.isEmpty()) { - return true; - } else { - return false; - } - } - - @VetoSubscriber(eventClass = JToggleButton.class, exact = true) - public boolean doJToggleButtonExactly(JComponent button) { - if (button.getForeground() == Color.RED) { - return true; - } else { - return false; - } - } - - @VetoSubscriber(eventClass = Iterator.class, - eventServiceName = "IteratorService", - autoCreateEventServiceClass = ThreadSafeEventService.class) - public boolean autoCreateEventServiceClass(Iterator it) { - if (it == null || !it.hasNext()) { - return true; - } else { - return false; - } - } - - @VetoTopicSubscriber(topic = "File.Open") - public boolean simpleTopicOpenFile(String topic, File file) { - if (file == null) { - return true; - } else { - return false; - } - } - - @VetoTopicSubscriber(topic = "Iterator", - eventServiceName = "IteratorService", - autoCreateEventServiceClass = ThreadSafeEventService.class) - public boolean autoCreateEventServiceTopic(String topic, Iterator it) { - if (it == null || !it.hasNext()) { - return true; - } else { - return false; - } - } - - @VetoTopicPatternSubscriber(topicPattern = "IceCream.*", - eventServiceName = "IceCreamService") - public boolean doIceCream(String topic, String order) { - if (topic.indexOf("Cherry") > -1) { - return true; - } else { - return false; - } - } - -} diff --git a/src/test/java/org/scijava/event/bushe/AnotherAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/AnotherAnnotatedEventSubscriber.java deleted file mode 100644 index 7f7f0c5e1..000000000 --- a/src/test/java/org/scijava/event/bushe/AnotherAnnotatedEventSubscriber.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.List; -import java.util.Collection; -import java.util.Iterator; -import java.io.File; -import java.awt.Color; -import javax.swing.JToggleButton; -import javax.swing.JComponent; - -/** Test class for class-based subscriptions */ -public class AnotherAnnotatedEventSubscriber { - static int timesColorChanged = 0; - static String lastCall = null; - static int timesCalled = 0; - - public static int getTimesColorChanged() { - return timesColorChanged; - } - - public static void setTimesColorChanged(int times) { - timesColorChanged = times; - } - - public static int getTimesCalled() { - return timesCalled; - } - - public static void setTimesCalled(int times) { - timesCalled = times; - } - - public static String getLastCall() { - return lastCall; - } - - public static void setLastCall(String call) { - lastCall = call; - } - - @EventSubscriber(eventClass = List.class, referenceStrength = ReferenceStrength.STRONG) - public void doList(Collection collection) { - lastCall = "doList"; - timesCalled++; - } -} diff --git a/src/test/java/org/scijava/event/bushe/AnotherDoubleAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/AnotherDoubleAnnotatedEventSubscriber.java deleted file mode 100644 index 928b67428..000000000 --- a/src/test/java/org/scijava/event/bushe/AnotherDoubleAnnotatedEventSubscriber.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.Collection; -import java.util.List; - -/** Test class for class-based subscriptions */ -public class AnotherDoubleAnnotatedEventSubscriber { - - static int timesCalled = 0; - - public static int getTimesCalled() { - return timesCalled; - } - - public static void setTimesCalled(int times) { - timesCalled = times; - } - - @EventSubscriber(eventClass = List.class) - public void doList(Collection collection) { - timesCalled++; - } -} diff --git a/src/test/java/org/scijava/event/bushe/BadEventService.java b/src/test/java/org/scijava/event/bushe/BadEventService.java index 19cebe785..2046821a2 100644 --- a/src/test/java/org/scijava/event/bushe/BadEventService.java +++ b/src/test/java/org/scijava/event/bushe/BadEventService.java @@ -3,8 +3,8 @@ public class BadEventService extends ThreadSafeEventService { - /** @see org.scijava.event.bushe.EventService#subscribe(String,org.scijava.event.bushe.IEventTopicSubscriber) */ - public boolean subscribe(String topic, IEventTopicSubscriber eh) { + /** @see org.scijava.event.bushe.EventService#subscribe(String,org.scijava.event.bushe.EventTopicSubscriber) */ + public boolean subscribe(String topic, EventTopicSubscriber eh) { throw new RuntimeException("For testing"); } } diff --git a/src/test/java/org/scijava/event/bushe/ConcreteSubscriber.java b/src/test/java/org/scijava/event/bushe/ConcreteSubscriber.java deleted file mode 100644 index 129d71987..000000000 --- a/src/test/java/org/scijava/event/bushe/ConcreteSubscriber.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.scijava.event.bushe; - -/** - * Intended to answer this post: - * https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=30702&forumID=1834 - */ -public class ConcreteSubscriber extends AbstractSubscriber { - private boolean wasInitialized = false; - - protected void initialize(String type) { - this.wasInitialized = true; - } - - public boolean isInitialized() { - return wasInitialized; - } -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/DoubleAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/DoubleAnnotatedEventSubscriber.java deleted file mode 100644 index 8448f28de..000000000 --- a/src/test/java/org/scijava/event/bushe/DoubleAnnotatedEventSubscriber.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.List; -import java.util.Collection; -import java.util.Iterator; -import java.io.File; -import java.awt.Color; -import javax.swing.JToggleButton; -import javax.swing.JComponent; - -/** Test class for class-based subscriptions */ -public class DoubleAnnotatedEventSubscriber { - - static int timesCalled = 0; - - public static int getTimesCalled() { - return timesCalled; - } - - public static void setTimesCalled(int times) { - timesCalled = times; - } - - @EventSubscriber(eventClass = List.class) - public void doList(Collection collection) { - timesCalled++; - } - - @EventTopicSubscriber(topic="foo") - public void foo(String topic, Object o) { - timesCalled++; - } -} diff --git a/src/test/java/org/scijava/event/bushe/EventServiceLocatorTestCase.java b/src/test/java/org/scijava/event/bushe/EventServiceLocatorTestCase.java deleted file mode 100644 index 8fb87e534..000000000 --- a/src/test/java/org/scijava/event/bushe/EventServiceLocatorTestCase.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -/** - * Cleans out the event service locators before each test - */ -public class EventServiceLocatorTestCase extends TestCase { - public EventServiceLocatorTestCase(String name) { - super(name); - } - - public void testEmptyTestCaseToAvoidWarning() { - - } - - @Override - public void setUp() throws Exception { - clearEventServiceLocator(); - } - - public static void clearEventServiceLocator() { - System.clearProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS); - System.clearProperty(EventServiceLocator.EVENT_BUS_CLASS); - EventServiceLocator.clearAll(); - } - - @Override - protected void tearDown() throws Exception { - clearEventServiceLocator(); - } -} diff --git a/src/test/java/org/scijava/event/bushe/Factory.java b/src/test/java/org/scijava/event/bushe/Factory.java deleted file mode 100644 index 546c3fb49..000000000 --- a/src/test/java/org/scijava/event/bushe/Factory.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.scijava.event.bushe; - -public class Factory { - - public static SubscriberForTesting newRuntimeTopicSubscriber(String topic) { - return new RuntimeTopicSubscriber(topic); - } - - public static SubscriberForTesting newRuntimeTopicPatternSubscriber(String topicPattern) { - return new RuntimeTopicPatternSubscriber(topicPattern); - } -} diff --git a/src/test/java/org/scijava/event/bushe/Issue15Subscriber.java b/src/test/java/org/scijava/event/bushe/Issue15Subscriber.java deleted file mode 100644 index 8bb257efd..000000000 --- a/src/test/java/org/scijava/event/bushe/Issue15Subscriber.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.List; -import javax.swing.SwingUtilities; - -/** - * - */ -public class Issue15Subscriber { - private long timesCalled; - - public Issue15Subscriber() { - AnnotationProcessor.process(this); - } - - @EventSubscriber(eventClass = List.class) - public void handleClassSubscription(List c) { - timesCalled++; - if (c != null) { - System.out.println("In handleClassSubscription"); - System.out.println("By class: " + c); - System.out.println("Is on EDT: " + SwingUtilities.isEventDispatchThread()); - System.out.println(); - } - } - - /* - @EventTopicSubscriber(topic = "Topic1") - public void handleTopic1Subscription(String topic, Object o) { - if (o != null) { - System.out.println("In handleTopic1Subscription"); - System.out.println("By topic: " + topic); - System.out.println(" for class: " + o.getClass()); - System.out.println("Is on EDT: " + SwingUtilities.isEventDispatchThread()); - System.out.println(); - } - } - - - @EventTopicSubscriber(topic = "Topic2") - public void handleTopic2Subscription(String topic, Object o) { - if (o != null) { - System.out.println("In handleTopic2Subscription"); - System.out.println("By topic: " + topic); - System.out.println(" for class: " + o.getClass()); - System.out.println("Is on EDT: " + SwingUtilities.isEventDispatchThread()); - System.out.println(); - } - } - - - - @EventTopicPatternSubscriber(topicPattern = ".*") - public void handleAllTopicsSubscription(String topic, Object o) { - if (o != null) { - System.out.println("In handleAllTopicsSubscription"); - System.out.println("By topic: " + topic); - System.out.println(" for class: " + o.getClass()); - System.out.println("Is on EDT: " + SwingUtilities.isEventDispatchThread()); - System.out.println(); - } - } - */ - - public long getTimesCalled() { - return timesCalled; - } -} diff --git a/src/test/java/org/scijava/event/bushe/Issue15Subscriber2.java b/src/test/java/org/scijava/event/bushe/Issue15Subscriber2.java deleted file mode 100644 index 5fbc7a162..000000000 --- a/src/test/java/org/scijava/event/bushe/Issue15Subscriber2.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.List; -import java.util.ArrayList; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JTextField; - -/** - * - */ -public class Issue15Subscriber2 extends JDialog { - - private JTextField textField; - private long timesCalled; - - /** - * A new setup has been selected. - * @param e - * setup changed event notification - */ - @EventSubscriber(eventClass = List.class) - public void handleEvent(List e) { - timesCalled++; - textField.setText(e+""); - } - - private ActionListener buttonListener = new ActionListener() { - public void actionPerformed(ActionEvent e) { - EventBus.publish(new ArrayList()); - } - }; - - public Issue15Subscriber2() { - super(); - - AnnotationProcessor.process(this); - - setLayout(new GridLayout(1, 2)); - - JButton button = new JButton("Push Me"); - button.addActionListener(buttonListener); - textField = new JTextField(""); - - add(button); - add(textField); - } - - public static void main(String args[]) { - - Issue15Subscriber s = new Issue15Subscriber(); - - Issue15Subscriber2 dialog = new Issue15Subscriber2(); - System.err.println(EventBus.getSubscribers(List.class).size()); - dialog.setVisible(true); - } - - public long getTimesCalled() { - return timesCalled; - } -} diff --git a/src/test/java/org/scijava/event/bushe/RuntimeTopicPatternSubscriber.java b/src/test/java/org/scijava/event/bushe/RuntimeTopicPatternSubscriber.java deleted file mode 100644 index 01af68b6b..000000000 --- a/src/test/java/org/scijava/event/bushe/RuntimeTopicPatternSubscriber.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.List; - -class RuntimeTopicPatternSubscriber implements SubscriberForTesting { - private final String topicPattern; - private long timesCalled; - - public RuntimeTopicPatternSubscriber(String topicPattern) { - this.topicPattern = topicPattern; - - AnnotationProcessor.process(this); - } - - @RuntimeTopicPatternEventSubscriber - public void handleEvent(String topic, List event) { - timesCalled++; - } - - @RuntimeTopicPatternEventSubscriber - public boolean shouldVeto(String topic, List e) { - return e == null; - } - - public String getTopicPatternName() { - return topicPattern; - } - - public long getTimesCalled() { - return timesCalled; - } -} diff --git a/src/test/java/org/scijava/event/bushe/RuntimeTopicSubscriber.java b/src/test/java/org/scijava/event/bushe/RuntimeTopicSubscriber.java deleted file mode 100644 index 5cb27936a..000000000 --- a/src/test/java/org/scijava/event/bushe/RuntimeTopicSubscriber.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.List; - -class RuntimeTopicSubscriber implements SubscriberForTesting { - private long timesCalled; - private final String topic; - - public RuntimeTopicSubscriber(String topic) { - this.topic = topic; - AnnotationProcessor.process(this); - } - - @RuntimeTopicEventSubscriber - public void handleEvent(String topic, List e) { - timesCalled++; - } - - @RuntimeTopicEventSubscriber - public boolean shouldVeto(String topic, List e) { - return e == null; - } - - public String getTopicName() { - return topic; - } - - public long getTimesCalled() { - return timesCalled; - } -} diff --git a/src/test/java/org/scijava/event/bushe/StrongAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/StrongAnnotatedEventSubscriber.java deleted file mode 100644 index 8ff4b5ffe..000000000 --- a/src/test/java/org/scijava/event/bushe/StrongAnnotatedEventSubscriber.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.scijava.event.bushe; - -import java.io.File; - -public class StrongAnnotatedEventSubscriber { - static String lastCall = null; - static int timesCalled = 0; - - public static int getTimesCalled() { - return timesCalled; - } - - public static void setTimesCalled(int times) { - timesCalled = times; - } - - public static String getLastCall() { - return lastCall; - } - - public static void setLastCall(String call) { - lastCall = call; - } - - @EventSubscriber(referenceStrength = ReferenceStrength.STRONG) - public void doStrong(File it) { - lastCall = "doStrong"; - timesCalled++; - } -} diff --git a/src/test/java/org/scijava/event/bushe/StrongClassAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/StrongClassAnnotatedEventSubscriber.java deleted file mode 100644 index 3894195a5..000000000 --- a/src/test/java/org/scijava/event/bushe/StrongClassAnnotatedEventSubscriber.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.Collection; -import java.util.List; - -/** Test class for class-based subscriptions */ -public class StrongClassAnnotatedEventSubscriber { - static int timesColorChanged = 0; - static String lastCall = null; - static int timesCalled = 0; - - public static int getTimesCalled() { - return timesCalled; - } - - public static void setTimesCalled(int times) { - timesCalled = times; - } - - @EventSubscriber(eventClass = List.class, referenceStrength = ReferenceStrength.STRONG) - public void doList(Collection collection) { - timesCalled++; - } -} diff --git a/src/test/java/org/scijava/event/bushe/SubscriberForTest.java b/src/test/java/org/scijava/event/bushe/SubscriberForTest.java index 4d683ce4f..2fac88e57 100644 --- a/src/test/java/org/scijava/event/bushe/SubscriberForTest.java +++ b/src/test/java/org/scijava/event/bushe/SubscriberForTest.java @@ -6,7 +6,7 @@ * @author Michael Bushe * @since Nov 19, 2005 11:01:06 PM */ -public class SubscriberForTest implements IEventSubscriber { +public class SubscriberForTest implements EventSubscriber { private boolean throwException; private Long waitTime; private EBTestCounter testDefaultEventService; diff --git a/src/test/java/org/scijava/event/bushe/TestAnnotationInAbstractClass.java b/src/test/java/org/scijava/event/bushe/TestAnnotationInAbstractClass.java deleted file mode 100644 index 8f04ff56c..000000000 --- a/src/test/java/org/scijava/event/bushe/TestAnnotationInAbstractClass.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.scijava.event.bushe; - -import junit.framework.TestCase; -import junit.framework.Assert; - -/** - * Testing: - * https://eventbus.dev.java.net/servlets/ProjectForumMessageView?messageID=30702&forumID=1834 - */ -public class TestAnnotationInAbstractClass extends TestCase { - public void testAbstract() { - ConcreteSubscriber concrete = new ConcreteSubscriber(); - AnnotationProcessor.process(concrete); - EventBus.publish(new MyData()); - EDTUtil.waitForEDT(); - Assert.assertTrue(concrete.isInitialized()); - } -} diff --git a/src/test/java/org/scijava/event/bushe/TestContainerEventService.java b/src/test/java/org/scijava/event/bushe/TestContainerEventService.java deleted file mode 100644 index 9537e4349..000000000 --- a/src/test/java/org/scijava/event/bushe/TestContainerEventService.java +++ /dev/null @@ -1,218 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -import javax.swing.*; -import java.awt.*; -import java.util.ArrayList; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestContainerEventService extends TestCase { - private ArrayList subscribedEvents; - private Object aSource = new Object(); - private JFrame frame; - private JPanel panel; - private Object lastEventObject; - - public TestContainerEventService(String name) { - super(name); - } - - protected void setUp() throws Exception { - subscribedEvents = new ArrayList(); - frame = new JFrame(); - panel = new JPanel(); - frame.setContentPane(panel); - } - - public void testContainerEventServiceFinder() { - JButton button = new JButton("Foo"); - panel.add(button); - JButton barButton = new JButton("Bar"); - panel.add(barButton); - EventService es = ContainerEventServiceFinder.getEventService(button); - assertTrue(EventBus.getGlobalEventService() != es); - EventService esBar = ContainerEventServiceFinder.getEventService(barButton); - assertEquals(esBar, es); - assertEquals(0, subscribedEvents.size()); - es.subscribe("FooTopic", new IEventTopicSubscriber() { - public void onEvent(String topic, Object evt) { - subscribedEvents.add(evt); - } - }); - esBar.publish("FooTopic", "Foo"); - EDTUtil.waitForEDT(); - assertEquals(1, subscribedEvents.size()); - subscribedEvents.clear(); - Point location = frame.getLocation(); - frame.setLocation(33, 33); - EDTUtil.waitForEDT(); - assertTrue(subscribedEvents.size() == 0); - } - - public void testContainerEventServiceSupplier() { - JButton button = new JButton("Foo"); - JPanel subPanel = new JPanel(); - subPanel.add(button); - panel.add(subPanel); - JButton barButton = new JButton("Bar"); - JPanel subPanel2 = new ContainerEventServiceSupplierPanel(); - subPanel2.add(barButton); - panel.add(subPanel2); - EventService es = ContainerEventServiceFinder.getEventService(button); - assertTrue(EventBus.getGlobalEventService() != es); - EventService esBar = ContainerEventServiceFinder.getEventService(barButton); - assertTrue(esBar != es); - assertEquals(0, subscribedEvents.size()); - es.subscribe("FooTopic", new IEventTopicSubscriber() { - public void onEvent(String topic, Object evt) { - subscribedEvents.add(evt); - } - }); - esBar.publish("FooTopic", "Foo"); - EDTUtil.waitForEDT(); - assertEquals(0, subscribedEvents.size()); - } - - public void testContainerEventServiceRegistrar() { - //Set the lastEventObject whenever the event fires on the right Container Event Service - IEventTopicSubscriber buttonContainerTopicSubscriber = new IEventTopicSubscriber() { - public void onEvent(String topic, Object data) { - System.out.println("topic=" + topic + ", data=" + data); - setLastEventObject(data); - } - }; - //Set the lastEventObject whenever the event fires on the right Container Event Service - VetoTopicEventListener buttonContainerVetoTopicSubscriber = new VetoTopicEventListener() { - public boolean shouldVeto(String topic, Object data) { - return "VetoMe".equals(data); - } - }; - //Set the lastEventObject whenever the event fires on the right Container Event Service - IEventSubscriber buttonContainerSubscriber = new IEventSubscriber() { - public void onEvent(Object data) { - System.out.println("class=" + data); - setLastEventObject(data); - } - }; - //Set the lastEventObject whenever the event fires on the right Container Event Service - VetoEventListener buttonContainerVetoSubscriber = new VetoEventListener() { - public boolean shouldVeto(Object data) { - return "VetoMe".equals(data.toString()); - } - }; - JButton button = new JButton("Foo"); - - ContainerEventServiceRegistrar reg = new ContainerEventServiceRegistrar(button, buttonContainerTopicSubscriber, - "RegEvent"); - EventService es = reg.getContainerEventService(); - assertTrue(es != null); - - ContainerEventServiceRegistrar reg2 = new ContainerEventServiceRegistrar(button, buttonContainerVetoTopicSubscriber, - "RegEvent"); - EventService es4reg2 = reg2.getContainerEventService(); - assertTrue(es4reg2 != null); - - ContainerEventServiceRegistrar reg3 = new ContainerEventServiceRegistrar(button, buttonContainerSubscriber, - String.class); - EventService es4reg3 = reg3.getContainerEventService(); - assertTrue(es4reg3 != null); - - ContainerEventServiceRegistrar reg4 = new ContainerEventServiceRegistrar(button, buttonContainerVetoSubscriber, - String.class); - EventService es4reg4 = reg4.getContainerEventService(); - assertTrue(es4reg4 != null); - - //Publishing on the global event bus should not have an effect - EventBus.publish("RegEvent", "WrongBus"); - assertEquals(getLastEventObject(), null); - - //Make a container that has another container inside it that supplies a container event service - JPanel subPanel = new JPanel(); - subPanel.add(button); - ContainerEventServiceSupplierPanel subPanel2 = new ContainerEventServiceSupplierPanel(); - panel.add(subPanel); - panel.add(subPanel2); - EventService es2 = reg.getContainerEventService(); - //the registrar kept up with the move - assertTrue(es2 != es); - - EventBus.publish("RegEvent", "WrongBus"); - assertEquals(getLastEventObject(), null); - EventBus.publish("StringClassEvent"); - assertEquals(getLastEventObject(), null); - - EventService topPanelES = ContainerEventServiceFinder.getEventService(panel); - - topPanelES.publish("RegEvent", "TopLevelBus"); - EDTUtil.waitForEDT(); - assertEquals("TopLevelBus", getLastEventObject()); - - topPanelES.publish("Don'tVetoMe"); - EDTUtil.waitForEDT(); - assertEquals("Don'tVetoMe", getLastEventObject()); - - topPanelES.publish("VetoMe"); - EDTUtil.waitForEDT(); - assertEquals("Don'tVetoMe", getLastEventObject());//veto worked - - topPanelES.publish("RegEvent", "TopLevelBus"); - EDTUtil.waitForEDT(); - assertEquals("TopLevelBus", getLastEventObject()); - - EventService subPanel2ES = subPanel2.getContainerEventService(); - subPanel2ES.publish("RegEvent", "SuppliedBus"); - EDTUtil.waitForEDT(); - assertEquals("TopLevelBus", getLastEventObject());//still - - subPanel2.add(button); - EDTUtil.waitForEDT(); - subPanel2ES.publish("RegEvent", "SuppliedBus"); - EDTUtil.waitForEDT(); - assertEquals("SuppliedBus", getLastEventObject());//detected move - - subPanel2ES.publish("RegEvent", "VetoMe"); - EDTUtil.waitForEDT(); - assertEquals("SuppliedBus", getLastEventObject());//veto moved - - subPanel.add(button); - topPanelES.publish("RegEvent", "TopLevelBus"); - EDTUtil.waitForEDT(); - assertEquals("TopLevelBus", getLastEventObject()); - - subPanel2ES.publish("RegEvent", "SuppliedBus"); - EDTUtil.waitForEDT(); - assertEquals("TopLevelBus", getLastEventObject()); - } - - private synchronized void setLastEventObject(Object data) { - lastEventObject = data; - } - - public synchronized Object getLastEventObject() { - return lastEventObject; - } - - class ContainerEventServiceSupplierPanel extends JPanel implements ContainerEventServiceSupplier { - private EventService es = new SwingEventService(); - - public EventService getContainerEventService() { - return es; - } - } -} diff --git a/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java b/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java deleted file mode 100644 index 975a491d1..000000000 --- a/src/test/java/org/scijava/event/bushe/TestDefaultEventService.java +++ /dev/null @@ -1,1394 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import java.io.Serializable; -import java.util.List; -import java.util.Collection; -import java.util.Map; -import java.util.regex.Pattern; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Type; - -import java.awt.Container; -import java.awt.Component; -import javax.swing.JComponent; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestDefaultEventService extends TestCase { - - private ThreadSafeEventService eventService = null; - private IEventSubscriber eventSubscriber = null; - private IEventTopicSubscriber eventTopicSubscriber; - private SubscriberTimingEvent timing; - private EBTestCounter testCounter = new EBTestCounter(); - - public TestDefaultEventService(String name) { - super(name); - } - - protected void setUp() throws Exception { - eventService = new ThreadSafeEventService(null, false); - EventServiceLocatorTestCase.clearEventServiceLocator(); - } - - protected void tearDown() throws Exception { - eventService = null; - EventServiceLocatorTestCase.clearEventServiceLocator(); - } - - private EventServiceEvent createEvent() { - return new EventServiceEvent() { - public Object getSource() { - return ""; - } - }; - } - - private Class getEventClass() { - return createEvent().getClass(); - } - - private IEventSubscriber createEventSubscriber(boolean throwException) { - return new SubscriberForTest(testCounter, throwException); - } - - private IEventTopicSubscriber createEventTopicSubscriber(boolean throwException) { - return new TopicSubscriberForTest(testCounter, throwException); - } - - private IEventSubscriber createEventSubscriber(Long waitTime) { - return new SubscriberForTest(testCounter, waitTime); - } - - private IEventSubscriber getEventSubscriber() { - return getEventSubscriber(true); - } - - private IEventSubscriber getEventSubscriber(boolean throwException) { - if (eventSubscriber == null) { - eventSubscriber = createEventSubscriber(throwException); - } - return eventSubscriber; - } - - private IEventTopicSubscriber getEventTopicSubscriber() { - if (eventTopicSubscriber == null) { - eventTopicSubscriber = createEventTopicSubscriber(false); - } - return eventTopicSubscriber; - } - - public void testTyping() { - IEventSubscriber subscriber = createEventSubscriber(false); - - Double doub = 3.14; - Number numb = doub; - eventService.subscribe(Number.class, subscriber); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(doub); - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - eventService.publish(numb); - assertEquals("testPublish(total)", 2, testCounter.eventsHandledCount); - eventService.unsubscribe(Number.class, subscriber); - eventService.subscribe(Double.class, subscriber); - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(doub); - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - eventService.publish(numb); - assertEquals("testPublish(total)", 2, testCounter.eventsHandledCount); - } - - public void testSubscribe() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = eventService.subscribe(getEventClass(), subscriber); - assertTrue("testSubscribe(new subscriber)", actualReturn); - - actualReturn = eventService.subscribe(getEventClass(), subscriber); - assertFalse("testSubscribe(duplicate subscriber)", actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - try { - actualReturn = eventService.subscribe((Class) null, getEventSubscriber()); - fail("subscribeStrongly(null, x) should have thrown exception"); - } catch (Exception e) { - } - - try { - actualReturn = eventService.subscribe(getEventClass(), null); - fail("subscribeStrongly(x, null) should have thrown exception"); - } catch (Exception e) { - } - - } - - public void testSubscribeOrder() { - boolean actualReturn; - SubscriberForTest subscriber1 = (SubscriberForTest) createEventSubscriber(new Long(100)); - SubscriberForTest subscriber2 = (SubscriberForTest) createEventSubscriber(new Long(100)); - SubscriberForTest subscriber3 = (SubscriberForTest) createEventSubscriber(new Long(100)); - - actualReturn = eventService.subscribe(getEventClass(), subscriber1); - actualReturn = eventService.subscribe(getEventClass(), subscriber2); - actualReturn = eventService.subscribe(getEventClass(), subscriber3); - - eventService.publish(createEvent()); - - assertTrue(subscriber1.callTime.before(subscriber2.callTime)); - assertTrue(subscriber2.callTime.before(subscriber3.callTime)); - - actualReturn = eventService.subscribe(getEventClass(), subscriber1); - eventService.publish(createEvent()); - - assertTrue(subscriber2.callTime.before(subscriber3.callTime)); - assertTrue(subscriber3.callTime.before(subscriber1.callTime)); - - List subscribers = eventService.getSubscribers(getEventClass()); - assertEquals(3, subscribers.size()); - for (int i = 0; i < subscribers.size(); i++) { - IEventSubscriber subscriber = (IEventSubscriber) subscribers.get(i); - eventService.unsubscribe(getEventClass(), subscriber); - } - eventService.subscribe(getEventClass(), (IEventSubscriber) subscribers.get(1)); - eventService.subscribe(getEventClass(), (IEventSubscriber) subscribers.get(0)); - eventService.subscribe(getEventClass(), (IEventSubscriber) subscribers.get(2)); - eventService.publish(createEvent()); - assertTrue(subscriber3.callTime.before(subscriber2.callTime)); - assertTrue(subscriber2.callTime.before(subscriber1.callTime)); - } - - public void testSubscribeWeakly() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = eventService.subscribe(getEventClass(), subscriber); - assertTrue("testSubscribeWeakly(new subscriber)", actualReturn); - - actualReturn = eventService.subscribe(getEventClass(), subscriber); - assertFalse("testSubscribe(duplicate subscriber)", actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - subscriber = null; - System.gc(); - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - try { - actualReturn = eventService.subscribeStrongly((Class) null, getEventSubscriber()); - fail("subscribeStrongly(null, x) should have thrown exception"); - } catch (Exception e) { - } - - try { - actualReturn = eventService.subscribeStrongly(getEventClass(), null); - fail("subscribeStrongly(x, null) should have thrown exception"); - } catch (Exception e) { - } - } - - public void testSubscribeStrongly() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = eventService.subscribeStrongly(getEventClass(), subscriber); - assertTrue("testSubscribeWeakly(new subscriber)", actualReturn); - - actualReturn = eventService.subscribeStrongly(getEventClass(), subscriber); - assertFalse("testSubscribe(duplicate subscriber)", actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - subscriber = null; - System.gc(); - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - try { - actualReturn = eventService.subscribeStrongly((Class) null, getEventSubscriber()); - fail("subscribeStrongly(null, x) should have thrown exception"); - } catch (Exception e) { - } - - try { - actualReturn = eventService.subscribeStrongly(getEventClass(), null); - fail("subscribeStrongly(x, null) should have thrown exception"); - } catch (Exception e) { - } - } - - - public void testIllegalArgs() { - try { - EventBus.subscribeVetoListenerStrongly((Class) null, new VetoEventListenerForTest()); - fail(); - } catch (Throwable t) { - } - try { - EventBus.subscribeVetoListenerStrongly((String) null, new VetoTopicEventListenerForTest()); - fail(); - } catch (Throwable t) { - } - try { - EventBus.subscribeVetoListenerStrongly("foo", null); - fail(); - } catch (Throwable t) { - } - try { - EventBus.subscribeVetoListenerStrongly(getEventClass(), null); - fail(); - } catch (Throwable t) { - } - - - try { - EventBus.unsubscribeVetoListener((Class) null, new VetoEventListenerForTest()); - fail(); - } catch (Throwable t) { - } - try { - EventBus.unsubscribeVetoListener((String) null, new VetoTopicEventListenerForTest()); - fail(); - } catch (Throwable t) { - } - try { - EventBus.unsubscribeVetoListener("foo", null); - fail(); - } catch (Throwable t) { - } - try { - EventBus.unsubscribeVetoListener(getEventClass(), null); - fail(); - } catch (Throwable t) { - } - - } - - public void testVeto() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = eventService.subscribe(getEventClass(), subscriber); - - VetoEventListener vetoListener = new VetoEventListenerForTest(); - actualReturn = eventService.subscribeVetoListener(getEventClass(), vetoListener); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - eventService.unsubscribeVetoListener(getEventClass(), vetoListener); - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - - } - - public void testVetoException() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = eventService.subscribe(getEventClass(), subscriber); - - VetoEventListener vetoListener = new VetoEventListenerForTest(true); - actualReturn = eventService.subscribeVetoListenerStrongly(getEventClass(), vetoListener); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - eventService.unsubscribeVetoListener(getEventClass(), vetoListener); - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 2, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - - } - - public void testVetoTopic() { - boolean actualReturn; - IEventTopicSubscriber subscriber = createEventTopicSubscriber(false); - - actualReturn = eventService.subscribe("FooTopic", subscriber); - - VetoTopicEventListener vetoListener = new VetoTopicEventListener() { - public boolean shouldVeto(String topic, Object data) { - return true; - } - }; - actualReturn = eventService.subscribeVetoListenerStrongly("FooTopic", vetoListener); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish("FooTopic", "Bar"); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - eventService.unsubscribeVetoListener("FooTopic", vetoListener); - eventService.publish("FooTopic", "Bar"); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - - public void testVetoWeak() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = eventService.subscribe(getEventClass(), subscriber); - - VetoEventListener vetoListener = new VetoEventListener() { - public boolean shouldVeto(Object evt) { - return true; - } - }; - actualReturn = eventService.subscribeVetoListener(getEventClass(), vetoListener); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - vetoListener = null; - System.gc(); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - public void testVetoTopicWeak() { - boolean actualReturn; - IEventTopicSubscriber subscriber = createEventTopicSubscriber(false); - - actualReturn = eventService.subscribe("FooTopic", subscriber); - - VetoTopicEventListener vetoListener = new VetoTopicEventListener() { - public boolean shouldVeto(String topic, Object data) { - return true; - } - }; - actualReturn = eventService.subscribeVetoListener("FooTopic", vetoListener); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish("FooTopic", createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - vetoListener = null; - System.gc(); - eventService.publish("FooTopic", createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - - public void testUnsubscribe() { - eventService.subscribe(getEventClass(), getEventSubscriber(false)); - - boolean actualReturn; - - try { - actualReturn = eventService.unsubscribe((Class) null, getEventSubscriber()); - fail("unsubscribe(null, x) should have thrown exception"); - } catch (Exception e) { - } - - try { - actualReturn = eventService.unsubscribe(getEventClass(), null); - fail("unsubscribe(x, null) should have thrown exception"); - } catch (Exception e) { - } - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - actualReturn = eventService.unsubscribe(getEventClass(), getEventSubscriber()); - assertTrue("return value", actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - public void testUnsubscribeTopic() { - IEventTopicSubscriber eventTopicSubscriber = createEventTopicSubscriber(false); - eventService.subscribe("FooTopic", eventTopicSubscriber); - - boolean actualReturn; - - try { - actualReturn = eventService.unsubscribe((String) null, eventTopicSubscriber); - fail("unsubscribe(null, x) should have thrown exception"); - } catch (Exception e) { - } - - try { - actualReturn = eventService.unsubscribe("FooTopic", null); - fail("unsubscribe(x, null) should have thrown exception"); - } catch (Exception e) { - } - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish("FooTopic", "Foo"); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - actualReturn = eventService.unsubscribe("FooTopic", eventTopicSubscriber); - assertTrue("return value", actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish("FooTopic", "Foo"); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - /** - * Test that the publish method works and that exceptions thrown in event subscribers don't halt publishing. In the - * test 2 subscribers are good and 2 subscribers throw exceptions. - */ - public void testPublish() { - try { - eventService.publish(null); - fail("publish(null) should have thrown exception"); - } catch (Exception e) { - } - - try { - eventService.publish((String) null, createEvent()); - fail("publish(null, x) should have thrown exception"); - } catch (Exception e) { - } - - eventService.publish(createEvent()); - assertEquals("testPublish(completed)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - eventService.publish("Foo", "Bar"); - assertEquals("testPublish(completed)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - eventService.subscribe(getEventClass(), createEventSubscriber(true)); - eventService.subscribe(getEventClass(), createEventSubscriber(false)); - eventService.subscribe(getEventClass(), createEventSubscriber(true)); - eventService.subscribe(getEventClass(), createEventSubscriber(false)); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - eventService.publish(createEvent()); - - //The test passes if 2 subscribers completed and 2 subscribers threw exception. - assertEquals("testPublish(completed)", 4, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 2, testCounter.subscribeExceptionCount); - - EventBus.subscribe(ObjectEvent.class, createEventSubscriber(false)); - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - ObjectEvent evt = new ObjectEvent("Foo", "Bar"); - assertEquals(evt.getEventObject(), "Bar"); - EventBus.publish(evt); - //Since we are using hte event bus from a non-awt thread, stay alive for a sec - //to give time for the EDT to start and post the message - try { - Thread.sleep(500); - } catch (InterruptedException e) { - } - assertEquals("testPublish(completed)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - public void testTimeHandling() { - eventService.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); - final Boolean[] wasCalled = new Boolean[1]; - eventService.subscribe(SubscriberTimingEvent.class, new IEventSubscriber() { - public void onEvent(Object evt) { - wasCalled[0] = Boolean.TRUE; - } - }); - eventService.publish(createEvent()); - assertTrue(wasCalled[0] == null); - eventService = new ThreadSafeEventService(new Long(100), true); - eventService.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); - final Boolean[] wasCalled2 = new Boolean[1]; - eventService.subscribe(SubscriberTimingEvent.class, new IEventSubscriber() { - public void onEvent(Object evt) { - wasCalled2[0] = Boolean.TRUE; - timing = (SubscriberTimingEvent) evt; - } - }); - eventService.publish(createEvent()); - assertTrue(wasCalled2[0] == Boolean.TRUE); - assertNotNull(timing.getSource()); - assertNotNull(timing.getEnd()); - assertNotNull(timing.getEvent()); - assertNotNull(timing.getSubscriber()); - assertNotNull(timing.getStart()); - assertNotNull(timing.getTimeLimitMilliseconds()); - assertFalse(timing.isEventHandlingExceeded()); - assertFalse(timing.isVetoExceeded()); - assertNull(timing.getVetoEventListener()); - } - - public void testEventLocator() { - EventServiceLocatorTestCase.clearEventServiceLocator(); - EventService es = EventServiceLocator.getSwingEventService(); - assertTrue(es instanceof SwingEventService); - es = new ThreadSafeEventService(null, false); - try { - EventServiceLocator.setEventService("foo", es); - } catch (EventServiceExistsException e) { - fail("First set should succeed."); - } - EventService es2 = EventServiceLocator.getEventService("foo"); - assertTrue(es2 == es); - try { - es = new ThreadSafeEventService(null, false); - EventServiceLocator.setEventService("foo", es); - fail("Second set should fail."); - } catch (EventServiceExistsException e) { - } - es2 = EventServiceLocator.getEventService("foo"); - assertFalse(es2 == es); - try { - EventServiceLocator.setEventService("foo", null); - } catch (EventServiceExistsException e) { - fail("Null should succeed."); - } - es2 = EventServiceLocator.getEventService("foo"); - assertNull(es2); - assertEquals(EventServiceLocator.getSwingEventService(), EventBus.getGlobalEventService()); - } - - /** - * Test for ISSUE #1: If a class implements both subscriber interfaces I've seen a topic 'event' be published from a - * publish method with the correct (topic) signature, yet be subscribed at the wrong subscriber method (the one with - * the signature for real event classes, not topics - */ - public void testSimultaneousTopicAndClass() { - DoubleSubscriber doubleSubscriber = new DoubleSubscriber(); - eventService.subscribe(org.scijava.event.bushe.ObjectEvent.class, doubleSubscriber); - eventService.subscribe("org.scijava.event.bushe.ObjectEvent.class", doubleSubscriber); - ObjectEvent evt = new ObjectEvent("Foo", "Bar"); - assertEquals(evt.getEventObject(), "Bar"); - eventService.publish(evt); - assertEquals(1, doubleSubscriber.timesEventCalled); - assertEquals(0, doubleSubscriber.timesTopicCalled); - assertEquals(evt, doubleSubscriber.lastEvent); - assertEquals(null, doubleSubscriber.lastEventString); - eventService.publish("org.scijava.event.bushe.ObjectEvent.class", "Bar"); - assertEquals(1, doubleSubscriber.timesEventCalled); - assertEquals(1, doubleSubscriber.timesTopicCalled); - assertEquals(evt, doubleSubscriber.lastEvent); - assertEquals("org.scijava.event.bushe.ObjectEvent.class", doubleSubscriber.lastEventString); - } - - public void testRegex() { - DoubleSubscriber doubleSubscriber = new DoubleSubscriber(); - Pattern pat = Pattern.compile("Foo[1-5]"); - eventService.subscribe(pat, doubleSubscriber); - List subscribers = eventService.getSubscribersToPattern(pat); - assertNotNull(subscribers); - assertEquals(1, subscribers.size()); - subscribers = eventService.getSubscribersByPattern("Foo1"); - assertNotNull(subscribers); - assertEquals(1, subscribers.size()); - subscribers = eventService.getSubscribers("Foo1"); - assertNotNull(subscribers); - assertEquals(1, subscribers.size()); - - eventService.publish("Foo1", "Bar"); - assertEquals(0, doubleSubscriber.timesEventCalled); - assertEquals(1, doubleSubscriber.timesTopicCalled); - assertEquals(null, doubleSubscriber.lastEvent); - assertEquals("Foo1", doubleSubscriber.lastEventString); - eventService.publish("Foo2", "Bar"); - assertEquals(0, doubleSubscriber.timesEventCalled); - assertEquals(2, doubleSubscriber.timesTopicCalled); - assertEquals(null, doubleSubscriber.lastEvent); - assertEquals("Foo2", doubleSubscriber.lastEventString); - } - - public void testTypeSubscription() { - DoubleSubscriber subscriber = new DoubleSubscriber(); - - eventService.subscribe(TopLevelEvent.class, subscriber); - List subscribers = eventService.getSubscribersToClass(TopLevelEvent.class); - assertNotNull(subscribers); - assertEquals(1, subscribers.size()); - subscribers = eventService.getSubscribersToClass(DerivedEvent.class); - assertNotNull(subscribers); - assertEquals(1, subscribers.size()); - subscribers = eventService.getSubscribers(DerivedEvent.class); - assertNotNull(subscribers); - assertEquals(1, subscribers.size()); - subscribers = eventService.getSubscribers(TopLevelEvent.class); - assertNotNull(subscribers); - assertEquals(1, subscribers.size()); - - DerivedEvent derivedEvent = new DerivedEvent(this); - eventService.publish(derivedEvent); - assertEquals(1, subscriber.timesEventCalled); - assertEquals(0, subscriber.timesTopicCalled); - assertEquals(derivedEvent, subscriber.lastEvent); - assertEquals(null, subscriber.lastEventString); - TopLevelEvent topLevelEvent = new TopLevelEvent(this); - eventService.publish(topLevelEvent); - assertEquals(2, subscriber.timesEventCalled); - assertEquals(0, subscriber.timesTopicCalled); - assertEquals(topLevelEvent, subscriber.lastEvent); - assertEquals(null, subscriber.lastEventString); - } - - //Parameterized Type - public void testParameterizedEvent() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException, InstantiationException { - final int[] timesCalled = new int[1]; - ParameterizedEvent stringRequestEvent = new ParameterizedEvent(); - ParameterizedEvent integerRequestEvent = new ParameterizedEvent(); - - TypeReference> stringTypeReference = new TypeReference>(){}; - TypeReference> integerTypeReference = new TypeReference>(){}; -// ParameterizedEvent dre = stringTypeReference.newInstance(); -// System.out.println("dre.getClass()"+dre.getClass()); -// System.out.println("stringTypeReference"+ stringTypeReference); -// System.out.println("stringTypeReference.getType()"+ stringTypeReference.getType()); - -// You can't simply do this, the TypeReference's generic type is important here -// Type superclass = integerRequestEvent.getClass().getGenericSuperclass(); -// Type type = ((ParameterizedType) superclass).getActualTypeArguments()[0]; -// System.out.println("superclass="+superclass); -// System.out.println("type="+type); - - eventService.subscribe(stringTypeReference.getType(), new IEventSubscriber() { - public void onEvent(Object event) { - timesCalled[0]++; - } - }); - eventService.publish(stringTypeReference.getType(), stringRequestEvent); - eventService.publish(integerTypeReference.getType(), integerRequestEvent); - assertEquals(1, timesCalled[0]); - } - - public void testParameterizedEventMultiParams() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException, InstantiationException { - final int[] timesCalled = new int[1]; - DoublyParameterizedEvent stringRequestEvent = new DoublyParameterizedEvent(); - DoublyParameterizedEvent integerRequestEvent = new DoublyParameterizedEvent(); - DoublyParameterizedEvent switchRequestEvent = new DoublyParameterizedEvent(); - - TypeReference> stringTypeReference = new TypeReference>(){}; - TypeReference> integerTypeReference = new TypeReference>(){}; - TypeReference> switchTypeReference = new TypeReference>(){}; - - eventService.subscribe(stringTypeReference.getType(), new IEventSubscriber() { - public void onEvent(Object event) { - timesCalled[0]++; - } - }); - eventService.subscribe(integerTypeReference.getType(), new IEventSubscriber() { - public void onEvent(Object event) { - timesCalled[0]++; - } - }); - eventService.publish(stringTypeReference.getType(), stringRequestEvent); - assertEquals(1, timesCalled[0]); - eventService.publish(integerTypeReference.getType(), integerRequestEvent); - assertEquals(2, timesCalled[0]); - eventService.publish(switchTypeReference.getType(), switchRequestEvent); - assertEquals(2, timesCalled[0]); - } - - public void testWildcardSubscription() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException, InstantiationException { - final int[] timesCalled = new int[1]; - ParameterizedEvent jComponentRequestEvent = new ParameterizedEvent(); - - TypeReference> containerWildcardTypeRef = new TypeReference>(){}; - - eventService.subscribe(containerWildcardTypeRef.getType(), new IEventSubscriber() { - public void onEvent(Object event) { - timesCalled[0]++; - } - }); - TypeReference> jComponentTypeRef = new TypeReference>(){}; - - eventService.publish(jComponentTypeRef.getType(), jComponentRequestEvent); - assertEquals(1, timesCalled[0]); - - //publishing a Component should not hit the wildcard since it doesn't extend Component - TypeReference> componentTypeRef = new TypeReference>(){}; - ParameterizedEvent componentRequestEvent = new ParameterizedEvent(); - eventService.publish(componentTypeRef.getType(), componentRequestEvent); - assertEquals(1, timesCalled[0]); - - //publish wildcards is a not yet supported - try { - eventService.publish(containerWildcardTypeRef.getType(), jComponentRequestEvent); - fail(); - } catch (IllegalArgumentException ex) { - } - assertEquals(1, timesCalled[0]); - - //Test super wildcard, should be opposite of above - eventService.clearAllSubscribers(); - TypeReference> containerSuperWildcardTypeRef = new TypeReference>(){}; - eventService.subscribe(containerSuperWildcardTypeRef.getType(), new IEventSubscriber() { - public void onEvent(Object event) { - timesCalled[0]++; - } - }); - eventService.publish(jComponentTypeRef.getType(), jComponentRequestEvent); - assertEquals(1, timesCalled[0]); - eventService.publish(componentTypeRef.getType(), componentRequestEvent); - assertEquals(2, timesCalled[0]); - - //Test exact matches - } - - public class ParameterizedEvent { - private Collection data; - public Collection getData() { - return data; - } - } - - public class DoublyParameterizedEvent { - private Map data; - public Map getData() { - return data; - } - } - - class DoubleSubscriber implements IEventTopicSubscriber, IEventSubscriber { - public int timesTopicCalled = 0; - public int timesEventCalled = 0; - public String lastEventString; - public Object lastEvent; - - public void onEvent(String topic, Object data) { - timesTopicCalled++; - lastEventString = topic; - } - - public void onEvent(Object evt) { - timesEventCalled++; - lastEvent = evt; - } - } - - class TopLevelEvent extends AbstractEventServiceEvent { - public TopLevelEvent(Object source) { - super(source); - } - } - - class DerivedEvent extends TopLevelEvent { - public DerivedEvent(Object source) { - super(source); - } - } - - - /** - * Test match for generic type's of generic types - */ - public void testGenericGeneric() { - final int[] timesCalled = new int[1]; - DataRequestEvent> request = new DataRequestEvent>(); - Type type = new TypeReference>>() {}.getType(); - eventService.subscribe(type, new IEventSubscriber() { - public void onEvent(Object event) { - timesCalled[0]++; - } - }); - eventService.publish(type, request); - assertEquals(1, timesCalled[0]); - DataRequestEvent> stringRequest = new DataRequestEvent>(); - Type stringType = new TypeReference>>() {}.getType(); - eventService.publish(stringType , stringRequest); - assertEquals(1, timesCalled[0]); - } - - public void testTopicsCache() { - Object a1 = new Object(); - //All of the above should be checked with topics. - //Topics should test that exact matches are preferred over pattern matches - //Test that a default setting does not cache - EventService es = new ThreadSafeEventService(null); - es.publish("IceCream.Vanilla", a1); - List events = es.getCachedTopicData("IceCream.Vanilla"); - assertNull(events); - Object lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertNull(lastEventObj); - assertEquals(0, es.getCacheSizeForTopic("IceCream.Vanilla")); - assertEquals(0, es.getDefaultCacheSizePerClassOrTopic()); - //Test that changing the default to 1 caches 1 - es.setDefaultCacheSizePerClassOrTopic(1); - assertEquals(1, es.getDefaultCacheSizePerClassOrTopic()); - Object publishedEventObj = new Object(); - es.publish("IceCream.Vanilla", publishedEventObj); - events = es.getCachedTopicData("IceCream.Vanilla"); - assertNotNull(events); - assertEquals(1, events.size()); - lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertTrue(lastEventObj == publishedEventObj); - assertEquals(1, es.getCacheSizeForTopic("IceCream.Vanilla")); - //subscribe and see if it still works and that the new event is cached - IEventTopicSubscriber sub = new IEventTopicSubscriber() { - public void onEvent(String topic, Object data) { - System.out.println("Barrrr"); - } - }; - es.subscribe("IceCream.Vanilla", sub); - publishedEventObj = new Object(); - es.publish("IceCream.Vanilla", publishedEventObj); - events = es.getCachedTopicData("IceCream.Vanilla"); - assertNotNull(events); - assertEquals(1, events.size()); - lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertTrue(lastEventObj == publishedEventObj); - assertEquals(1, es.getCacheSizeForTopic("IceCream.Vanilla")); - - //Test that changing the default to 5 caches 5 - es.setDefaultCacheSizePerClassOrTopic(5); - assertEquals(5, es.getDefaultCacheSizePerClassOrTopic()); - Object publishedEventObj2 = new Object(); - Object publishedEventObj3 = new Object(); - Object publishedEventObj4 = new Object(); - Object publishedEventObj5 = new Object(); - es.publish("IceCream.Vanilla", publishedEventObj2); - es.publish("IceCream.Vanilla", publishedEventObj3); - es.publish("IceCream.Vanilla", publishedEventObj4); - es.publish("IceCream.Vanilla", publishedEventObj5); - events = es.getCachedTopicData("IceCream.Vanilla"); - assertNotNull(events); - assertEquals(5, events.size()); - lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertTrue(lastEventObj == publishedEventObj5); - assertEquals(5, es.getCacheSizeForTopic("IceCream.Vanilla")); - Object publishedEventObj6 = new Object(); - es.publish("IceCream.Vanilla", publishedEventObj6); - assertEquals(5, events.size()); - lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertTrue(lastEventObj == publishedEventObj6); - assertEquals(5, es.getCacheSizeForTopic("IceCream.Vanilla")); - - //Test that setting a topic cache with 10 caches 10 for that topic, but the default for the others - es.setCacheSizeForTopic("IceCream.Vanilla", 10); - Object publishedEventObjB1 = new Object(); - Object publishedEventObjB2 = new Object(); - Object publishedEventObjB3 = new Object(); - Object publishedEventObjB4 = new Object(); - Object publishedEventObjB5 = new Object(); - Object publishedEventObjB6 = new Object(); - es.publish("IceCream.Vanilla", publishedEventObj6); - es.publish("IceCream.Vanilla", publishedEventObj6);//see if reuse is OK - es.publish("IceCream.Blueberry", publishedEventObjB1); - es.publish("IceCream.Blueberry", publishedEventObjB2); - es.publish("IceCream.Blueberry", publishedEventObjB3); - es.publish("IceCream.Blueberry", publishedEventObjB4); - es.publish("IceCream.Blueberry", publishedEventObjB5); - es.publish("IceCream.Blueberry", publishedEventObjB6); - es.publish("IceCream.Vanilla", publishedEventObj6); - es.publish("IceCream.Vanilla", publishedEventObj6); - Object publishedEvent10 = new Object(); - es.publish("IceCream.Vanilla", publishedEvent10); - lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertTrue(lastEventObj == publishedEvent10); - events = es.getCachedTopicData("IceCream.Vanilla"); - assertNotNull(events); - assertEquals(10, events.size()); - assertEquals(10, es.getCacheSizeForTopic("IceCream.Vanilla")); - assertTrue(publishedEvent10 == events.get(0)); - assertTrue(publishedEventObj6 == events.get(1)); - assertTrue(publishedEventObj6 == events.get(2)); - assertTrue(publishedEventObj6 == events.get(3)); - assertTrue(publishedEventObj6 == events.get(4)); - assertTrue(publishedEventObj6 == events.get(5)); - assertTrue(publishedEventObj5 == events.get(6)); - assertTrue(publishedEventObj4 == events.get(7)); - assertTrue(publishedEventObj3 == events.get(8)); - assertTrue(publishedEventObj2 == events.get(9)); - lastEventObj = es.getLastTopicData("IceCream.Blueberry"); - assertTrue(lastEventObj == publishedEventObjB6); - events = es.getCachedTopicData("IceCream.Blueberry"); - assertNotNull(events); - assertEquals(5, events.size()); - assertEquals(5, es.getCacheSizeForTopic("IceCream.Blueberry")); - assertTrue(publishedEventObjB6 == events.get(0)); - assertTrue(publishedEventObjB5 == events.get(1)); - assertTrue(publishedEventObjB4 == events.get(2)); - assertTrue(publishedEventObjB3 == events.get(3)); - assertTrue(publishedEventObjB2 == events.get(4)); - //this makes the cache resize to a smaller amount - es.setCacheSizeForTopic("IceCream.Vanilla", 1); - es.publish("IceCream.Vanilla", publishedEventObj4); - lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertTrue(lastEventObj == publishedEventObj4); - events = es.getCachedTopicData("IceCream.Vanilla"); - assertNotNull(events); - assertEquals(1, events.size()); - assertEquals(1, es.getCacheSizeForTopic("IceCream.Vanilla")); - es.publish("IceCream.Blueberry", publishedEventObjB4); - lastEventObj = es.getLastTopicData("IceCream.Blueberry"); - assertTrue(lastEventObj == publishedEventObjB4); - events = es.getCachedTopicData("IceCream.Blueberry"); - assertNotNull(events); - assertEquals(5, events.size()); - assertEquals(5, es.getCacheSizeForTopic("IceCream.Blueberry")); - assertTrue(publishedEventObjB4 == events.get(0)); - assertTrue(publishedEventObjB6 == events.get(1)); - assertTrue(publishedEventObjB5 == events.get(2)); - assertTrue(publishedEventObjB4 == events.get(3)); - assertTrue(publishedEventObjB3 == events.get(4)); - - //Test pattern cache size works, but does not override a specific topic setting - Pattern pattern = Pattern.compile("IceCream.*"); - es.setDefaultCacheSizePerClassOrTopic(5); - es.setCacheSizeForTopic(pattern, 2); - es.setCacheSizeForTopic("IceCream.Vanilla", 3); - Object publishedEventObjX1 = new Object(); - Object publishedEventObjX2 = new Object(); - Object publishedEventObjX3 = new Object(); - Object publishedEventObjX4 = new Object(); - Object publishedEventObjX5 = new Object(); - Object publishedEventObjX6 = new Object(); - Object publishedEventObjC1 = new Object(); - Object publishedEventObjC2 = new Object(); - Object publishedEventObjC3 = new Object(); - Object publishedEventObjC4 = new Object(); - es.publish("X", publishedEventObjX1); - es.publish("IceCream.Vanilla", publishedEventObj6); - es.publish("IceCream.Chocolate", publishedEventObjC1); - es.publish("X", publishedEventObjX2);//see if reuse is OK - es.publish("X", publishedEventObjX3); - es.publish("IceCream.Chocolate", publishedEventObjC2); - es.publish("X", publishedEventObjX4); - es.publish("IceCream.Vanilla", publishedEventObj4); - es.publish("IceCream.Vanilla", publishedEventObj5); - es.publish("IceCream.Vanilla", publishedEventObj6); - es.publish("X", publishedEventObjX5); - es.publish("IceCream.Chocolate", publishedEventObjC3); - es.publish("X", publishedEventObjX6); - es.publish("IceCream.Chocolate", publishedEventObjC4); - - lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertTrue(lastEventObj == publishedEventObj6); - events = es.getCachedTopicData("IceCream.Vanilla"); - assertNotNull(events); - assertEquals(3, events.size()); - assertEquals(3, es.getCacheSizeForTopic("IceCream.Vanilla")); - lastEventObj = es.getLastTopicData("X"); - assertTrue(lastEventObj == publishedEventObjX6); - events = es.getCachedTopicData("X"); - assertNotNull(events); - assertEquals(5, events.size()); - assertEquals(5, es.getCacheSizeForEventClass(EventX.class)); - assertTrue(publishedEventObjX6 == events.get(0)); - assertTrue(publishedEventObjX5 == events.get(1)); - assertTrue(publishedEventObjX4 == events.get(2)); - assertTrue(publishedEventObjX3 == events.get(3)); - assertTrue(publishedEventObjX2 == events.get(4)); - events = es.getCachedTopicData("IceCream.Chocolate"); - assertNotNull(events); - assertEquals(2, events.size()); - assertEquals(2, es.getCacheSizeForTopic("IceCream.Chocolate")); - assertTrue(publishedEventObjC4 == events.get(0)); - assertTrue(publishedEventObjC3 == events.get(1)); - - es.clearCache("IceCream.Blueberry"); - events = es.getCachedTopicData("IceCream.Blueberry"); - assertNull(events); - lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertNotNull(lastEventObj); - events = es.getCachedTopicData("IceCream.Vanilla"); - assertNotNull(events); - assertEquals(3, events.size()); - lastEventObj = es.getLastTopicData("IceCream.Chocolate"); - assertNotNull(lastEventObj); - events = es.getCachedTopicData("IceCream.Chocolate"); - assertNotNull(events); - assertEquals(2, events.size()); - lastEventObj = es.getLastTopicData("X"); - assertNotNull(lastEventObj); - events = es.getCachedTopicData("X"); - assertNotNull(events); - assertEquals(5, events.size()); - es.clearCache(pattern); - events = es.getCachedTopicData("IceCream.Vanilla"); - assertNull(events); - lastEventObj = es.getLastTopicData("IceCream.Chocolate"); - assertNull(lastEventObj); - lastEventObj = es.getLastTopicData("X"); - assertNotNull(lastEventObj); - events = es.getCachedTopicData("X"); - assertNotNull(events); - assertEquals(5, events.size()); - - es.publish("X", publishedEventObjX6); - es.publish("IceCream.Blueberry", publishedEventObjB4); - es.publish("IceCream.Vanilla", publishedEvent10); - es.clearCache(); - lastEventObj = es.getLastTopicData("IceCream.Vanilla"); - assertNull(lastEventObj); - lastEventObj = es.getLastTopicData("IceCream.Blueberry"); - assertNull(lastEventObj); - lastEventObj = es.getLastTopicData("IceCream.Chocolate"); - assertNull(lastEventObj); - lastEventObj = es.getLastTopicData("X"); - assertNull(lastEventObj); - } - - - public void testEventsCache() { - //Test that a default setting does not cache - EventService es = new ThreadSafeEventService(null); - es.publish(new EventA()); - List aEvents = es.getCachedEvents(EventA.class); - assertNull(aEvents); - EventA lastAEvent = es.getLastEvent(EventA.class); - assertNull(lastAEvent); - assertEquals(0, es.getCacheSizeForEventClass(EventA.class)); - assertEquals(0, es.getDefaultCacheSizePerClassOrTopic()); - //Test that changing the default to 1 caches 1 - es.setDefaultCacheSizePerClassOrTopic(1); - assertEquals(1, es.getDefaultCacheSizePerClassOrTopic()); - EventA publishedEvent = new EventA(); - es.publish(publishedEvent); - aEvents = es.getCachedEvents(EventA.class); - assertNotNull(aEvents); - assertEquals(1, aEvents.size()); - lastAEvent = es.getLastEvent(EventA.class); - assertTrue(lastAEvent == publishedEvent); - assertEquals(1, es.getCacheSizeForEventClass(EventA.class)); - //subscribe and see if it still works and that the new event is cached - IEventSubscriber sub = new IEventSubscriber() { - public void onEvent(Object evt) { - System.out.println("Fooo"); - } - }; - es.subscribe(EventA.class, sub); - publishedEvent = new EventA(); - es.publish(publishedEvent); - aEvents = es.getCachedEvents(EventA.class); - assertNotNull(aEvents); - assertEquals(1, aEvents.size()); - lastAEvent = es.getLastEvent(EventA.class); - assertTrue(lastAEvent == publishedEvent); - assertEquals(1, es.getCacheSizeForEventClass(EventA.class)); - - //Test that changing the default to 5 caches 5 - es.setDefaultCacheSizePerClassOrTopic(5); - assertEquals(5, es.getDefaultCacheSizePerClassOrTopic()); - EventA publishedEvent2 = new EventA(); - EventA publishedEvent3 = new EventA(); - EventA publishedEvent4 = new EventA(); - EventA publishedEvent5 = new EventA(); - es.publish(publishedEvent2); - es.publish(publishedEvent3); - es.publish(publishedEvent4); - es.publish(publishedEvent5); - aEvents = es.getCachedEvents(EventA.class); - assertNotNull(aEvents); - assertEquals(5, aEvents.size()); - lastAEvent = es.getLastEvent(EventA.class); - assertTrue(lastAEvent == publishedEvent5); - assertEquals(5, es.getCacheSizeForEventClass(EventA.class)); - EventA publishedEvent6 = new EventA(); - es.publish(publishedEvent6); - assertEquals(5, aEvents.size()); - lastAEvent = es.getLastEvent(EventA.class); - assertTrue(lastAEvent == publishedEvent6); - assertEquals(5, es.getCacheSizeForEventClass(EventA.class)); - - //Test that overriding a single event class with 10 caches 10 for that event, but the default for the others - es.setCacheSizeForEventClass(EventA.class, 10); - EventB publishedEventB1 = new EventB(); - EventB publishedEventB2 = new EventB(); - EventB publishedEventB3 = new EventB(); - EventB publishedEventB4 = new EventB(); - EventB publishedEventB5 = new EventB(); - EventB publishedEventB6 = new EventB(); - es.publish(publishedEvent6); - es.publish(publishedEvent6);//see if reuse is OK - es.publish(publishedEventB1); - es.publish(publishedEventB2); - es.publish(publishedEventB3); - es.publish(publishedEventB4); - es.publish(publishedEventB5); - es.publish(publishedEventB6); - es.publish(publishedEvent6); - es.publish(publishedEvent6); - EventA publishedEvent10 = new EventA(); - es.publish(publishedEvent10); - lastAEvent = es.getLastEvent(EventA.class); - assertTrue(lastAEvent == publishedEvent10); - aEvents = es.getCachedEvents(EventA.class); - assertNotNull(aEvents); - assertEquals(10, aEvents.size()); - assertEquals(10, es.getCacheSizeForEventClass(EventA.class)); - assertTrue(publishedEvent10 == aEvents.get(0)); - assertTrue(publishedEvent6 == aEvents.get(1)); - assertTrue(publishedEvent6 == aEvents.get(2)); - assertTrue(publishedEvent6 == aEvents.get(3)); - assertTrue(publishedEvent6 == aEvents.get(4)); - assertTrue(publishedEvent6 == aEvents.get(5)); - assertTrue(publishedEvent5 == aEvents.get(6)); - assertTrue(publishedEvent4 == aEvents.get(7)); - assertTrue(publishedEvent3 == aEvents.get(8)); - assertTrue(publishedEvent2 == aEvents.get(9)); - EventB lastBEvent = es.getLastEvent(EventB.class); - assertTrue(lastBEvent == publishedEventB6); - List bEvents = es.getCachedEvents(EventB.class); - assertNotNull(bEvents); - assertEquals(5, bEvents.size()); - assertEquals(5, es.getCacheSizeForEventClass(EventB.class)); - assertTrue(publishedEventB6 == bEvents.get(0)); - assertTrue(publishedEventB5 == bEvents.get(1)); - assertTrue(publishedEventB4 == bEvents.get(2)); - assertTrue(publishedEventB3 == bEvents.get(3)); - assertTrue(publishedEventB2 == bEvents.get(4)); - //this makes the cache resize smaller - es.setCacheSizeForEventClass(EventA.class, 1); - es.publish(publishedEvent4); - lastAEvent = es.getLastEvent(EventA.class); - assertTrue(lastAEvent == publishedEvent4); - aEvents = es.getCachedEvents(EventA.class); - assertNotNull(aEvents); - assertEquals(1, aEvents.size()); - assertEquals(1, es.getCacheSizeForEventClass(EventA.class)); - es.publish(publishedEventB4); - lastBEvent = es.getLastEvent(EventB.class); - assertTrue(lastBEvent == publishedEventB4); - bEvents = es.getCachedEvents(EventB.class); - assertNotNull(bEvents); - assertEquals(5, bEvents.size()); - assertEquals(5, es.getCacheSizeForEventClass(EventB.class)); - assertTrue(publishedEventB4 == bEvents.get(0)); - assertTrue(publishedEventB6 == bEvents.get(1)); - assertTrue(publishedEventB5 == bEvents.get(2)); - assertTrue(publishedEventB4 == bEvents.get(3)); - assertTrue(publishedEventB3 == bEvents.get(4)); - - //Test that overriding a subclass event class with 2 changes and a derived class with 5 ... - //caches 5 for the derived class - //caches 2 for the subclass - //caches 2 for another derived class - // and that interfaces only take effect if the cache size of a class or it's superclasses has been set. - es.setCacheSizeForEventClass(EventA.class, 2); - es.setCacheSizeForEventClass(EventX.class, 5); - es.setCacheSizeForEventClass(Serializable.class, 3); - EventX publishedEventX1 = new EventX(); - EventX publishedEventX2 = new EventX(); - EventX publishedEventX3 = new EventX(); - EventX publishedEventX4 = new EventX(); - EventX publishedEventX5 = new EventX(); - EventX publishedEventX6 = new EventX(); - EventC publishedEventC1 = new EventC(); - EventC publishedEventC2 = new EventC(); - EventC publishedEventC3 = new EventC(); - EventC publishedEventC4 = new EventC(); - es.publish(publishedEventX1); - es.publish(publishedEvent6); - es.publish(publishedEventC1); - es.publish(publishedEventX2);//see if reuse is OK - es.publish(publishedEventX3); - es.publish(publishedEventC2); - es.publish(publishedEventX4); - es.publish(publishedEvent4); - es.publish(publishedEventX5); - es.publish(publishedEventC3); - es.publish(publishedEventX6); - es.publish(publishedEventC4); - - lastAEvent = es.getLastEvent(EventA.class); - assertTrue(lastAEvent == publishedEvent4); - aEvents = es.getCachedEvents(EventA.class); - assertNotNull(aEvents); - assertEquals(2, aEvents.size()); - assertEquals(2, es.getCacheSizeForEventClass(EventA.class)); - lastAEvent = es.getLastEvent(EventX.class); - assertTrue(lastAEvent == publishedEventX6); - List xEvents = es.getCachedEvents(EventX.class); - assertNotNull(xEvents); - assertEquals(5, xEvents.size()); - assertEquals(5, es.getCacheSizeForEventClass(EventX.class)); - assertTrue(publishedEventX6 == xEvents.get(0)); - assertTrue(publishedEventX5 == xEvents.get(1)); - assertTrue(publishedEventX4 == xEvents.get(2)); - assertTrue(publishedEventX3 == xEvents.get(3)); - assertTrue(publishedEventX2 == xEvents.get(4)); - try { - Serializable serializableEvent = es.getLastEvent(Serializable.class); - fail("Shouldn't be able to pass an interface."); - } catch (IllegalArgumentException ex) { - } - EventC lastCEvent = es.getLastEvent(EventC.class); - assertTrue(lastCEvent == publishedEventC4); - try { - List serializableEvents = es.getCachedEvents(Serializable.class); - fail("Shouldn't be able to pass an interface."); - } catch (IllegalArgumentException ex) { - } - List cEvents = es.getCachedEvents(EventC.class); - assertNotNull(cEvents); - assertEquals(3, cEvents.size()); - assertEquals(3, es.getCacheSizeForEventClass(EventC.class)); - - es.clearCache(EventB.class); - bEvents = es.getCachedEvents(EventB.class); - assertNull(bEvents); - lastAEvent = es.getLastEvent(EventA.class); - assertNotNull(lastAEvent); - aEvents = es.getCachedEvents(EventA.class); - assertNotNull(aEvents); - assertEquals(2, aEvents.size()); - EventX lastXEvent = es.getLastEvent(EventX.class); - assertNotNull(lastXEvent); - xEvents = es.getCachedEvents(EventX.class); - assertNotNull(xEvents); - assertEquals(5, xEvents.size()); - es.clearCache(EventA.class); - aEvents = es.getCachedEvents(EventA.class); - assertNull(aEvents); - lastXEvent = es.getLastEvent(EventX.class); - xEvents = es.getCachedEvents(EventX.class); - assertNull(lastXEvent); - assertNull(xEvents); - - es.publish(publishedEventX6); - es.publish(publishedEventB4); - es.publish(publishedEvent10); - es.clearCache(); - lastAEvent = es.getLastEvent(EventA.class); - assertNull(lastAEvent); - lastBEvent = es.getLastEvent(EventB.class); - assertNull(lastBEvent); - lastAEvent = es.getLastEvent(EventX.class); - assertNull(lastAEvent); - } - - - //Base - public static class EventA implements EventServiceEvent { - /** @return The issuer of the event. */ - public Object getSource() { - return null; - } - } - - //No relation - public static class EventB implements EventServiceEvent, Serializable { - /** @return The issuer of the event. */ - public Object getSource() { - return null; - } - } - - //No relation - public static class EventC implements EventServiceEvent, Serializable { - /** @return The issuer of the event. */ - public Object getSource() { - return null; - } - } - - //Derived 1 - public static class EventX extends EventA { - /** @return The issuer of the event. */ - public Object getSource() { - return null; - } - } - - //Derived 2 - public static class EventY extends EventA { - /** @return The issuer of the event. */ - public Object getSource() { - return null; - } - } - -} diff --git a/src/test/java/org/scijava/event/bushe/TestEventAction.java b/src/test/java/org/scijava/event/bushe/TestEventAction.java deleted file mode 100644 index 6c3eff80f..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventAction.java +++ /dev/null @@ -1,181 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import java.util.ArrayList; -import java.awt.event.ActionEvent; -import javax.swing.Action; -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JPanel; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestEventAction extends TestCase { - private ArrayList subscribedEvents; - private Object aSource = new Object(); - - private class MyEventServiceEvent extends AbstractEventServiceEvent { - private ActionEvent evt; - - public MyEventServiceEvent(Object source, ActionEvent evt) { - super(source); - this.evt = evt; - } - } - - public TestEventAction(String name) { - super(name); - } - - protected void setUp() throws Exception { - subscribedEvents = new ArrayList(); - System.clearProperty(EventServiceLocator.EVENT_BUS_CLASS); - System.clearProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS); - } - - public void testEventBusTopicAction() { - EventBusAction action = new EventBusAction(); - action.putValue(Action.ACTION_COMMAND_KEY, "FooAction"); - IEventTopicSubscriber subscriber = new IEventTopicSubscriber() { - public void onEvent(String topic, Object evt) { - subscribedEvents.add(evt); - } - }; - EventBus.subscribeStrongly("FooAction", subscriber); - action.actionPerformed(new ActionEvent(this, 0, "FooAction")); - try { - Thread.sleep(500);//Calling hte EDT, need to slow this thread - } catch (InterruptedException e) { - } - assertEquals(1, subscribedEvents.size()); - assertNotNull(action);//keeps it from being garbage collected - } - - public void testEventBusTopicActionEventServiceValueFirst() { - EventBusAction action = new EventBusAction(); - action.putValue(EventBusAction.EVENT_SERVICE_TOPIC_NAME, "FooAction"); - action.putValue(Action.ACTION_COMMAND_KEY, "BarAction"); - EventBus.subscribeStrongly("FooAction", new IEventTopicSubscriber() { - public void onEvent(String topic, Object evt) { - subscribedEvents.add(evt); - } - }); - action.actionPerformed(new ActionEvent(this, 0, "FooAction")); - try { - Thread.sleep(500);//Calling hte EDT, need to slow this thread - } catch (InterruptedException e) { - } - assertEquals(1, subscribedEvents.size()); - } - - public void testEventBusTopicActionIDValueFirst() { - EventBusAction action = new EventBusAction(); - action.putValue("ID", "FooAction"); - action.putValue(Action.ACTION_COMMAND_KEY, "BarAction"); - EventBus.subscribeStrongly("FooAction", new IEventTopicSubscriber() { - public void onEvent(String topic, Object evt) { - subscribedEvents.add(evt); - } - }); - action.actionPerformed(new ActionEvent(this, 0, "FooAction")); - try { - Thread.sleep(500);//Calling hte EDT, need to slow this thread - } catch (InterruptedException e) { - } - assertEquals(1, subscribedEvents.size()); - } - - public void testEventBusTopicActionNameWorks() { - EventBusAction action = new EventBusAction(); - action.putValue(Action.NAME, "FooAction"); - EventBus.subscribeStrongly("FooAction", new IEventTopicSubscriber() { - public void onEvent(String topic, Object evt) { - subscribedEvents.add(evt); - } - }); - action.actionPerformed(new ActionEvent(this, 0, "FooAction")); - try { - Thread.sleep(500);//Calling hte EDT, need to slow this thread - } catch (InterruptedException e) { - } - assertEquals(1, subscribedEvents.size()); - } - - public void testEventBusEventAction() { - EventBusAction action = new EventBusAction("FooAction", null) { - protected Object getEventServiceEvent(ActionEvent evt) { - return new MyEventServiceEvent(aSource, evt); - } - }; - EventBus.subscribe(MyEventServiceEvent.class, new IEventSubscriber() { - public void onEvent(Object evt) { - assertEquals(((EventServiceEvent) evt).getSource(), aSource); - subscribedEvents.add(evt); - } - }); - action.setPublishesOnTopic(false); - action.actionPerformed(new ActionEvent(this, 0, "FooAction")); - try { - Thread.sleep(500);//Calling the EDT, need to slow this thread - } catch (InterruptedException e) { - } - assertEquals(1, subscribedEvents.size()); - } - - - public void testContainerEventAction() { - JFrame frame = new JFrame(); - JPanel panel = new JPanel(); - frame.setContentPane(panel); - ContainerEventServiceAction action = new ContainerEventServiceAction("FooAction", null); - JButton button = new JButton(action); - panel.add(button); - EventService es = ContainerEventServiceFinder.getEventService(button); - assertTrue(EventBus.getGlobalEventService() != es); - assertEquals(0, subscribedEvents.size()); - es.subscribe("FooAction", new IEventTopicSubscriber() { - public void onEvent(String topic, Object evt) { - subscribedEvents.add(evt); - } - }); - button.doClick(); - try { - Thread.sleep(500);//Calling hte EDT, need to slow this thread - } catch (InterruptedException e) { - } - assertEquals(1, subscribedEvents.size()); - } - - public void testContainerEventActionException() { - ContainerEventServiceAction action = new ContainerEventServiceAction("FooAction", null); - try { - action.actionPerformed(new ActionEvent(this, 0, "Foo")); - fail("Throws exception when no event service"); - } catch (Throwable t) { - } - try { - action.actionPerformed(new ActionEvent(null, 0, "Foo")); - fail("Throws exception when no event service"); - } catch (Throwable t) { - } - action.setThrowsExceptionOnNullEventService(false); - action.actionPerformed(new ActionEvent(this, 0, "Foo")); - assertTrue("Set to not throw exception when no event service", true); - } - -} diff --git a/src/test/java/org/scijava/event/bushe/TestEventBus.java b/src/test/java/org/scijava/event/bushe/TestEventBus.java deleted file mode 100644 index 487d0b277..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventBus.java +++ /dev/null @@ -1,570 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.lang.reflect.TypeVariable; -import java.awt.EventQueue; - -import javax.swing.JComponent; - -import junit.framework.TestCase; - -public class TestEventBus extends TestCase { - - private IEventSubscriber eventSubscriber = null; - private IEventTopicSubscriber eventTopicSubscriber; - private EBTestCounter testCounter = new EBTestCounter(); - - public TestEventBus(String name) { - super(name); - } - - protected void setUp() throws Exception { - EventBus.getGlobalEventService().clearAllSubscribers(); - } - - protected void tearDown() throws Exception { - } - - private EventServiceEvent createEvent() { - return new EventServiceEvent() { - public Object getSource() { - return ""; - } - }; - } - - private Class getEventClass() { - return createEvent().getClass(); - } - - private IEventSubscriber createEventSubscriber(boolean throwException) { - SubscriberForTest test = new SubscriberForTest(testCounter, throwException); - return test; - } - - private IEventTopicSubscriber createEventTopicSubscriber(boolean throwException) { - return new TopicSubscriberForTest(testCounter, throwException); - } - - private IEventSubscriber getEventSubscriber() { - return getEventSubscriber(true); - } - - private IEventSubscriber getEventSubscriber(boolean throwException) { - if (eventSubscriber == null) { - eventSubscriber = createEventSubscriber(throwException); - } - return eventSubscriber; - } - - public void testSubscribe() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = EventBus.subscribe(getEventClass(), subscriber); - assertTrue("testSubscribe(new subscriber)", actualReturn); - - actualReturn = EventBus.subscribe(getEventClass(), subscriber); - assertFalse("testSubscribe(duplicate subscriber)", actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - try { - actualReturn = EventBus.subscribe((Class) null, getEventSubscriber()); - fail("subscribeStrongly(null, x) should have thrown exception"); - } catch (Exception e) { - } - - try { - actualReturn = EventBus.subscribe(getEventClass(), null); - fail("subscribeStrongly(x, null) should have thrown exception"); - } catch (Exception e) { - } - - } - - public static class SwingThreadTestEventSubscriber implements IEventSubscriber { - public boolean wasOnSwingThread; - - public void onEvent(Object event) { - wasOnSwingThread = EventQueue.isDispatchThread(); - } - } - - public void testSwingThreading() { - SwingThreadTestEventSubscriber sub = new SwingThreadTestEventSubscriber(); - EventBus.subscribe(Number.class, sub); - EventBus.publish(1); - EDTUtil.waitForEDT(); - assertTrue("Expected the EventBus to dispatch on the EDT", sub.wasOnSwingThread); - } - - public void testSubscribeWeakly() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = EventBus.subscribe(getEventClass(), subscriber); - assertTrue("testSubscribeWeakly(new subscriber)", actualReturn); - - actualReturn = EventBus.subscribe(getEventClass(), subscriber); - assertFalse("testSubscribe(duplicate subscriber)", actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - subscriber = null; - System.gc(); - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - try { - actualReturn = EventBus.subscribeStrongly((Class) null, getEventSubscriber()); - fail("subscribeStrongly(null, x) should have thrown exception"); - } catch (Exception e) { - } - - try { - actualReturn = EventBus.subscribeStrongly(getEventClass(), null); - fail("subscribeStrongly(x, null) should have thrown exception"); - } catch (Exception e) { - } - } - - public void testIllegalArgs() { - try { - EventBus.subscribeVetoListenerStrongly((Class) null, new VetoEventListenerForTest()); - fail(); - } catch (Throwable t) { - } - try { - EventBus.subscribeVetoListenerStrongly((String) null, new VetoTopicEventListenerForTest()); - fail(); - } catch (Throwable t) { - } - try { - EventBus.subscribeVetoListenerStrongly("foo", null); - fail(); - } catch (Throwable t) { - } - try { - EventBus.subscribeVetoListenerStrongly(getEventClass(), null); - fail(); - } catch (Throwable t) { - } - - - try { - EventBus.unsubscribeVetoListener((Class) null, new VetoEventListenerForTest()); - fail(); - } catch (Throwable t) { - } - try { - EventBus.unsubscribeVetoListener((String) null, new VetoTopicEventListenerForTest()); - fail(); - } catch (Throwable t) { - } - try { - EventBus.unsubscribeVetoListener("foo", null); - fail(); - } catch (Throwable t) { - } - try { - EventBus.unsubscribeVetoListener(getEventClass(), null); - fail(); - } catch (Throwable t) { - } - - } - - public void testVeto() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = EventBus.subscribe(getEventClass(), subscriber); - - VetoEventListener vetoListener = new VetoEventListenerForTest(); - actualReturn = EventBus.subscribeVetoListenerStrongly(getEventClass(), vetoListener); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - EventBus.unsubscribeVetoListener(getEventClass(), vetoListener); - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - - } - - public void testVetoException() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = EventBus.subscribe(getEventClass(), subscriber); - assertTrue(actualReturn); - VetoEventListener vetoListener = new VetoEventListenerForTest(true); - actualReturn = EventBus.subscribeVetoListenerStrongly(getEventClass(), vetoListener); - assertTrue(actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - EventBus.unsubscribeVetoListener(getEventClass(), vetoListener); - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 2, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - System.out.println("Prevent garbage collection of subscriber by sys'outing it at the end:"+subscriber); - } - - public void testVetoTopic() { - boolean actualReturn; - IEventTopicSubscriber subscriber = createEventTopicSubscriber(false); - - actualReturn = EventBus.subscribeStrongly("FooTopic", subscriber); - - VetoTopicEventListener vetoListener = new VetoTopicEventListener() { - public boolean shouldVeto(String topic, Object data) { - return true; - } - }; - actualReturn = EventBus.subscribeVetoListenerStrongly("FooTopic", vetoListener); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish("FooTopic", "Bar"); - EDTUtil.waitForEDT(); - - //The test passes if 0 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - EventBus.unsubscribeVetoListener("FooTopic", vetoListener); - EventBus.publish("FooTopic", "Bar"); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - - public void testVetoWeak() { - boolean actualReturn; - IEventSubscriber subscriber = createEventSubscriber(false); - - actualReturn = EventBus.subscribe(getEventClass(), subscriber); - - VetoEventListener vetoListener = new VetoEventListener() { - public boolean shouldVeto(Object evt) { - return true; - } - }; - actualReturn = EventBus.subscribeVetoListener(getEventClass(), vetoListener); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - vetoListener = null; - System.gc(); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - public void testVetoTopicWeak() { - boolean actualReturn; - IEventTopicSubscriber subscriber = createEventTopicSubscriber(false); - - actualReturn = EventBus.subscribeStrongly("FooTopic", subscriber); - - VetoTopicEventListener vetoListener = new VetoTopicEventListener() { - public boolean shouldVeto(String topic, Object data) { - return true; - } - }; - actualReturn = EventBus.subscribeVetoListener("FooTopic", vetoListener); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish("FooTopic", "Bar"); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 0, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - vetoListener = null; - System.gc(); - EventBus.publish("FooTopic", "Bar"); - EDTUtil.waitForEDT(); - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testVeto(total)", 1, testCounter.eventsHandledCount); - assertEquals("testVeto(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - - public void testUnsubscribe() { - EventBus.subscribe(getEventClass(), getEventSubscriber(false)); - - boolean actualReturn; - - try { - actualReturn = EventBus.unsubscribe((Class) null, getEventSubscriber()); - fail("unsubscribe(null, x) should have thrown exception"); - } catch (Exception e) { - } - - try { - actualReturn = EventBus.unsubscribe(getEventClass(), null); - fail("unsubscribe(x, null) should have thrown exception"); - } catch (Exception e) { - } - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - actualReturn = EventBus.unsubscribe(getEventClass(), getEventSubscriber()); - assertTrue("return value", actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - public void testUnsubscribeTopic() { - IEventTopicSubscriber eventTopicSubscriber = createEventTopicSubscriber(false); - EventBus.subscribeStrongly("FooTopic", eventTopicSubscriber); - - boolean actualReturn; - - try { - actualReturn = EventBus.unsubscribe((String) null, eventTopicSubscriber); - fail("unsubscribe(null, x) should have thrown exception"); - } catch (Exception e) { - } - - try { - actualReturn = EventBus.unsubscribe("FooTopic", null); - fail("unsubscribe(x, null) should have thrown exception"); - } catch (Exception e) { - } - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish("FooTopic", "Foo"); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - actualReturn = EventBus.unsubscribe("FooTopic", eventTopicSubscriber); - assertTrue("return value", actualReturn); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish("FooTopic", "Foo"); - EDTUtil.waitForEDT(); - - //The test passes if 1 subscribers completed and 0 subscribers threw exception. - assertEquals("testPublish(total)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - /** - * Test that the publish method works and that exceptions thrown in event subscribers don't halt publishing. In the - * test 2 subscribers are good and 2 subscribers throw exceptions. - */ - public void testPublish() { - try { - EventBus.publish(null); - EDTUtil.waitForEDT(); - fail("publish(null) should have thrown exception"); - } catch (Exception e) { - } - - try { - EventBus.publish((String) null, createEvent()); - EDTUtil.waitForEDT(); - fail("publish(null, x) should have thrown exception"); - } catch (Exception e) { - } - - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - assertEquals("testPublish(completed)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - EventBus.publish("Foo", "Bar"); - EDTUtil.waitForEDT(); - assertEquals("testPublish(completed)", 0, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - - EventBus.subscribe(getEventClass(), createEventSubscriber(true)); - EventBus.subscribe(getEventClass(), createEventSubscriber(false)); - EventBus.subscribe(getEventClass(), createEventSubscriber(true)); - EventBus.subscribe(getEventClass(), createEventSubscriber(false)); - - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - - //The test passes if 2 subscribers completed and 2 subscribers threw exception. - assertEquals("testPublish(completed)", 4, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 2, testCounter.subscribeExceptionCount); - - IEventSubscriber eventSubscriber = createEventSubscriber(false); - EventBus.subscribe(ObjectEvent.class, eventSubscriber); - testCounter.eventsHandledCount = 0; - testCounter.subscribeExceptionCount = 0; - ObjectEvent evt = new ObjectEvent("Foo", "Bar"); - assertEquals(evt.getEventObject(), "Bar"); - EventBus.publish(evt); - EDTUtil.waitForEDT(); - assertEquals("testPublish(completed)", 1, testCounter.eventsHandledCount); - assertEquals("testPublish(exceptions)", 0, testCounter.subscribeExceptionCount); - } - - /** - * This tests whether the EventBus has a static method for each EventService method - */ - public void testNumOfMethods() { - Method[] esMethods = EventService.class.getMethods(); - Method[] ebMethods = EventBus.class.getMethods(); - //Are all the es methods in the eb? - for (int i = 0; i < esMethods.length; i++) { - Method esMethod = esMethods[i]; - boolean foundMatch = false; - nextMethod: - for (int j = 0; j < ebMethods.length; j++) { - Method ebMethod = ebMethods[j]; - if (esMethod.getName().equals(ebMethod.getName())) { - TypeVariable[] esTypes = esMethod.getTypeParameters(); - TypeVariable[] ebTypes = ebMethod.getTypeParameters(); - if (esTypes.length != ebTypes.length) { - break; - } - for (int typeCount = 0; typeCount < ebTypes.length; typeCount++) { - TypeVariable esType = esTypes[typeCount]; - TypeVariable ebType = ebTypes[typeCount]; - if (!(ebType+"").equals((""+esType))) { - continue nextMethod; - } - } - Class[] esParams = esMethod.getParameterTypes(); - Class[] ebParams = ebMethod.getParameterTypes(); - if (esParams.length != ebParams.length) { - continue nextMethod; - } - for (int typeCount = 0; typeCount < ebParams.length; typeCount++) { - Class esType = esParams[typeCount]; - Class ebType = ebParams[typeCount]; - if (!ebType.equals(esType)) { - continue nextMethod; - } - } - foundMatch = true; - } - } - if (!foundMatch) { - System.out.println("No match for es method:" + esMethod.getName() + ", " + esMethod +", i="+i); - } - assertTrue(foundMatch); - } - - //Are all the eb methods static? - ebMethods = EventBus.class.getDeclaredMethods(); - for (int i = 0; i < ebMethods.length; i++) { - Method ebMethod = ebMethods[i]; - int modifiers = ebMethod.getModifiers(); - boolean isStatic = Modifier.isStatic(modifiers); - if (!isStatic) { - System.out.println("EventBus has a non-static method:" + ebMethod); - } - assertTrue(isStatic); - } - } - - //Really a compilation test - public void testGeneric() { - EventBus.subscribe(String.class, new IEventSubscriber() { - public void onEvent(JComponent event) { - } - }); - EventBus.subscribe("foo", new IEventTopicSubscriber() { - public void onEvent(String topic, JComponent data) { - } - }); - } -} diff --git a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java deleted file mode 100644 index 49417097a..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClass.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.scijava.event.bushe; - -import javax.swing.JComponent; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestEventBusServiceClass extends TestCase { - - public TestEventBusServiceClass(String name) { - super(name); - } - - protected void setUp() throws Exception { - System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, BadEventService.class.getName()); - } - - protected void tearDown() throws Exception { - } - - public void testConfigurableEventService() { - try { - EventBus.subscribe("foo", new IEventTopicSubscriber() { - public void onEvent(String topic, Object data) { - } - }); - fail("Expected runtime exception since the plugged in EventService is a bad one."); - } catch (Throwable ex) { - System.out.println("Got ex"); - } - } -} diff --git a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java b/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java deleted file mode 100644 index 7d6dcb309..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventBusServiceClassBadType.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestEventBusServiceClassBadType extends TestCase { - - public TestEventBusServiceClassBadType(String name) { - super(name); - } - - protected void setUp() throws Exception { - System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, EventServiceLocator.class.getName()); - } - - protected void tearDown() throws Exception { - } - - public void testConfigurableEventService() { - try { - EventBus.subscribe("foo", new IEventTopicSubscriber() { - public void onEvent(String topic, Object data) { - } - }); - fail("Expected runtime exception since the plugged in EventService is a bad one."); - } catch (Throwable ex) { - System.out.println("Got ex"); - } - } -} diff --git a/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java b/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java deleted file mode 100644 index 27cb12c06..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventBusTiming.java +++ /dev/null @@ -1,107 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestEventBusTiming extends EventServiceLocatorTestCase { - - private IEventSubscriber eventSubscriber = null; - private IEventTopicSubscriber eventTopicSubscriber; - private SubscriberTimingEvent timing; - private EBTestCounter testCounter = new EBTestCounter(); - - public TestEventBusTiming(String name) { - super(name); - } - - private EventServiceEvent createEvent() { - return new EventServiceEvent() { - public Object getSource() { - return ""; - } - }; - } - - private Class getEventClass() { - return createEvent().getClass(); - } - - private IEventSubscriber createEventSubscriber(boolean throwException) { - return new SubscriberForTest(testCounter, throwException); - } - - private IEventTopicSubscriber createEventTopicSubscriber(boolean throwException) { - return new TopicSubscriberForTest(testCounter, throwException); - } - - private IEventSubscriber createEventSubscriber(Long waitTime) { - return new SubscriberForTest(testCounter, waitTime); - } - - private IEventSubscriber getEventSubscriber() { - return getEventSubscriber(true); - } - - private IEventSubscriber getEventSubscriber(boolean throwException) { - if (eventSubscriber == null) { - eventSubscriber = createEventSubscriber(throwException); - } - return eventSubscriber; - } - - private IEventTopicSubscriber getEventTopicSubscriber() { - if (eventTopicSubscriber == null) { - eventTopicSubscriber = createEventTopicSubscriber(false); - } - return eventTopicSubscriber; - } - - public void thisOnlyWorksSometimesNow_testTimeHandling() { - EventBus.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); - final Boolean[] wasCalled = new Boolean[1]; - EventBus.subscribe(SubscriberTimingEvent.class, new IEventSubscriber() { - public void onEvent(Object evt) { - wasCalled[0] = Boolean.TRUE; - } - }); - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - assertTrue(wasCalled[0] == null); - EventBus.subscribe(getEventClass(), createEventSubscriber(new Long(200L))); - final Boolean[] wasCalled2 = new Boolean[1]; - EventBus.subscribe(SubscriberTimingEvent.class, new IEventSubscriber() { - public void onEvent(Object evt) { - wasCalled2[0] = Boolean.TRUE; - timing = (SubscriberTimingEvent) evt; - } - }); - EventBus.publish(createEvent()); - EDTUtil.waitForEDT(); - assertTrue(wasCalled2[0] == Boolean.TRUE); - assertNotNull(timing.getSource()); - assertNotNull(timing.getEnd()); - assertNotNull(timing.getEvent()); - assertNotNull(timing.getSubscriber()); - assertNotNull(timing.getStart()); - assertNotNull(timing.getTimeLimitMilliseconds()); - assertFalse(timing.isEventHandlingExceeded()); - assertFalse(timing.isVetoExceeded()); - assertNull(timing.getVetoEventListener()); - } - -} diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator.java deleted file mode 100644 index 8b00962cf..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -public class TestEventServiceLocator extends EventServiceLocatorTestCase { - - public TestEventServiceLocator(String name) { - super(name); - } - - public void testDefaultEventBusService() { - EventService ebs = EventServiceLocator.getEventBusService(); - assertTrue(ebs instanceof SwingEventService); - EventService ses = EventServiceLocator.getSwingEventService(); - assertTrue(ses == ebs); - } - public void testDefaultEventBusService2() { - EventService ses = EventServiceLocator.getSwingEventService(); - assertTrue(ses instanceof SwingEventService); - EventService ebs = EventServiceLocator.getEventBusService(); - assertTrue(ses == ebs); - } - public void testNamedEventBusService1() { - EventService ses = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); - assertTrue(ses instanceof SwingEventService); - EventService ebs = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); - assertTrue(ses == ebs); - } - public void testNamedEventBusService2() { - EventService ebs = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); - assertTrue(ebs instanceof SwingEventService); - EventService ses = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); - assertTrue(ses == ebs); - } -} diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator2.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator2.java deleted file mode 100644 index 138ec277a..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator2.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestEventServiceLocator2 extends EventServiceLocatorTestCase { - - public TestEventServiceLocator2(String name) { - super(name); - } - - public void testSetEventBusService() { - EventService ebs = new ThreadSafeEventService(); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); - } catch (EventServiceExistsException e) { - fail("It doesn't exist yet"); - } - EventService eb = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); - assertTrue(eb instanceof ThreadSafeEventService); - assertTrue(eb == ebs); - EventService ses = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); - assertTrue(ses != ebs); - assertTrue(ses instanceof SwingEventService); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); - fail("It already exist yet"); - } catch (EventServiceExistsException e) { - } - } -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator3.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator3.java deleted file mode 100644 index 1cd9c4964..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator3.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -public class TestEventServiceLocator3 extends EventServiceLocatorTestCase { - public TestEventServiceLocator3(String name) { - super(name); - } - - public void testSetEventBusService() { - EventService ebs = new SwingEventService(); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ebs); - } catch (EventServiceExistsException e) { - fail("It doesn't exist yet"); - } - EventService eb = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); - assertTrue(eb instanceof ThreadSafeEventService); - assertTrue(eb == ebs); - EventService ses = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); - assertTrue(ses == ebs); - assertTrue(ses instanceof ThreadSafeEventService); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ebs); - fail("It already exist yet"); - } catch (EventServiceExistsException e) { - } - } -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator4.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator4.java deleted file mode 100644 index 99106419a..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator4.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -public class TestEventServiceLocator4 extends EventServiceLocatorTestCase { - - public TestEventServiceLocator4(String name) { - super(name); - } - - public void testSetEventBusService() { - EventService ebs = new ThreadSafeEventService(); - EventService ses = new SwingEventService(); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); - } catch (EventServiceExistsException e) { - fail("It doesn't exist yet"); - } - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ses); - } catch (EventServiceExistsException e) { - fail("It doesn't exist yet"); - } - EventService eb = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); - EventService se = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); - assertTrue(eb == ebs); - assertTrue(se == ses); - } -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator5.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator5.java deleted file mode 100644 index 421d0bc70..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator5.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -public class TestEventServiceLocator5 extends EventServiceLocatorTestCase { - public TestEventServiceLocator5(String name) { - super(name); - } - - public void testSetEventBusService() { - EventService ebs = new ThreadSafeEventService(); - EventService ses = new SwingEventService(); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ses); - } catch (EventServiceExistsException e) { - fail("It doesn't exist yet"); - } - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); - } catch (EventServiceExistsException e) { - fail("It doesn't exist yet"); - } - EventService se = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); - EventService eb = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS); - assertTrue(eb == ebs); - assertTrue(se == ses); - } -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator6.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator6.java deleted file mode 100644 index 8e035348b..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator6.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -public class TestEventServiceLocator6 extends EventServiceLocatorTestCase { - - public TestEventServiceLocator6(String name) { - super(name); - } - - public void testSetEventBusService() { - EventService ebs = new ThreadSafeEventService(); - EventService ses = new SwingEventService(); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ses); - } catch (EventServiceExistsException e) { - fail("It doesn't exist yet"); - } - EventService eb = EventServiceLocator.getEventBusService(); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); - fail("It exists"); - } catch (EventServiceExistsException e) { - } - EventService se = EventServiceLocator.getEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE); - assertTrue(se == ses); - assertTrue(eb == ses); - } -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator7.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocator7.java deleted file mode 100644 index c345bf74d..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocator7.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright 2005 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -public class TestEventServiceLocator7 extends EventServiceLocatorTestCase { - - public TestEventServiceLocator7(String name) { - super(name); - } - - public void testSetEventBusService() { - EventService ebs = new ThreadSafeEventService(); - EventService ses = new SwingEventService(); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); - } catch (EventServiceExistsException e) { - fail("It doesn't exist yet"); - } - EventService se = EventServiceLocator.getSwingEventService(); - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_EVENT_BUS, ebs); - fail("It exists"); - } catch (EventServiceExistsException e) { - } - try { - EventServiceLocator.setEventService(EventServiceLocator.SERVICE_NAME_SWING_EVENT_SERVICE, ebs); - fail("It exists"); - } catch (EventServiceExistsException e) { - } - EventService eb = EventServiceLocator.getEventBusService(); - assertTrue(eb == ebs); - assertTrue(se != eb); - } -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration.java deleted file mode 100644 index c7acd90b1..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestEventServiceLocatorConfiguration extends EventServiceLocatorTestCase { - - public static class ES1 extends ThreadSafeEventService { - - } - - public static class ES2 extends ThreadSafeEventService { - - } - - public TestEventServiceLocatorConfiguration(String name) { - super(name); - } - - public void testConfigurableEventService() { - System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, ES1.class.getName()); - System.setProperty(EventServiceLocator.EVENT_BUS_CLASS, ES2.class.getName()); - EventService es = EventServiceLocator.getSwingEventService(); - assertTrue(es instanceof ES1); - es = EventServiceLocator.getEventBusService(); - assertTrue(es instanceof ES2); - } -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration2.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration2.java deleted file mode 100644 index aa4548b50..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration2.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestEventServiceLocatorConfiguration2 extends EventServiceLocatorTestCase { - - public static class ES1 extends ThreadSafeEventService { - - } - - public static class ES2 extends ThreadSafeEventService { - - } - - public TestEventServiceLocatorConfiguration2(String name) { - super(name); - } - - public void testConfigurableEventService1() { - System.setProperty(EventServiceLocator.SWING_EVENT_SERVICE_CLASS, ES1.class.getName()); - EventService es = EventServiceLocator.getEventBusService(); - assertTrue(es instanceof ThreadSafeEventService); - es = EventServiceLocator.getSwingEventService(); - assertTrue(es instanceof ES1); - } - -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration3.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration3.java deleted file mode 100644 index b79e1eb24..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration3.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestEventServiceLocatorConfiguration3 extends EventServiceLocatorTestCase { - - public static class ES1 extends ThreadSafeEventService { - - } - - public static class ES2 extends ThreadSafeEventService { - - } - - public TestEventServiceLocatorConfiguration3(String name) { - super(name); - } - - public void testConfigurableEventService3() { - System.setProperty(EventServiceLocator.EVENT_BUS_CLASS, ES2.class.getName()); - EventService es = EventServiceLocator.getEventBusService(); - assertTrue(es instanceof ES2); - es = EventServiceLocator.getSwingEventService(); - assertTrue(es instanceof SwingEventService); - } - -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration4.java b/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration4.java deleted file mode 100644 index 0b5ba3ca8..000000000 --- a/src/test/java/org/scijava/event/bushe/TestEventServiceLocatorConfiguration4.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.scijava.event.bushe; - -import junit.framework.TestCase; - -/** The DefaultEventService is NOT Swing-safe! But it's easier to test... */ -public class TestEventServiceLocatorConfiguration4 extends EventServiceLocatorTestCase { - - public static class ES1 extends ThreadSafeEventService { - - } - - public static class ES2 extends ThreadSafeEventService { - - } - - public TestEventServiceLocatorConfiguration4(String name) { - super(name); - } - - public void testConfigurableEventService4() { - System.setProperty(EventServiceLocator.EVENT_BUS_CLASS, ES2.class.getName()); - EventService es = EventServiceLocator.getSwingEventService(); - assertTrue(es instanceof SwingEventService); - es = EventServiceLocator.getEventBusService(); - assertTrue(es instanceof ES2); - } -} \ No newline at end of file diff --git a/src/test/java/org/scijava/event/bushe/TestPerformance.java b/src/test/java/org/scijava/event/bushe/TestPerformance.java index f597ae488..a936200ee 100644 --- a/src/test/java/org/scijava/event/bushe/TestPerformance.java +++ b/src/test/java/org/scijava/event/bushe/TestPerformance.java @@ -12,12 +12,12 @@ * For proving performance. */ public class TestPerformance extends TestCase { - private IEventSubscriber doNothingSubscriber = new IEventSubscriber() { + private EventSubscriber doNothingSubscriber = new EventSubscriber() { public void onEvent(Object event) { } }; - private IEventTopicSubscriber doNothingTopicSubscriber = new IEventTopicSubscriber() { + private EventTopicSubscriber doNothingTopicSubscriber = new EventTopicSubscriber() { public void onEvent(String topic, Object payload) { } }; diff --git a/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java b/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java deleted file mode 100644 index a02310228..000000000 --- a/src/test/java/org/scijava/event/bushe/TestPrioritizedSubscribers.java +++ /dev/null @@ -1,591 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.List; -import java.util.ArrayList; -import java.util.Random; -import java.util.Collections; -import java.util.Arrays; -import java.util.regex.Pattern; - -import java.awt.Color; - -import junit.framework.TestCase; - -/** - * Tests the Prioritized interface va. normal FIFO order. - */ -public class TestPrioritizedSubscribers extends TestCase { - private ThreadSafeEventService eventService = null; - private static final String EVENT_SERVICE_TEST_PRIORITY_ANNOTATION = "testPriorityAnnotation"; - - - /** - * Base class that adds itself to the list it's given when told. Nice for annotation subscribers. - */ - class OrderRecorder { - private List listToRecordTo; - - public OrderRecorder(List listToRecordTo) { - this.listToRecordTo = listToRecordTo; - } - - public void record() { - listToRecordTo.add(this); - } - } - - /** - * A subscriber that adds itself to a supplied list so that the order of calls is recorded. - */ - class OrderRecorderSubscriber extends OrderRecorder implements IEventSubscriber { - - OrderRecorderSubscriber(List listToRecordTo) { - super(listToRecordTo); - } - - public void onEvent(Object event) { - record(); - } - } - - /** - * Ditto, for topics - */ - class OrderRecorderTopicSubscriber extends OrderRecorder implements IEventTopicSubscriber { - - OrderRecorderTopicSubscriber(List listToRecordTo) { - super(listToRecordTo); - } - - public void onEvent(String topic, Object event) { - record(); - } - } - - class PrioritizedOrderRecorderSubscriber extends OrderRecorderSubscriber implements Prioritized { - private int priority; - - public PrioritizedOrderRecorderSubscriber(int priority, List listToRecordTo) { - super(listToRecordTo); - this.priority = priority; - } - - public int getPriority() { - return priority; - } - } - - class PrioritizedOrderRecorderTopicSubscriber extends OrderRecorderTopicSubscriber implements Prioritized { - private int priority; - - public PrioritizedOrderRecorderTopicSubscriber(int priority, List listToRecordTo) { - super(listToRecordTo); - this.priority = priority; - } - - public int getPriority() { - return priority; - } - } - - public TestPrioritizedSubscribers(String name) { - super(name); - } - - protected void setUp() throws Exception { - eventService = new ThreadSafeEventService(null, false); - EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, null); - } - - protected void tearDown() throws Exception { - eventService = null; - } - - public void testNormalFIFO() { - List calledOrder = new ArrayList(); - List originalOrder = new ArrayList(); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - //mixing an inner class into the test - IEventSubscriber inner = new IEventSubscriber() { - public void onEvent(Object event) { - } - }; - //originalOrder.add(inner); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - //add them all - for (IEventSubscriber eventSubscriber : originalOrder) { - eventService.subscribe(Color.class, eventSubscriber); - } - eventService.publish(Color.BLUE); - assertEquals(originalOrder, calledOrder); - System.out.println("inner sout to avoid garbage collection" + inner); - } - - public void testNoPrioritizedWithZeroPrioritized() { - List calledOrder = new ArrayList(); - List originalOrder = new ArrayList(); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - originalOrder.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - originalOrder.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - //mixing an inner class into the test - PrioritizedEventSubscriber inner = new PrioritizedEventSubscriber() { - public void onEvent(Object event) { - } - - public int getPriority() { - return 0; - } - }; - //originalOrder.add(inner); - originalOrder.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); - originalOrder.add(new OrderRecorderSubscriber(calledOrder)); - //add them all - for (IEventSubscriber eventSubscriber : originalOrder) { - eventService.subscribe(Color.class, eventSubscriber); - } - eventService.publish(Color.BLUE); - assertEquals(originalOrder, calledOrder); - System.out.println("inner sout to avoid garbage collection" + inner); - } - - public void testOnlyPrioritized() { - List calledOrder = new ArrayList(); - List originalOrder = new ArrayList(); - for (int i = 0; i < 100; i++) { - Random random = new Random(); - originalOrder.add(new PrioritizedOrderRecorderSubscriber(random.nextInt(10000) - 5000, calledOrder)); - } - for (IEventSubscriber eventSubscriber : originalOrder) { - eventService.subscribe(Color.class, eventSubscriber); - } - eventService.publish(Color.BLUE); - int lastPriority = -5001; - for (IEventSubscriber eventSubscriber : calledOrder) { - int priority = ((PrioritizedOrderRecorderSubscriber) eventSubscriber).getPriority(); - assertTrue(priority >= lastPriority); - lastPriority = priority; - } - } - - public void testMixedOfPrioritizedNonPrioritizedAndPrioritized0() { - Random rand = new Random(); - List calledOrder = new ArrayList(); - List prioritized = new ArrayList(); - //100 negative - for (int i = 0; i < 100; i++) { - Random random = new Random(); - prioritized.add(new PrioritizedOrderRecorderSubscriber(random.nextInt(10000) * -1, calledOrder)); - } - //100 positive - for (int i = 0; i < 100; i++) { - Random random = new Random(); - prioritized.add(new PrioritizedOrderRecorderSubscriber(random.nextInt(10000), calledOrder)); - } - Collections.shuffle(prioritized); - //100 fifo - List fifo = new ArrayList(); - for (int i = 0; i < 100; i++) { - if (rand.nextBoolean()) { - fifo.add(new OrderRecorderSubscriber(calledOrder)); - } else { - fifo.add(new PrioritizedOrderRecorderSubscriber(0, calledOrder)); - } - } - List prioritizedCopy = new ArrayList(prioritized); - List fifoCopy = new ArrayList(fifo); - //Subscribe all, randomizing a fifo or prioritized - IEventSubscriber eventSubscriber; - int subscribeCount = 0; - int prioritizedSubscribeCount = 0; - int nonPrioritizedSubscribeCount = 0; - for (int i = 0; i < 300; i++) { - if (prioritizedCopy.isEmpty()) { - eventSubscriber = fifoCopy.remove(0); - nonPrioritizedSubscribeCount++; - } else if (fifoCopy.isEmpty()) { - eventSubscriber = prioritizedCopy.remove(0); - prioritizedSubscribeCount++; - } else { - if (rand.nextBoolean()) { - eventSubscriber = fifoCopy.remove(0); - nonPrioritizedSubscribeCount++; - } else { - eventSubscriber = prioritizedCopy.remove(0); - prioritizedSubscribeCount++; - } - } - subscribeCount++; - boolean success = eventService.subscribe(Color.class, eventSubscriber); - assertFalse(!success); - } - - List subscribersToColor = eventService.getSubscribers(Color.class); - assertEquals(300, subscribersToColor.size()); - assertEquals(100, nonPrioritizedSubscribeCount); - assertEquals(200, prioritizedSubscribeCount); - assertEquals(300, subscribeCount); - eventService.publish(Color.BLUE); - assertEquals(300, calledOrder.size()); - int lastPriority = -10001; - for (int i = 0; i < 99; i++) { - IEventSubscriber subscriber = calledOrder.get(i); - assertTrue(subscriber instanceof PrioritizedOrderRecorderSubscriber); - PrioritizedOrderRecorderSubscriber prioritizedOrderRecorderSubscriber = (PrioritizedOrderRecorderSubscriber) subscriber; - int priority = prioritizedOrderRecorderSubscriber.getPriority(); - assertTrue(priority < 0); - assertTrue(priority >= lastPriority); - lastPriority = priority; - } - for (int i = 100; i < 199; i++) { - IEventSubscriber subscriber = calledOrder.get(i); - assertTrue(subscriber instanceof OrderRecorderSubscriber); - if (subscriber instanceof PrioritizedOrderRecorderSubscriber) { - PrioritizedOrderRecorderSubscriber prioritizedOrderRecorderSubscriber = (PrioritizedOrderRecorderSubscriber) subscriber; - int priority = prioritizedOrderRecorderSubscriber.getPriority(); - assertTrue(priority == 0); - } - assertEquals(subscriber, fifo.get(i - 100)); - } - lastPriority = 0; - for (int i = 200; i < 299; i++) { - IEventSubscriber subscriber = calledOrder.get(i); - assertTrue(subscriber instanceof PrioritizedOrderRecorderSubscriber); - PrioritizedOrderRecorderSubscriber prioritizedOrderRecorderSubscriber = (PrioritizedOrderRecorderSubscriber) subscriber; - int priority = prioritizedOrderRecorderSubscriber.getPriority(); - assertTrue(priority > 0); - assertTrue(priority >= lastPriority); - lastPriority = priority; - } - System.out.println(prioritized.size()); - System.out.println(fifo.size()); - } - - public void testPriorityAnnotation() throws EventServiceExistsException { - EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, eventService); - List calledOrder = new ArrayList(); - OrderRecorder sn100 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) - public void annotateMe(Object foo) { - record(); - } - }; - OrderRecorder sn50 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) - public void annotateMe(Object foo) { - record(); - } - }; - PrioritizedOrderRecorderSubscriber spn30 = new PrioritizedOrderRecorderSubscriber(-30, calledOrder); - OrderRecorderSubscriber so_1 = new OrderRecorderSubscriber(calledOrder); - OrderRecorder s100 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) - public void annotateMe(Object foo) { - record(); - } - }; - OrderRecorder sn10 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) - public void annotateMe(Object foo) { - record(); - } - }; - OrderRecorder s0_2 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) - public void annotateMe(Object foo) { - record(); - } - }; - OrderRecorder s0_3 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) - public void annotateMe(Object foo) { - record(); - } - }; - OrderRecorder s50 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) - public void annotateMe(Object foo) { - record(); - } - }; - OrderRecorder s0_4 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) - public void annotateMe(Object foo) { - record(); - } - }; - OrderRecorder s10 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) - public void annotateMe(Object foo) { - record(); - } - }; - OrderRecorder s0_5 = new OrderRecorder(calledOrder) { - @EventSubscriber(eventClass = Color.class, eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) - public void annotateMe(Object foo) { - record(); - } - }; - Object[] toAdd = {sn100, s100, so_1, spn30, s0_2, s50, s0_3, sn10, sn50, s0_4, s10, s0_5}; - List expectedResult = Arrays.asList(sn100, sn50, spn30, sn10, so_1, s0_2, s0_3, s0_4, s0_5, s10, s50, s100); - for (Object o : toAdd) { - if (o instanceof IEventSubscriber) { - eventService.subscribe(Color.class, (IEventSubscriber) o); - } else { - AnnotationProcessor.process(o); - } - } - eventService.publish(Color.BLUE); - assertEquals(expectedResult, calledOrder); - } - - /** - * With more than one subscriber to the EventBus by class, if any of the - * subscribers are Prioritized with a negative priority, then no FIFO subscribers - * are notified. - *

        - * This holds for non-Prioritized FIFO subscribers, and Prioritized subscribers - * with Priority of 0. - */ - public void testIssue26OneNegOthersNormal() { - final List calledOrder = new ArrayList(); - //non-Prioritized FIFO subscribers - IEventSubscriber sub1 = new IEventSubscriber() { - public void onEvent(Object event) { - calledOrder.add(1); - } - }; - IEventSubscriber sub0 = new PrioritizedEventSubscriber() { - public void onEvent(Object event) { - calledOrder.add(-1); - } - public int getPriority() { - return -1; - } - }; - IEventSubscriber sub2 = new IEventSubscriber() { - public void onEvent(Object event) { - calledOrder.add(2); - } - }; - - eventService.subscribe(Color.class, sub1); - eventService.subscribe(Color.class, sub0); - eventService.subscribe(Color.class, sub2); - eventService.publish(Color.BLUE); - assertEquals(calledOrder.get(0).intValue(), -1); - assertEquals(calledOrder.get(1).intValue(), 1); - assertEquals(calledOrder.get(2).intValue(), 2); - System.out.println("to avoid garbage collection:"+sub1+sub2+sub0); - } - - /** - * With more than one subscriber to the EventBus by class, if any of the - * subscribers are Prioritized with a negative priority, then no FIFO subscribers - * are notified. - *

        - * This holds for non-Prioritized FIFO subscribers, and Prioritized subscribers - * with Priority of 0. - */ - public void testOnePosOthersNormal() { - final List calledOrder = new ArrayList(); - //non-Prioritized FIFO subscribers - IEventSubscriber sub1 = new IEventSubscriber() { - public void onEvent(Object event) { - calledOrder.add(1); - } - }; - IEventSubscriber sub0 = new PrioritizedEventSubscriber() { - public void onEvent(Object event) { - calledOrder.add(11); - } - public int getPriority() { - return 11; - } - }; - IEventSubscriber sub2 = new IEventSubscriber() { - public void onEvent(Object event) { - calledOrder.add(2); - } - }; - - eventService.subscribe(Color.class, sub1); - eventService.subscribe(Color.class, sub0); - eventService.subscribe(Color.class, sub2); - eventService.publish(Color.BLUE); - assertEquals(1, calledOrder.get(0).intValue()); - assertEquals(2, calledOrder.get(1).intValue()); - assertEquals(11, calledOrder.get(2).intValue()); - System.out.println("to avoid garbage collection:"+sub1+sub2+sub0); - } - - /** - * shameless copy and paste test, only the subscriber type was changed - */ - public void testPriorityTopicAnnotation() throws EventServiceExistsException { - EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, eventService); - List calledOrder = new ArrayList(); - OrderRecorder sn100 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder sn50 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - PrioritizedOrderRecorderTopicSubscriber spn30 = new PrioritizedOrderRecorderTopicSubscriber(-30, calledOrder); - OrderRecorderTopicSubscriber so_1 = new OrderRecorderTopicSubscriber(calledOrder); - OrderRecorder s100 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder sn10 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s0_2 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s0_3 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s50 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s0_4 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s10 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s0_5 = new OrderRecorder(calledOrder) { - @EventTopicSubscriber(topic = "Color", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - Object[] toAdd = {sn100, s100, so_1, spn30, s0_2, s50, s0_3, sn10, sn50, s0_4, s10, s0_5}; - List expectedResult = Arrays.asList(sn100, sn50, spn30, sn10, so_1, s0_2, s0_3, s0_4, s0_5, s10, s50, s100); - for (Object o : toAdd) { - if (o instanceof IEventTopicSubscriber) { - eventService.subscribe("Color", (IEventTopicSubscriber) o); - } else { - AnnotationProcessor.process(o); - } - } - eventService.publish("Color", Color.BLUE); - assertEquals(expectedResult, calledOrder); - } - - - /** - * Another shameless copy and paste test, only the subscriber type was changed - */ - public void testPriorityTopicPatternAnnotation() throws EventServiceExistsException { - EventServiceLocator.setEventService(EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, eventService); - List calledOrder = new ArrayList(); - OrderRecorder sn100 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -100) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder sn50 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -50) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - PrioritizedOrderRecorderTopicSubscriber spn30 = new PrioritizedOrderRecorderTopicSubscriber(-30, calledOrder); - OrderRecorderTopicSubscriber so_1 = new OrderRecorderTopicSubscriber(calledOrder); - OrderRecorder s100 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 100) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder sn10 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = -10) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s0_2 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 0) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s0_3 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s50 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 50) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s0_4 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s10 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION, priority = 10) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - OrderRecorder s0_5 = new OrderRecorder(calledOrder) { - @EventTopicPatternSubscriber(topicPattern = "Col[a-z]+", eventServiceName = EVENT_SERVICE_TEST_PRIORITY_ANNOTATION) - public void annotateMe(String topic, Object foo) { - record(); - } - }; - Object[] toAdd = {sn100, s100, so_1, spn30, s0_2, s50, s0_3, sn10, sn50, s0_4, s10, s0_5}; - List expectedResult = Arrays.asList(sn100, sn50, spn30, sn10, so_1, s0_2, s0_3, s0_4, s0_5, s10, s50, s100); - for (Object o : toAdd) { - if (o instanceof OrderRecorderTopicSubscriber) { - Pattern pattern = Pattern.compile("Col[a-z]+"); - eventService.subscribe(pattern, (IEventTopicSubscriber) o); - } else { - AnnotationProcessor.process(o); - } - } - eventService.publish("Color", Color.BLUE); - assertEquals(expectedResult, calledOrder); - } -} diff --git a/src/test/java/org/scijava/event/bushe/TestPublicationStates.java b/src/test/java/org/scijava/event/bushe/TestPublicationStates.java deleted file mode 100644 index 71f7c02e8..000000000 --- a/src/test/java/org/scijava/event/bushe/TestPublicationStates.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.scijava.event.bushe; - -import junit.framework.Assert; -import junit.framework.TestCase; - -import java.util.List; -import java.util.ArrayList; - -/** - * Tests the implementation of publication states - */ -public class TestPublicationStates extends TestCase { - List stuffHappens = new ArrayList(); - ObjectEvent event = new ObjectEvent(null, null) { - @Override - public void setPublicationStatus(PublicationStatus status) { - super.setPublicationStatus(status); - stuffHappens.add(status); - } - }; - IEventSubscriber subscriber = new IEventSubscriber() { - public void onEvent(Object event) { - stuffHappens.add(this); - } - }; - - EventService es = new ThreadSafeEventService() { - @Override - protected void setStatus(PublicationStatus status, Object event, String topic, Object eventObj) { - super.setStatus(status, event, topic, eventObj); - } - }; - - public void testStates() { - stuffHappens.clear(); - es.subscribe(ObjectEvent.class, subscriber); - es.publish(event); - List expected = new ArrayList(); - expected.add(PublicationStatus.Initiated); - expected.add(PublicationStatus.Queued); - expected.add(PublicationStatus.Publishing); - expected.add(subscriber); - expected.add(PublicationStatus.Completed); - Assert.assertEquals(expected.size(), stuffHappens.size()); - for (int i = 0; i < expected.size(); i++) { - Assert.assertEquals(expected.get(i), stuffHappens.get(i)); - } - } - - public void testVetoStates() { - stuffHappens.clear(); - es.subscribe(ObjectEvent.class, subscriber); - es.subscribeVetoListener(ObjectEvent.class, new VetoEventListener() { - public boolean shouldVeto(Object event) { - return true; - } - }); - es.publish(event); - List expected = new ArrayList(); - expected.add(PublicationStatus.Initiated); - expected.add(PublicationStatus.Vetoed); - Assert.assertEquals(expected.size(), stuffHappens.size()); - for (int i = 0; i < expected.size(); i++) { - Assert.assertEquals(expected.get(i), stuffHappens.get(i)); - } - } -} diff --git a/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java b/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java index 3109681d1..3b7836df8 100644 --- a/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java +++ b/src/test/java/org/scijava/event/bushe/TopicSubscriberForTest.java @@ -4,7 +4,7 @@ * @author Michael Bushe * @since Nov 19, 2005 11:00:53 PM */ -public class TopicSubscriberForTest implements IEventTopicSubscriber { +public class TopicSubscriberForTest implements EventTopicSubscriber { private boolean throwException; private Long waitTime; private EBTestCounter testDefaultEventService; diff --git a/src/test/java/org/scijava/event/bushe/WeakClassAnnotatedEventSubscriber.java b/src/test/java/org/scijava/event/bushe/WeakClassAnnotatedEventSubscriber.java deleted file mode 100644 index 6d821a6ec..000000000 --- a/src/test/java/org/scijava/event/bushe/WeakClassAnnotatedEventSubscriber.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.scijava.event.bushe; - -import java.util.Collection; -import java.util.List; - -/** Test class for class-based subscriptions */ -public class WeakClassAnnotatedEventSubscriber { - static int timesColorChanged = 0; - static String lastCall = null; - static int timesCalled = 0; - - public static int getTimesCalled() { - return timesCalled; - } - - public static void setTimesCalled(int times) { - timesCalled = times; - } - - @EventSubscriber(eventClass = List.class, referenceStrength = ReferenceStrength.WEAK) - public void doList(Collection collection) { - timesCalled++; - } -} From 0988a1d4e34fef05c2ace8d99466b99c8fddb0c0 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 12:56:06 -0500 Subject: [PATCH 103/185] Remove org.bushe:eventbus CleanupEvent logic We do not need to monitor these events. Removing it simplifies the codebase and avoids a hack. --- .../org/scijava/event/DefaultEventBus.java | 28 --------- .../org/scijava/event/bushe/CleanupEvent.java | 62 ------------------- .../event/bushe/ThreadSafeEventService.java | 8 +-- 3 files changed, 1 insertion(+), 97 deletions(-) delete mode 100644 src/main/java/org/scijava/event/bushe/CleanupEvent.java diff --git a/src/main/java/org/scijava/event/DefaultEventBus.java b/src/main/java/org/scijava/event/DefaultEventBus.java index 365102949..9d71eb8f3 100644 --- a/src/main/java/org/scijava/event/DefaultEventBus.java +++ b/src/main/java/org/scijava/event/DefaultEventBus.java @@ -34,7 +34,6 @@ import java.util.Arrays; import java.util.List; -import org.scijava.event.bushe.CleanupEvent; import org.scijava.event.bushe.ThreadSafeEventService; import org.scijava.log.LogService; import org.scijava.service.Service; @@ -116,33 +115,6 @@ public void publishLater(final String topicName, final Object eventObj) { @Override public void publish(final Object event) { - // HACK: Work around a deadlock problem caused by ThreadSafeEventService: - - // 1) The ThreadSafeEventService superclass has a special cleanup thread - // that takes care of cleaning up stale references. Every time it runs, it - // publishes some CleanupEvents using publish(Object) to announce that this - // is occurring. Normally, such publication delegates to - // publishNow, which calls ThreadService#invoke, which calls - // EventQueue.invokeAndWait, which queues the publication for execution on - // the EDT and then blocks until publication is complete. - - // 2) When the ThreadSafeEventService publishes the CleanupEvents, it does - // so inside a synchronized block that locks on a "listenerLock" object. - - // 3) Unfortunately, since the CleanupEvent publication is merely *queued*, - // any other pending operations on the EDT happen first. If one such - // operation meanwhile calls e.g. - // ThreadSafeEventService#getSubscribers(Class), it will deadlock because - // those getter methods are also synchronized on the listenerLock object. - - // Hence, our hack workaround is to instead use publishLater for the - // CleanupEvents, since no one really cares about them anyway. ;-) - - if (event instanceof CleanupEvent) { - publishLater(event); - return; - } - publishNow(event); } diff --git a/src/main/java/org/scijava/event/bushe/CleanupEvent.java b/src/main/java/org/scijava/event/bushe/CleanupEvent.java deleted file mode 100644 index c233e1dc0..000000000 --- a/src/main/java/org/scijava/event/bushe/CleanupEvent.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Copyright 2007 Bushe Enterprises, Inc., Hopkinton, MA, USA, www.bushe.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.scijava.event.bushe; - -/** - * Published when the ThreadSafeEventService cleans up stale subscribers. - * @author Michael Bushe - */ -public class CleanupEvent { - - /** The status of the cleanup.*/ - public enum Status { - /** Timer has started the cleanup task. Will be followed by at least one more CleanupEvent.*/ - STARTING, - /** Task has determined there's cleanup to do.*/ - OVER_STOP_THRESHOLD_CLEANING_BEGUN, - /** Task has determined there's no cleanup to do.*/ - UNDER_STOP_THRESHOLD_CLEANING_CANCELLED, - /** Finished cleaning up task.*/ - FINISHED_CLEANING; - } - - private Status status; - private int totalWeakRefsAndProxies; - private Integer numStaleSubscribersCleaned; - - public CleanupEvent(Status status, int totalWeakRefsAndProxies, Integer numStaleSubscribersCleaned) { - this.status = status; - this.totalWeakRefsAndProxies = totalWeakRefsAndProxies; - this.numStaleSubscribersCleaned = numStaleSubscribersCleaned; - } - - public Status getStatus() { - return status; - } - - /** Total weak refs and ProxySubscribers subscribed. */ - public int getTotalWeakRefsAndProxies() { - return totalWeakRefsAndProxies; - } - - /** - * Null unless status is FINISHED_CLEANING. - * @return the number of stale subscribers cleaned during the cleanup run. - */ - public Integer getNumStaleSubscribersCleaned() { - return numStaleSubscribersCleaned; - } -} diff --git a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java index 685af6b42..97c4a54cc 100644 --- a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java +++ b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java @@ -122,8 +122,6 @@ * to CLEANUP_STOP_THRESHOLD_DEFAULT (100) by default. The default is overridable in the constructor or via * #setCleanupStopThreshhold(Integer). If set to null or 0, cleanup will not stop if it is ever started. *

        - * Cleanup can be monitored by subscribing to the {@link CleanupEvent} class. - *

        * All cleanup parameters are tunable "live" and checked after each subscription and after each cleanup cycle. * To make cleanup never run, set cleanupStartThreshhold to Integer.MAX_VALUE and cleanupPeriodMS to null. * To get cleanup to run continuously, set set cleanupStartThreshhold to 0 and cleanupPeriodMS to some reasonable value, @@ -137,7 +135,7 @@ * @todo (param) a JMS-like selector (can be done in base classes by implements like a commons filter * @see EventService for a complete description of the API */ -@SuppressWarnings({"unchecked", "ForLoopReplaceableByForEach"}) +@SuppressWarnings({"unchecked"}) public class ThreadSafeEventService implements EventService { public static final Integer CLEANUP_START_THRESHOLD_DEFAULT = 250; public static final Integer CLEANUP_STOP_THRESHOLD_DEFAULT = 100; @@ -2057,17 +2055,14 @@ class CleanupTimerTask extends TimerTask { @Override public void run() { synchronized(listenerLock) { - ThreadSafeEventService.this.publish(new CleanupEvent(CleanupEvent.Status.STARTING, weakRefPlusProxySubscriberCount, null)); if (weakRefPlusProxySubscriberCount <= cleanupStopThreshold) { this.cancel(); cleanupTimer = null; cleanupTimerTask = null; LOG.debug("Cancelled scheduled weak reference and proxy cleanup."); - ThreadSafeEventService.this.publish(new CleanupEvent(CleanupEvent.Status.UNDER_STOP_THRESHOLD_CLEANING_CANCELLED, weakRefPlusProxySubscriberCount, null)); return; } LOG.debug("Starting a weak reference and proxy cleanup."); - ThreadSafeEventService.this.publish(new CleanupEvent(CleanupEvent.Status.OVER_STOP_THRESHOLD_CLEANING_BEGUN, weakRefPlusProxySubscriberCount, null)); List allSubscriberMaps = new ArrayList(); allSubscriberMaps.add(subscribersByEventType); allSubscriberMaps.add(subscribersByEventClass); @@ -2093,7 +2088,6 @@ public void run() { } } } - ThreadSafeEventService.this.publish(new CleanupEvent(CleanupEvent.Status.FINISHED_CLEANING, weakRefPlusProxySubscriberCount, staleCount)); } } } From f49e711c4142c7c8da8770d9ea7e33927847a753 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 13:09:44 -0500 Subject: [PATCH 104/185] Add EventService#subscribe(EventSubscriber) method Otherwise, there is no way to register an EventSubscriber, because the DefaultEventBus is not publicly accessible. --- pom.xml | 2 +- .../org/scijava/event/DefaultEventService.java | 5 +++++ .../java/org/scijava/event/EventService.java | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d2abba36d..e6d854490 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.93.2-SNAPSHOT + 2.94.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index 074a20bad..0047c42f5 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -138,6 +138,11 @@ public List> subscribe(final Object o) { return subscribers; } + @Override + public void subscribe(final EventSubscriber subscriber) { + eventBus.subscribe(subscriber.getClass(), subscriber); + } + @Override public void unsubscribe(final Collection> subscribers) { for (final EventSubscriber subscriber : subscribers) { diff --git a/src/main/java/org/scijava/event/EventService.java b/src/main/java/org/scijava/event/EventService.java index 5c143e18d..cc9f89d17 100644 --- a/src/main/java/org/scijava/event/EventService.java +++ b/src/main/java/org/scijava/event/EventService.java @@ -125,6 +125,24 @@ public interface EventService extends SciJavaService { */ List> subscribe(Object o); + /** + * Subscribes the given {@link EventSubscriber} to its associated event class. + * Its {@link EventSubscriber#onEvent} method will be called whenever an event + * of the matching type is published. + *

        + * Important note: The event service does not keep a + * strong reference to the subscriber! If you use this method, you are also + * responsible for keeping a reference to the subscriber, or else it is likely + * to be garbage collected, and thus no longer respond to events as intended. + * One simple way to force a strong reference to exist is to add it to + * SciJava's {@link org.scijava.object.ObjectService} via + * {@link org.scijava.object.ObjectService#addObject}. + *

        + * + * @param subscriber the event subscriber to register + */ + void subscribe(EventSubscriber subscriber); + /** * Removes all the given subscribers; they will no longer be notified when * events are published. From d94ffcfc920a36d4e82bf9e0d7bc597772c7f3b5 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 14:27:08 -0500 Subject: [PATCH 105/185] Fix javadoc errors in org.bushe:eventbus code --- .../org/scijava/event/bushe/EventService.java | 193 ++++++++++++------ .../event/bushe/EventTopicSubscriber.java | 3 +- .../java/org/scijava/event/bushe/Logger.java | 9 +- .../scijava/event/bushe/SwingException.java | 10 +- .../event/bushe/ThreadSafeEventService.java | 98 ++++++--- .../event/bushe/VetoEventListener.java | 3 +- .../event/bushe/VetoTopicEventListener.java | 3 +- 7 files changed, 209 insertions(+), 110 deletions(-) diff --git a/src/main/java/org/scijava/event/bushe/EventService.java b/src/main/java/org/scijava/event/bushe/EventService.java index 6b07fb777..3a88aff2b 100644 --- a/src/main/java/org/scijava/event/bushe/EventService.java +++ b/src/main/java/org/scijava/event/bushe/EventService.java @@ -22,7 +22,7 @@ /** * The core interface. An EventService provides publish/subscribe services to a single JVM using Class-based and * String-based (i.e. "topic") publications and subscriptions. - *

        + *

        * In class-based pub/sub, {@link EventSubscriber}s subscribe to a type on an {@link EventService}, such * as the {@link org.scijava.event.bushe.EventBus}, by providing a class, interface or generic type. The EventService * notifies subscribers when objects are published on the EventService with a matching type. Full class semantics are @@ -32,14 +32,17 @@ * subscribe "exactly" using {@link #subscribeExactly(Class, EventSubscriber)} so that they are notified only if an * object of the exact class is published (and will not be notified if subclasses are published, since this would not * be "exact") - *

        + *

        + *

        * In topic-based pub/sub, an object "payload" is published on a topic name (String). {@link EventTopicSubscriber}s subscribe * to either the exact name of the topic or they may subscribe using a Regular Expression that is used to match topic * names. - *

        + *

        + *

        * See the overview for an general introduction * and package documentation for usage details and examples. - *

        + *

        + *

        * A single subscriber cannot subscribe more than once to an event or topic name. EventService implementations should * handle double-subscription requests by returning false on subscribe(). A single EventSubscriber can subscribe to more * than one event class, and a single EventTopicSubscriber can subscribe to more than one topic name or pattern. A @@ -50,15 +53,18 @@ * subclasses using subscribe() and again to a class of the same type using subscribeExactly(), this is considered two * different subscriptions and the subscriber will be called twice for the publication for a single event of the exact * type. - *

        + *

        + *

        * By default the EventService only holds WeakReferences to subscribers. If a subscriber has no references to it, then * it can be garbage collected. This avoids memory leaks in exchange for the risk of accidentally adding a listener and * have it disappear unexpectedly. If you want to subscribe a subscriber that will have no other reference to it, then * use one of the subscribeStrongly() methods, which will prevent garbage collection. - *

        + *

        + *

        * Unless garbage collected, EventSubscribers will remain subscribed until they are passed to one of the unsubscribe() * methods with the event class or topic name to which there are subscribed. - *

        + *

        + *

        * Subscribers are called in the order in which they are subscribed by default (FIFO), unless subscribers implement * {@link Prioritized}. Those subscribers that implement Prioritized and return a negative priority are moved to the * front of the list (the more negative, the more to the front). Those subscribers that implement Prioritized and return @@ -71,16 +77,19 @@ * the order of priority, no matter the call or the resulting mix of subscribers. All ordering rules apply to all * types subscribers: class, topic, pattern, veto, etc. For Swing users, note that FIFO is * the opposite of Swing, where event listeners are called in the reverse order of when they were subscribed (FILO). - *

        + *

        + *

        * Publication on a class or topic name can be vetoed by a {@link VetoEventListener}. All VetoEventListeners are checked * before any EventSubscribers or EventTopicSubscribers are called. This is unlike the JavaBean's * VetoPropertyEventListener which can leave side effects and half-propogated events. VetoEventListeners are subscribed * in the same manner as EventSubscribers and EventTopicSubscribers. - *

        + *

        + *

        * The state of a published event can be tracked if an event or a topic's payload object implements the * {@link org.scijava.event.bushe.PublicationStatus} interface. EventServices are required to set such objects' * {@link org.scijava.event.bushe.PublicationStatus} at the appropriate times during publication. - *

        + *

        +*

        * This simple example prints "Hello World" *

          * EventService eventService = new ThreadSafeEventService();
        @@ -94,7 +103,8 @@
          * eventService.publish("Hello", "World");
          * System.out.println(subscriber + " Since the reference is used after it is subscribed, it doesn't get garbage collected, this is not necessary if you use subscribeStrongly()");
          * 
        - *

        + *

        + *

        * Events and/or topic data can be cached, but are not by default. To cache events or topic data, call * {@link #setDefaultCacheSizePerClassOrTopic(int)}, {@link #setCacheSizeForEventClass(Class, int)}, or * {@link #setCacheSizeForTopic(String, int)}, {@link #setCacheSizeForTopic(Pattern, int)}. Retrieve cached values @@ -104,9 +114,11 @@ * the EDT in a single-threaded manner). In multithreaded applications, you never know if your subscriber has handled * an event while it was being subscribed (before the subscribe() method returned) that is newer or older than the * retrieved cached value (taken before or after subscribe() respectively). - *

        + *

        + *

        * There is nothing special about the term "Event," this could just as easily be called a "Message" Service, this term * is already taken by the JMS, which is similar, but is used across processes and networks. + *

        * * @author Michael Bushe michael@bushe.com * @see {@link ThreadSafeEventService} for the default implementation @@ -139,7 +151,7 @@ interface EventService { * trades.add(trade); * EventBus.publish(publishingTypeReference.getType(), trades); *
    8. - *

      + *

      * @param genericType the generified type of the published object. * @param event The event that occurred */ @@ -157,20 +169,25 @@ interface EventService { /** * Subscribes an EventSubscriber to the publication of objects matching a type. Only a WeakReference to * the subscriber is held by the EventService. - *

      + *

      + *

      * Subscribing to a class means the subscriber will be called when objects of that class are published, when * objects of subclasses of the class are published, when objects implementing any of the interfaces of the * class are published, or when generic types are published with the class' raw type. - *

      + *

      + *

      * Subscription is weak by default to avoid having to call unsubscribe(), and to avoid the memory leaks that would * occur if unsubscribe was not called. The service will respect the WeakReference semantics. In other words, if * the subscriber has not been garbage collected, then onEvent(Object) will be called normally. If the hard * reference has been garbage collected, the service will unsubscribe it's WeakReference. - *

      + *

      + *

      * It's allowable to call unsubscribe() with the same EventSubscriber hard reference to stop a subscription * immediately. - *

      + *

      + *

      * The service will create the WeakReference on behalf of the caller. + *

      * * @param eventClass the class of published objects to subscriber listen to * @param subscriber The subscriber that will accept the events of the event class when published. @@ -197,7 +214,7 @@ interface EventService { * trades.add(trade); * EventBus.publish(publishingTypeReference.getType(), trades); *
      - *

      + *

      * @param type the generic type to subscribe to * @param subscriber the subscriber to the type * @return true if a new subscription is made, false if it already existed @@ -207,16 +224,19 @@ interface EventService { /** * Subscribes an EventSubscriber to the publication of objects exactly matching a type. Only a WeakReference * to the subscriber is held by the EventService. - *

      + *

      * Subscription is weak by default to avoid having to call unsubscribe(), and to avoid the memory leaks that would * occur if unsubscribe was not called. The service will respect the WeakReference semantics. In other words, if * the subscriber has not been garbage collected, then the onEvent will be called normally. If the hard reference * has been garbage collected, the service will unsubscribe it's WeakReference. - *

      + *

      + *

      * It's allowable to call unsubscribe() with the same EventSubscriber hard reference to stop a subscription * immediately. - *

      + *

      + *

      * The service will create the WeakReference on behalf of the caller. + *

      * * @param eventClass the class of published objects to listen to * @param subscriber The subscriber that will accept the events when published. @@ -228,15 +248,16 @@ interface EventService { /** * Subscribes an EventTopicSubscriber to the publication of a topic name. Only a WeakReference * to the subscriber is held by the EventService. - *

      + *

      * Subscription is weak by default to avoid having to call unsubscribe(), and to avoid the memory leaks that would * occur if unsubscribe was not called. The service will respect the WeakReference semantics. In other words, if * the subscriber has not been garbage collected, then the onEvent will be called normally. If the hard reference * has been garbage collected, the service will unsubscribe it's WeakReference. - *

      + *

      + *

      * It's allowable to call unsubscribe() with the same EventSubscriber hard reference to stop a subscription * immediately. - *

      + *

      * * @param topic the name of the topic listened to * @param subscriber The topic subscriber that will accept the events when published. @@ -248,15 +269,16 @@ interface EventService { /** * Subscribes an EventSubscriber to the publication of all the topic names that match a RegEx Pattern. Only a * WeakReference to the subscriber is held by the EventService. - *

      + *

      * Subscription is weak by default to avoid having to call unsubscribe(), and to avoid the memory leaks that would * occur if unsubscribe was not called. The service will respect the WeakReference semantics. In other words, if * the subscriber has not been garbage collected, then the onEvent will be called normally. If the hard reference * has been garbage collected, the service will unsubscribe it's WeakReference. - *

      + *

      + *

      * It's allowable to call unsubscribe() with the same EventSubscriber hard reference to stop a subscription * immediately. - *

      + *

      * * @param topicPattern pattern that matches to the name of the topic published to * @param subscriber The topic subscriber that will accept the events when published. @@ -267,11 +289,13 @@ interface EventService { /** * Subscribes an EventSubscriber to the publication of objects matching a type. - *

      + *

      * The semantics are the same as {@link #subscribe(Class, EventSubscriber)}, except that the EventService holds * a regularly reference, not a WeakReference. - *

      + *

      + *

      * The subscriber will remain subscribed until {@link #unsubscribe(Class,EventSubscriber)} is called. + *

      * * @param eventClass the class of published objects to listen to * @param subscriber The subscriber that will accept the events when published. @@ -282,11 +306,13 @@ interface EventService { /** * Subscribes an EventSubscriber to the publication of objects matching a type exactly. - *

      + *

      * The semantics are the same as {@link #subscribeExactly(Class, EventSubscriber)}, except that the EventService * holds a regularly reference, not a WeakReference. - *

      + *

      + *

      * The subscriber will remain subscribed until {@link #unsubscribe(Class,EventSubscriber)} is called. + *

      * * @param eventClass the class of published objects to listen to * @param subscriber The subscriber that will accept the events when published. @@ -297,11 +323,13 @@ interface EventService { /** * Subscribes a subscriber to an event topic name. - *

      + *

      * The semantics are the same as {@link #subscribe(String, EventTopicSubscriber)}, except that the EventService * holds a regularly reference, not a WeakReference. - *

      + *

      + *

      * The subscriber will remain subscribed until {@link #unsubscribe(String,EventTopicSubscriber)} is called. + *

      * * @param topic the name of the topic listened to * @param subscriber The topic subscriber that will accept the events when published. @@ -312,11 +340,13 @@ interface EventService { /** * Subscribes a subscriber to all the event topic names that match a RegEx expression. - *

      + *

      * The semantics are the same as {@link #subscribe(java.util.regex.Pattern, EventTopicSubscriber)}, except that the * EventService holds a regularly reference, not a WeakReference. - *

      + *

      + *

      * The subscriber will remain subscribed until {@link #unsubscribe(String,EventTopicSubscriber)} is called. + *

      * * @param topicPattern the name of the topic listened to * @param subscriber The topic subscriber that will accept the events when published. @@ -368,16 +398,19 @@ interface EventService { /** * Subscribes a VetoEventListener to publication of event matching a class. Only a WeakReference to the * VetoEventListener is held by the EventService. - *

      + *

      * Use this method to avoid having to call unsubscribe(), though with care since garbage collection semantics is * indeterminate. The service will respect the WeakReference semantics. In other words, if the vetoListener has not * been garbage collected, then the onEvent will be called normally. If the hard reference has been garbage * collected, the service will unsubscribe it's WeakReference. - *

      + *

      + *

      * It's allowable to call unsubscribe() with the same VetoEventListener hard reference to stop a subscription * immediately. - *

      + *

      + *

      * The service will create the WeakReference on behalf of the caller. + *

      * * @param eventClass the class of published objects that can be vetoed * @param vetoListener The VetoEventListener that can determine whether an event is published. @@ -389,16 +422,19 @@ interface EventService { /** * Subscribes a VetoEventListener to publication of an exact event class. Only a WeakReference to the * VetoEventListener is held by the EventService. - *

      + *

      * Use this method to avoid having to call unsubscribe(), though with care since garbage collection semantics is * indeterminate. The service will respect the WeakReference semantics. In other words, if the vetoListener has not * been garbage collected, then the onEvent will be called normally. If the hard reference has been garbage * collected, the service will unsubscribe it's WeakReference. - *

      + *

      + *

      * It's allowable to call unsubscribe() with the same VetoEventListener hard reference to stop a subscription * immediately. - *

      + *

      + *

      * The service will create the WeakReference on behalf of the caller. + *

      * * @param eventClass the class of published objects that can be vetoed * @param vetoListener The vetoListener that can determine whether an event is published. @@ -432,9 +468,10 @@ interface EventService { /** * Subscribes a VetoEventListener for an event class and its subclasses. Only a WeakReference to the * VetoEventListener is held by the EventService. - *

      + *

      * The VetoEventListener will remain subscribed until {@link #unsubscribeVetoListener(Class,VetoEventListener)} is * called. + *

      * * @param eventClass the class of published objects to listen to * @param vetoListener The vetoListener that will accept the events when published. @@ -445,9 +482,10 @@ interface EventService { /** * Subscribes a VetoEventListener for an event class (but not its subclasses). - *

      + *

      * The VetoEventListener will remain subscribed until {@link #unsubscribeVetoListener(Class,VetoEventListener)} is * called. + *

      * * @param eventClass the class of published objects to listen to * @param vetoListener The vetoListener that will accept the events when published. @@ -458,9 +496,10 @@ interface EventService { /** * Subscribes a VetoEventListener to a topic name. - *

      + *

      * The VetoEventListener will remain subscribed until {@link #unsubscribeVetoListener(String,VetoTopicEventListener)} is * called. + *

      * * @param topic the name of the topic listened to * @param vetoListener The topic vetoListener that will accept or reject publication. @@ -473,9 +512,10 @@ interface EventService { /** * Subscribes a VetoTopicEventListener to a set of topics that match a RegEx expression. - *

      + *

      * The VetoEventListener will remain subscribed until {@link #unsubscribeVetoListener(Pattern,VetoTopicEventListener)} is * called. + *

      * * @param topicPattern the RegEx pattern that matches the name of the topics listened to * @param vetoListener The topic vetoListener that will accept or reject publication. @@ -677,13 +717,15 @@ interface EventService { /** * Sets the default cache size for each kind of event, default is 0 (no caching). - *

      + *

      * If this value is set to a positive number, then when an event is published, the EventService caches the event or * topic payload data for later retrieval. This allows subscribers to find out what has most recently happened * before they subscribed. The cached event(s) are returned from #getLastEvent(Class), #getLastTopicData(String), * #getCachedEvents(Class), or #getCachedTopicData(String) - *

      + *

      + *

      * The default can be overridden on a by-event-class or by-topic basis. + *

      * * @param defaultCacheSizePerClassOrTopic the cache size per event */ @@ -697,17 +739,20 @@ interface EventService { /** * Set the number of events cached for a particular class of event. By default, no events are cached. - *

      + *

      * This overrides any setting for the DefaultCacheSizePerClassOrTopic. - *

      + *

      + *

      * Class hierarchy semantics are respected. That is, if there are three events, A, X and Y, and X and Y are both * derived from A, then setting the cache size for A applies the cache size for all three. Setting the cache size * for X applies to X and leaves the settings for A and Y in tact. Interfaces can be passed to this method, but they * only take effect if the cache size of a class or it's superclasses has been set. Just like Class.getInterfaces(), * if multiple cache sizes are set, the interface names declared earliest in the implements clause of the eventClass * takes effect. - *

      + *

      + *

      * The cache for an event is not adjusted until the next event of that class is published. + *

      * * @param eventClass the class of event * @param cacheSize the number of published events to cache for this event @@ -716,9 +761,10 @@ interface EventService { /** * Returns the number of events cached for a particular class of event. By default, no events are cached. - *

      + *

      * This result is computed for a particular class from the values passed to #setCacheSizeForEventClass(Class, int), * and respects the class hierarchy. + *

      * * @param eventClass the class of event * @@ -730,12 +776,15 @@ interface EventService { /** * Set the number of published data objects cached for a particular event topic. By default, no data are cached. - *

      + *

      * This overrides any setting for the DefaultCacheSizePerClassOrTopic. - *

      + *

      + *

      * Exact topic names take precedence over pattern matching. - *

      + *

      + *

      * The cache for a topic is not adjusted until the next publication on that topic. + *

      * * @param topicName the topic name * @param cacheSize the number of published data Objects to cache for this topic @@ -744,12 +793,15 @@ interface EventService { /** * Set the number of published data objects cached for a topics matching a pattern. By default, no data are cached. - *

      + *

      * This overrides any setting for the DefaultCacheSizePerClassOrTopic. - *

      + *

      + *

      * Exact topic names take precedence over pattern matching. - *

      + *

      + *

      * The cache for a topic is not adjusted until the next publication on that topic. + *

      * * @param pattern the pattern matching topic names * @param cacheSize the number of data Objects to cache for this topic @@ -758,9 +810,10 @@ interface EventService { /** * Returns the number of cached data objects published on a particular topic. - *

      + *

      * This result is computed for a particular class from the values passed to #setCacheSizeForEventClass(Class, int), * and respects the class hierarchy. + *

      * * @param topic the topic name * @@ -830,9 +883,10 @@ interface EventService { /** * Stop a subscription for an object that is subscribed with a ProxySubscriber. - *

      + *

      * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will * still unsubscribe the object. + *

      * * @param eventClass class this object is subscribed to by proxy * @param subscribedByProxy object subscribed by proxy @@ -842,9 +896,10 @@ interface EventService { /** * Stop a subscription for an object that is subscribed exactly with a ProxySubscriber. - *

      + *

      * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will * still unsubscribe the object. + *

      * * @param eventClass class this object is subscribed to by proxy * @param subscribedByProxy object subscribed by proxy @@ -854,9 +909,10 @@ interface EventService { /** * Stop a subscription for an object that is subscribed to a topic with a ProxySubscriber. - *

      + *

      * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will * still unsubscribe the object. + *

      * * @param topic the topic this object is subscribed to by proxy * @param subscribedByProxy object subscribed by proxy @@ -867,9 +923,10 @@ interface EventService { /** * When using annotations, an object may be subscribed by proxy. This unsubscribe method will unsubscribe an object * that is subscribed with a ProxySubscriber. - *

      + *

      * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will * still unsubscribe the object. + *

      * * @param pattern the RegEx expression this object is subscribed to by proxy * @param subscribedByProxy object subscribed by proxy @@ -879,9 +936,10 @@ interface EventService { /** * Stop a veto subscription for an object that is subscribed with a ProxySubscriber. - *

      + *

      * If an object is subscribed by proxy and it implements VetoSubscriber, then the normal unsubscribe methods will * still unsubscribe the object. + *

      * * @param eventClass class this object is subscribed to by proxy * @param subscribedByProxy object subscribed by proxy @@ -891,9 +949,10 @@ interface EventService { /** * Stop a veto subscription for an object that is subscribed exactly with a ProxySubscriber. - *

      + *

      * If an object is subscribed by proxy and it implements VetoSubscriber, then the normal unsubscribe methods will * still unsubscribe the object. + *

      * * @param eventClass class this object is subscribed to by proxy * @param subscribedByProxy object subscribed by proxy @@ -903,9 +962,10 @@ interface EventService { /** * Stop a veto subscription for an object that is subscribed to a topic with a ProxySubscriber. - *

      + *

      * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will * still unsubscribe the object. + *

      * * @param topic the topic this object is subscribed to by proxy * @param subscribedByProxy object subscribed by proxy @@ -916,9 +976,10 @@ interface EventService { /** * When using annotations, an object may be subscribed by proxy. This unsubscribe method will unsubscribe an object * that is subscribed with a ProxySubscriber. - *

      + *

      * If an object is subscribed by proxy and it implements EventSubscriber, then the normal unsubscribe methods will * still unsubscribe the object. + *

      * * @param pattern the RegEx expression this object is subscribed to by proxy * @param subscribedByProxy object subscribed by proxy diff --git a/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java index 54510621d..37bf575e4 100644 --- a/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java +++ b/src/main/java/org/scijava/event/bushe/EventTopicSubscriber.java @@ -24,12 +24,13 @@ interface EventTopicSubscriber { /** * Handle an event published on a topic. - *

      + *

      * The EventService calls this method on each publication on a matching topic name passed to one of the * EventService's topic-based subscribe methods, specifically, {@link EventService#subscribe(String, *EventTopicSubscriber)} {@link EventService#subscribe(java.util.regex.Pattern,EventTopicSubscriber)} {@link * EventService#subscribeStrongly(String,EventTopicSubscriber)} and {@link EventService#subscribeStrongly(java.util.regex.Pattern, *EventTopicSubscriber)}. + *

      * * @param topic the name of the topic published on * @param data the data object published on the topic diff --git a/src/main/java/org/scijava/event/bushe/Logger.java b/src/main/java/org/scijava/event/bushe/Logger.java index bc7476d31..f2de3981b 100644 --- a/src/main/java/org/scijava/event/bushe/Logger.java +++ b/src/main/java/org/scijava/event/bushe/Logger.java @@ -7,17 +7,20 @@ /** * Central Logging class. Shields code from Logging implementation. - *

      + *

      * The EventBus allows operation in two modes - using java.util.logging so that * the EventBus can be deployed in its own jar or using any logging system supported * by apache commons logging, which of course requires other jars. - *

      + *

      + *

      * The EventBus logging uses the names of its classes as the log, primarily * "org.scijava.event.bushe.EventService". This aids in debugging which subscription and publication issues. - *

      + *

      + *

      * Implementation note: There are no imports in this class to make things * explicit. There is also no explicit use of classes outside java.util, * anything else is used by reflection to avoid NoClassDefFound errors on class load. + *

      */ class Logger { private java.util.logging.Logger utilLogger; diff --git a/src/main/java/org/scijava/event/bushe/SwingException.java b/src/main/java/org/scijava/event/bushe/SwingException.java index f46dd321e..d236c2121 100644 --- a/src/main/java/org/scijava/event/bushe/SwingException.java +++ b/src/main/java/org/scijava/event/bushe/SwingException.java @@ -21,18 +21,21 @@ /** * Aids in troubleshooting Swing application exceptions or any exception where the caller's stack may not be the * exception stack (such as producer-consumer patterns that cross threads). - *

      + *

      * Swing exceptions usually occur on the Swing Event Dispatch Thread, and often occur when code puts events on the EDT. * This code is often in a non-EDT thread such as a thread that is receiving data from a server. If the non-EDT threads * puts a call on the EDT and that EDT call causes and exception, the stack trace of the exception is lost, and it often * difficult or impossible to determine where the non-EDT call came from. - *

      + *

      + *

      * This Exception class is used to handle exceptions that occur when events are posted on the Swing EDT or occur on * another thread from the Swing EDT. It includes a "swing" call stack to record from where the event occurred, and * overrides so that the exception and the swing calling stack print nicely to logs. - *

      + *

      + *

      * The swing calling stack is different from the cause of the exception since it is gathered before the exception occurs * in a different stack from the cause and used after the exception in a new thread occurs. + *

      * * @author Michael Bushe michael@bushe.com * @todo in SwingUtils, make an invokeLater() method that saves the calling stack and catches all exceptions from a @@ -66,7 +69,6 @@ public SwingException(String message, Throwable cause) { /** * Preferred constructor. - *

      * * @param message The message of exception * @param cause The cause of the exception in the same call stack diff --git a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java index 97c4a54cc..10395de4d 100644 --- a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java +++ b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java @@ -38,20 +38,23 @@ /** * A thread-safe EventService implementation. *

      Multithreading

      - *

      + *

      * This implementation is not Swing thread-safe. If publication occurs on a thread other than the Swing * EventDispatchThread, subscribers will receive the event on the calling thread, and not the EDT. Swing components * should use the SwingEventService instead, which is the implementation used by the EventBus. - *

      + *

      + *

      * Two threads may be accessing the ThreadSafeEventService at the same time, one unsubscribing a * listener for topic "A" and the other publishing on topic "A". If the unsubscribing thread gets the lock first, * then it is unsubscribed, end of story. If the publisher gets the lock first, then a snapshot copy of the current * subscribers is made during the publication, the lock is released and the subscribers are called. Between the time * the lock is released and the time that the listener is called, the unsubscribing thread can unsubscribe, resulting * in an unsubscribed object receiving notification of the event after it was unsubscribed (but just once). - *

      + *

      + *

      * On event publication, subscribers are called in the order in which they subscribed. - *

      + *

      + *

      * Events and/or topic data can be cached, but are not by default. To cache events or topic data, call * {@link #setDefaultCacheSizePerClassOrTopic(int)}, {@link #setCacheSizeForEventClass(Class, int)}, or * {@link #setCacheSizeForTopic(String, int)}, {@link #setCacheSizeForTopic(Pattern, int)}. Retrieve cached values @@ -61,29 +64,33 @@ * Swing applications since both happen on the EDT in a single-threaded manner). In multithreaded applications, you * never know if your subscriber has handled an event while it was being subscribed (before the subscribe() method * returned) that is newer or older than the retrieved cached value (taken before or after subscribe() respectively). - *

      + *

      + *

      * To deal with subscribers that take too long (a concern in Swing applications), the EventService can be made to issue * {@link SubscriberTimingEvent}s when subscribers exceed a certain time. This does not interrupt subscriber processing * and is published after the subscriber finishes. The service can log a warning for SubscriberTimingEvents, see the * constructor {@link ThreadSafeEventService (long, boolean)}. The timing is checked for veto subscribers too. - *

      + *

      *

      Logging

      - *

      + *

      * All logging goes through the {@link Logger}. The Logger is configurable and supports multiple logging systems. - *

      + *

      + *

      * Exceptions are logged by default, override {@link #handleException(String,Object,String,Object,Throwable, * StackTraceElement[],String)} to handleException exceptions in another way. Each call to a subscriber is wrapped in * a try block to ensure one listener does not interfere with another. - *

      + *

      *

      Cleanup of Stale WeakReferences and Stale Annotation Proxies

      - *

      + *

      * The EventService may need to clean up stale WeakReferences and ProxySubscribers created for EventBus annotations. (Aside: EventBus * Annotations are handled by the creation of proxies to the annotated objects. Since the annotations create weak references * by default, annotation proxies must held strongly by the EventService, otherwise the proxy is garbage collected.) When * a WeakReference's referent or an ProxySubscriber's proxiedObject (the annotated object) is claimed by the garbage collector, * the EventService still holds onto the actual WeakReference or ProxySubscriber subscribed to the EventService (which are pretty tiny). - *

      + *

      + *

      * There are two ways that these stale WeakReferences and ProxySubscribers are cleaned up. + *

      *
        *
      1. On every publish, subscribe and unsubscribe, every subscriber and veto subscriber to a class or topic is checked to see * if it is a stale WeakReference or a stale ProxySubscriber (one whose getProxySubscriber() returns null). If the subscriber @@ -95,6 +102,7 @@ * of the cleanup thread follows. *
      *

      The Cleanup Thread

      + *

      * If a topic or class is never published to again, WeakReferences and ProxySubscribers can be left behind if they * are not cleaned up. To prevent loitering stale subscribers, the ThreadSafeEventService may periodically run through * all the EventSubscribers and VetoSubscribers for all topics and classes and clean up stale proxies. Proxies for @@ -103,33 +111,38 @@ * one caveat: If getProxiedSubscriber() returns null, even for a ProxySubscriber with a STRONG reference strength, that proxy * is cleaned up as it is assumed it is stale or just wrong. This would not occur normally in EventBus usage, but only * if someone is implementing their own custom ProxySubscriber and/or AnnotationProcessor.) - *

      + *

      + *

      * Cleanup is pretty rare in general. Not only are stale subscribers cleaned up with regular usage, stale * subscribers on abandoned topics and classes do not take up a lot of memory, hence, they are allowed to build up to a certain degree. * Cleanup does not occur until the number of WeakReferences and SubscriptionsProxy's with WeakReference strength * subscribed to an EventService for all the EventService's subscriptions in total exceed the cleanupStartThreshhold, * which is set to CLEANUP_START_THRESHOLD_DEFAULT (500) by default. The default is overridable in the constructor * or via #setCleanupStartThreshhold(Integer). If set to null, cleanup will never start. - *

      + *

      + *

      * Once the cleanup start threshold is exceeded, a java.util.Timer is started to clean up stale subscribers periodically * in another thread. The timer will fire every cleanupPeriodMS milliseconds, which is set to the * CLEANUP_PERIOD_MS_DEFAULT (20 minutes) by default. The default is overridable in the constructor or * via #setCleanupPeriodMS(Integer). If set to null, cleanup will not start. This is implemented with a java.util.Timer, * so Timer's warnings apply - setting this too low will cause cleanups to bunch up and hog the cleanup thread. - *

      + *

      + *

      * After a cleanup cycle completes, if the number of stale subscribers falls at or below the cleanupStopThreshhold * cleanup stops until the cleanupStartThreshhold is exceeded again. The cleanupStopThreshhold is set * to CLEANUP_STOP_THRESHOLD_DEFAULT (100) by default. The default is overridable in the constructor or via * #setCleanupStopThreshhold(Integer). If set to null or 0, cleanup will not stop if it is ever started. - *

      + *

      + *

      * All cleanup parameters are tunable "live" and checked after each subscription and after each cleanup cycle. * To make cleanup never run, set cleanupStartThreshhold to Integer.MAX_VALUE and cleanupPeriodMS to null. * To get cleanup to run continuously, set set cleanupStartThreshhold to 0 and cleanupPeriodMS to some reasonable value, * perhaps 1000 (1 second) or so (not recommended, cleanup is conducted with regular usage and the cleanup thread is * rarely created or invoked). - *

      + *

      + *

      * Cleanup is not run in a daemon thread, and thus will not stop the JVM from exiting. - *

      + *

      * * @author Michael Bushe michael@bushe.com * @todo (param) a JMS-like selector (can be done in base classes by implements like a commons filter @@ -557,8 +570,9 @@ protected boolean subscribeVetoListener(final Object subscription, final Map vet * All subscribe methods call this method, including veto subscriptions. * Extending classes only have to override this method to subscribe all * subscriber subscriptions. - *

      + *

      * Overriding this method is only for the adventurous. This basically gives you just enough rope to hang yourself. + *

      * * @param classTopicOrPatternWrapper the topic String, event Class, or PatternWrapper to subscribe to * @param subscriberMap the internal map of subscribers to use (by topic or class) @@ -1066,8 +1080,9 @@ private void logEvent(Object event, String topic, Object eventObj) { /** * Adds an event to the event cache, if appropriate. This method is called just before publication to listeners, * after the event passes any veto listeners. - *

      + *

      * Using protected visibility to open the caching to other implementations. + *

      * * @param event the event about to be published, null if topic is non-null * @param topic the topic about to be published to, null if the event is non-null @@ -1595,13 +1610,15 @@ private List createCopyOfContentsRemoveWeakRefs(Collection subscribersOrVetoList /** * Sets the default cache size for each kind of event, default is 0 (no caching). - *

      + *

      * If this value is set to a positive number, then when an event is published, the EventService caches the event or * topic payload data for later retrieval. This allows subscribers to find out what has most recently happened * before they subscribed. The cached event(s) are returned from #getLastEvent(Class), #getLastTopicData(String), * #getCachedEvents(Class), or #getCachedTopicData(String) - *

      + *

      + *

      * The default can be overridden on a by-event-class or by-topic basis. + *

      * * @param defaultCacheSizePerClassOrTopic */ @@ -1620,17 +1637,20 @@ public int getDefaultCacheSizePerClassOrTopic() { /** * Set the number of events cached for a particular class of event. By default, no events are cached. - *

      + *

      * This overrides any setting for the DefaultCacheSizePerClassOrTopic. - *

      + *

      + *

      * Class hierarchy semantics are respected. That is, if there are three events, A, X and Y, and X and Y are both * derived from A, then setting the cache size for A applies the cache size for all three. Setting the cache size * for X applies to X and leaves the settings for A and Y in tact. Interfaces can be passed to this method, but they * only take effect if the cache size of a class or it's superclasses has been set. Just like Class.getInterfaces(), * if multiple cache sizes are set, the interface names declared earliest in the implements clause of the eventClass * takes effect. - *

      + *

      + *

      * The cache for an event is not adjusted until the next event of that class is published. + *

      * * @param eventClass the class of event * @param cacheSize the number of published events to cache for this event @@ -1647,9 +1667,10 @@ public void setCacheSizeForEventClass(Class eventClass, int cacheSize) { /** * Returns the number of events cached for a particular class of event. By default, no events are cached. - *

      + *

      * This result is computed for a particular class from the values passed to #setCacheSizeForEventClass(Class, int), * and respects the class hierarchy. + *

      * * @param eventClass the class of event * @@ -1706,12 +1727,15 @@ public int getCacheSizeForEventClass(Class eventClass) { /** * Set the number of published data objects cached for a particular event topic. By default, no caching is done. - *

      + *

      * This overrides any setting for the DefaultCacheSizePerClassOrTopic. - *

      + *

      + *

      * Settings for exact topic names take precedence over pattern matching. - *

      + *

      + *

      * The cache for a topic is not adjusted until the next publication on that topic. + *

      * * @param topicName the topic name * @param cacheSize the number of published data Objects to cache for this topic @@ -1728,13 +1752,16 @@ public void setCacheSizeForTopic(String topicName, int cacheSize) { /** * Set the number of published data objects cached for topics matching a pattern. By default, caching is done. - *

      + *

      * This overrides any setting for the DefaultCacheSizePerClassOrTopic. - *

      + *

      + *

      * Settings for exact topic names take precedence over pattern matching. If a topic matches the cache settings for * more than one pattern, the cache size chosen is an undetermined one from one of the matched pattern settings. - *

      + *

      + *

      * The cache for a topic is not adjusted until the next publication on that topic. + *

      * * @param pattern the pattern matching topic names * @param cacheSize the number of data Objects to cache for this topic @@ -1752,9 +1779,10 @@ public void setCacheSizeForTopic(Pattern pattern, int cacheSize) { /** * Returns the number of cached data objects published on a particular topic. By default, no caching is performed. - *

      + *

      * This result is computed for a particular topic from the values passed to #setCacheSizeForTopic(String, int) and * #setCacheSizeForTopic(Pattern, int). + *

      * * @param topic the topic name * @@ -1971,17 +1999,19 @@ protected void handleException(final String action, final Object event, final St /** * Unsubscribe a subscriber if it is a stale ProxySubscriber. Used during subscribe() and * in the cleanup Timer. See the class javadoc. - *

      + *

      * Not private since I don't claim I'm smart enough to anticipate all needs, but I * am smart enough to doc the rules you must follow to override this method. Those * rules may change (changes will be doc'ed), override at your own risk. - *

      + *

      + *

      * Overriders MUST call iterator.remove() to unsubscribe the proxy if the subscriber is * a ProxySubscriber and is stale and should be cleaned up. If the ProxySubscriber * is unsubscribed, then implementers MUST also call proxyUnsubscribed() on the subscriber. * Overriders MUST also remove the proxy from the weakProxySubscriber list by calling * removeStaleProxyFromList. Method assumes caller is holding the listenerList * lock (else how can you pass the iterator?). + *

      * @param iterator current iterator * @param existingSubscriber the current value of the iterator * @return the real value of the param, or the proxied subscriber of the param if diff --git a/src/main/java/org/scijava/event/bushe/VetoEventListener.java b/src/main/java/org/scijava/event/bushe/VetoEventListener.java index 0c20a3c4f..4b377c1c1 100644 --- a/src/main/java/org/scijava/event/bushe/VetoEventListener.java +++ b/src/main/java/org/scijava/event/bushe/VetoEventListener.java @@ -24,11 +24,12 @@ interface VetoEventListener { /** * Determine whether an event should be vetoed or published. - *

      + *

      * The EventService calls this method before class-based publication of objects. If any of the * VetoEventListeners return true, then none of the subscribers for that event are called.

      Prerequisite: * VetoEventListener has to be subscribed with the EventService for the event object's class.

      Guaranteed to be * called in the SwingEventThread when using the SwingEventService (EventBus). See {@link EventService}

      + *

      * * @param event The event object to veto or allow to be published. * diff --git a/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java b/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java index a1dd81a80..f44d9693a 100644 --- a/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java +++ b/src/main/java/org/scijava/event/bushe/VetoTopicEventListener.java @@ -9,11 +9,12 @@ interface VetoTopicEventListener { /** * Determine whether a topic publication should be vetoed or allowed. - *

      + *

      * The EventService calls this method before publication of on a topic name. If any of the * VetoTopicEventListeners return true, then none of the subscribers to that topic are called.

      Prerequisite: * VetoTopicEventListener has to be subscribed with the EventService for the topic name.

      Guaranteed to be * called in the SwingEventThread when using the SwingEventService (EventBus). See {@link EventService}

      + *

      * * @param topic The topic name the data object is published on. * @param data The data object being published on the topic. From da1841da1e9c649b0adc502ec494d86a238fa4c2 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 14:29:03 -0500 Subject: [PATCH 106/185] Add EventBus to the NOTICE of third-party code --- NOTICE.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NOTICE.txt b/NOTICE.txt index 78b8ce335..5b605b01d 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1,7 +1,8 @@ This project contains code adapted from Apache Commons Lang (https://commons.apache.org/proper/commons-lang/) version 3.4, as well as GenTyRef (https://github.com/coekie/gentyref) version 1.1.0, -both of which are licensed under the Apache 2.0 license, as follows: +and EventBus (https://github.com/michaelbushe/EventBus) version 1.4, +each of which is licensed under the Apache 2.0 license, as follows: Apache License Version 2.0, January 2004 From 86abfc09d5734d323fc2f263a0570b3e4bc580ab Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 14:40:26 -0500 Subject: [PATCH 107/185] Fix more javadoc errors --- src/main/java/org/scijava/event/bushe/EventService.java | 5 ++--- .../java/org/scijava/event/bushe/SwingException.java | 2 -- .../org/scijava/event/bushe/ThreadSafeEventService.java | 9 +-------- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/scijava/event/bushe/EventService.java b/src/main/java/org/scijava/event/bushe/EventService.java index 3a88aff2b..c2d41e9bb 100644 --- a/src/main/java/org/scijava/event/bushe/EventService.java +++ b/src/main/java/org/scijava/event/bushe/EventService.java @@ -139,6 +139,7 @@ interface EventService { *

      * Due to generic type erasure, the type must be supplied by the caller. You can get a declared object's * type by using the {@link org.scijava.event.bushe.TypeReference} class. For Example: + *

      *
           * TypeReference<List<Trade>> subscribingTypeReference = new TypeReference<List<Trade>>(){};
           * EventBus.subscribe(subscribingTypeReference.getType(), mySubscriber);
      @@ -151,7 +152,6 @@ interface EventService {
           * trades.add(trade);
           * EventBus.publish(publishingTypeReference.getType(), trades);
           * 
      - *

      * @param genericType the generified type of the published object. * @param event The event that occurred */ @@ -169,7 +169,6 @@ interface EventService { /** * Subscribes an EventSubscriber to the publication of objects matching a type. Only a WeakReference to * the subscriber is held by the EventService. - *

      *

      * Subscribing to a class means the subscriber will be called when objects of that class are published, when * objects of subclasses of the class are published, when objects implementing any of the interfaces of the @@ -202,6 +201,7 @@ interface EventService { *

      * Due to generic type erasure, the type must be supplied by the publisher. You can get a declared object's * type by using the {@link org.scijava.event.bushe.TypeReference} class. For Example: + *

      *
          * TypeReference<List<Trade>> subscribingTypeReference = new TypeReference<List<Trade>>(){};
          * EventBus.subscribe(subscribingTypeReference.getType(), mySubscriber);
      @@ -214,7 +214,6 @@ interface EventService {
          * trades.add(trade);
          * EventBus.publish(publishingTypeReference.getType(), trades);
          * 
      - *

      * @param type the generic type to subscribe to * @param subscriber the subscriber to the type * @return true if a new subscription is made, false if it already existed diff --git a/src/main/java/org/scijava/event/bushe/SwingException.java b/src/main/java/org/scijava/event/bushe/SwingException.java index d236c2121..f36fc36d6 100644 --- a/src/main/java/org/scijava/event/bushe/SwingException.java +++ b/src/main/java/org/scijava/event/bushe/SwingException.java @@ -38,8 +38,6 @@ *

      * * @author Michael Bushe michael@bushe.com - * @todo in SwingUtils, make an invokeLater() method that saves the calling stack and catches all exceptions from a - * subsequent call to SwingUtilities.invokeLater(), then throws a Swing Exception so the calling stack is saved. */ class SwingException extends Exception { protected StackTraceElement[] callingStackTrace; diff --git a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java index 10395de4d..920d0add4 100644 --- a/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java +++ b/src/main/java/org/scijava/event/bushe/ThreadSafeEventService.java @@ -65,12 +65,6 @@ * never know if your subscriber has handled an event while it was being subscribed (before the subscribe() method * returned) that is newer or older than the retrieved cached value (taken before or after subscribe() respectively). *

      - *

      - * To deal with subscribers that take too long (a concern in Swing applications), the EventService can be made to issue - * {@link SubscriberTimingEvent}s when subscribers exceed a certain time. This does not interrupt subscriber processing - * and is published after the subscriber finishes. The service can log a warning for SubscriberTimingEvents, see the - * constructor {@link ThreadSafeEventService (long, boolean)}. The timing is checked for veto subscribers too. - *

      *

      Logging

      *

      * All logging goes through the {@link Logger}. The Logger is configurable and supports multiple logging systems. @@ -123,7 +117,7 @@ *

      * Once the cleanup start threshold is exceeded, a java.util.Timer is started to clean up stale subscribers periodically * in another thread. The timer will fire every cleanupPeriodMS milliseconds, which is set to the - * CLEANUP_PERIOD_MS_DEFAULT (20 minutes) by default. The default is overridable in the constructor or + * CLEANUP_PERIOD_MS_DEFAULT (20 minutes) by default. The default is overridable in the constructor or * via #setCleanupPeriodMS(Integer). If set to null, cleanup will not start. This is implemented with a java.util.Timer, * so Timer's warnings apply - setting this too low will cause cleanups to bunch up and hog the cleanup thread. *

      @@ -145,7 +139,6 @@ *

      * * @author Michael Bushe michael@bushe.com - * @todo (param) a JMS-like selector (can be done in base classes by implements like a commons filter * @see EventService for a complete description of the API */ @SuppressWarnings({"unchecked"}) From 1282e8889b2fb9d71cec343d93dba753a0c3c51d Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 14:47:01 -0500 Subject: [PATCH 108/185] POM: update parent to pom-scijava 35.0.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e6d854490..d2d3da86d 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 34.1.0 + 35.0.0 From 2beccfa858267cfb0da68296f663f4cfee83d71a Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 17 May 2023 14:54:21 -0500 Subject: [PATCH 109/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d2d3da86d..38f9e2296 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.94.0-SNAPSHOT + 2.94.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 8293f84d287ab6ffcb672b9c297a56171a497c00 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Fri, 19 May 2023 12:39:23 -0500 Subject: [PATCH 110/185] First cut: Find scripts in base script directory --- src/main/java/org/scijava/script/ScriptFinder.java | 7 +++++-- src/test/java/org/scijava/script/ScriptFinderTest.java | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/scijava/script/ScriptFinder.java b/src/main/java/org/scijava/script/ScriptFinder.java index ea438791e..3df65dd61 100644 --- a/src/main/java/org/scijava/script/ScriptFinder.java +++ b/src/main/java/org/scijava/script/ScriptFinder.java @@ -41,6 +41,7 @@ import org.scijava.AbstractContextual; import org.scijava.Context; +import org.scijava.MenuEntry; import org.scijava.MenuPath; import org.scijava.log.LogService; import org.scijava.plugin.Parameter; @@ -178,8 +179,10 @@ private int createInfos(final List scripts, final Set urls, // friendlyPath = "File/Import/Movie File..." // menuPath = File > Import > Movie File... - // NB: Ignore base-level scripts (not nested in any menu). - if (menuPath.size() == 1) continue; + // Place base-level scripts in the "Scripts" submenu + if (menuPath.size() == 1){ + menuPath.add(0, new MenuEntry("Scripts")); + } final URL url = scriptMap.get(path); diff --git a/src/test/java/org/scijava/script/ScriptFinderTest.java b/src/test/java/org/scijava/script/ScriptFinderTest.java index f3301fec1..8c51cc25e 100644 --- a/src/test/java/org/scijava/script/ScriptFinderTest.java +++ b/src/test/java/org/scijava/script/ScriptFinderTest.java @@ -66,7 +66,7 @@ public class ScriptFinderTest { public static void setUp() throws IOException { scriptsDir = TestUtils.createTemporaryDirectory("script-finder-"); final String[] scriptPaths = { // - "ignored.foo", // + "script_in_base_dir.foo", // "Scripts/quick.foo", // "Scripts/brown.foo", // "Scripts/fox.foo", // @@ -108,6 +108,7 @@ public void testFindScripts() { "Math > multiply", // "Math > pow", // "Scripts > quick", // + "Scripts > script in base dir", // "Math > Trig > sin", // "Math > subtract", // "Math > Trig > tan", // @@ -139,10 +140,10 @@ public void testMenuPrefixes() { "Foo > Bar > Math > Trig > cos", // "Foo > Bar > Math > divide", // "Foo > Bar > Scripts > fox", // - "Foo > Bar > ignored", // "Foo > Bar > Math > multiply", // "Math > pow", // "Foo > Bar > Scripts > quick", // + "Foo > Bar > script in base dir", // "Foo > Bar > Math > Trig > sin", // "Foo > Bar > Math > subtract", // "Foo > Bar > Math > Trig > tan", // @@ -177,6 +178,7 @@ public void testOverlappingDirectories() { "Math > multiply", // "Math > pow", // "Plugins > quick", // + "Scripts > script in base dir", // "Math > Trig > sin", // "Math > subtract", // "Math > Trig > tan", // From 14892562cea06ad65c8dbbcf682732d02010b68c Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Mon, 22 May 2023 12:09:53 -0500 Subject: [PATCH 111/185] Place base-level scripts in plugins>scripts --- src/main/java/org/scijava/script/ScriptFinder.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/script/ScriptFinder.java b/src/main/java/org/scijava/script/ScriptFinder.java index 3df65dd61..23701ea99 100644 --- a/src/main/java/org/scijava/script/ScriptFinder.java +++ b/src/main/java/org/scijava/script/ScriptFinder.java @@ -179,9 +179,10 @@ private int createInfos(final List scripts, final Set urls, // friendlyPath = "File/Import/Movie File..." // menuPath = File > Import > Movie File... - // Place base-level scripts in the "Scripts" submenu + // Place base-level scripts in the "Plugins>Scripts" submenu if (menuPath.size() == 1){ - menuPath.add(0, new MenuEntry("Scripts")); + menuPath.add(0, new MenuEntry("Plugins")); + menuPath.add(1, new MenuEntry("Scripts")); } final URL url = scriptMap.get(path); From 763f4166d4b8676b3f41efa3dd35291afb08e197 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Mon, 22 May 2023 12:23:59 -0500 Subject: [PATCH 112/185] Change tests to reflect Plugins>Scripts path --- src/test/java/org/scijava/script/ScriptFinderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/scijava/script/ScriptFinderTest.java b/src/test/java/org/scijava/script/ScriptFinderTest.java index 8c51cc25e..e28869372 100644 --- a/src/test/java/org/scijava/script/ScriptFinderTest.java +++ b/src/test/java/org/scijava/script/ScriptFinderTest.java @@ -108,7 +108,7 @@ public void testFindScripts() { "Math > multiply", // "Math > pow", // "Scripts > quick", // - "Scripts > script in base dir", // + "Plugins > Scripts > script in base dir", // "Math > Trig > sin", // "Math > subtract", // "Math > Trig > tan", // @@ -178,7 +178,7 @@ public void testOverlappingDirectories() { "Math > multiply", // "Math > pow", // "Plugins > quick", // - "Scripts > script in base dir", // + "Plugins > Scripts > script in base dir", // "Math > Trig > sin", // "Math > subtract", // "Math > Trig > tan", // From 52c63c71a7260d6498abbb503d84bf57dff10ee0 Mon Sep 17 00:00:00 2001 From: hinerm Date: Tue, 23 May 2023 15:05:46 -0500 Subject: [PATCH 113/185] Bump to pom-scijava 35.1.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 38f9e2296..dee00fcfa 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 35.0.0 + 35.1.0 From bea8f8c992e4dfc265d3a6bb6d2d2e44168e1a37 Mon Sep 17 00:00:00 2001 From: hinerm Date: Tue, 23 May 2023 15:09:22 -0500 Subject: [PATCH 114/185] Bump to next development cycle Signed-off-by: hinerm --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dee00fcfa..29e3dcc48 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.94.1-SNAPSHOT + 2.94.2-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From bc500e1f754ea8b17d0058f65e8c0e2691c63c9c Mon Sep 17 00:00:00 2001 From: hinerm Date: Thu, 6 Jul 2023 09:59:16 -0500 Subject: [PATCH 115/185] Bump pom-scijava to 35.1.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 29e3dcc48..844441cec 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 35.1.0 + 35.1.1 From de330f3a8c34c6643f8acd8c5cd62851c812880d Mon Sep 17 00:00:00 2001 From: hinerm Date: Thu, 6 Jul 2023 10:00:51 -0500 Subject: [PATCH 116/185] Bump to next development cycle Signed-off-by: hinerm --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 844441cec..9f587a995 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.94.2-SNAPSHOT + 2.94.3-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From a32977f3638cdfb6270ad5c225f231b31790dcf0 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 12 Jul 2023 12:58:43 -0500 Subject: [PATCH 117/185] Manage the active UI in a better way Thanks to the HeadlessUI, we now always have at least one UI available to SciJava Common. This commit introduces the concept internally of an *active* UI: the one that will be used when UI-centric operations are performed via the UIService (rather than directly on a UserInterface). The logic is as follows: * If an active UI already exists and is currently visible, use it again. * Otherwise, make the first visible UI the active one, and use it. * If none, make the default UI the active one, and use it. --- .../java/org/scijava/ui/DefaultUIService.java | 71 ++++++++----------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/src/main/java/org/scijava/ui/DefaultUIService.java b/src/main/java/org/scijava/ui/DefaultUIService.java index 60fc08693..cda97ec0b 100644 --- a/src/main/java/org/scijava/ui/DefaultUIService.java +++ b/src/main/java/org/scijava/ui/DefaultUIService.java @@ -117,6 +117,9 @@ public final class DefaultUIService extends AbstractService implements /** The default user interface to use, if one is not explicitly specified. */ private UserInterface defaultUI; + /** The last UI used when performing UI operations via the service. */ + private UserInterface activeUI; + /** * When true, {@link #isHeadless()} will return true regardless of the value * of the {@code java.awt.headless} system property. When false, {@link @@ -143,18 +146,12 @@ public void addUI(final String name, final UserInterface ui) { @Override public void showUI() { if (disposed) return; - final UserInterface ui = getDefaultUI(); - if (ui == null) { - throw new IllegalStateException("No UIs available. " + - "Please add a component containing a UIPlugin " + - "(e.g., scijava-ui-swing) to your class-path."); - } - showUI(ui); + showUI(activeUI()); } @Override public void showUI(final String name) { - final UserInterface ui = uiMap().get(name); + final UserInterface ui = getUI(name); if (ui == null) { throw new IllegalArgumentException("No such user interface: " + name); } @@ -174,14 +171,12 @@ public void showUI(final UserInterface ui) { @Override public boolean isVisible() { - final UserInterface ui = getDefaultUI(); - if (ui == null) return false; - return ui.isVisible(); + return activeUI().isVisible(); } @Override public boolean isVisible(final String name) { - final UserInterface ui = uiMap().get(name); + final UserInterface ui = getUI(name); return ui != null && ui.isVisible(); } @@ -200,7 +195,7 @@ public boolean isHeadless() { @Override public UserInterface getDefaultUI() { if (!initialized) discoverUIs(); - if (isHeadless()) return uiMap().get(HeadlessUI.NAME); + if (isHeadless()) return getUI(HeadlessUI.NAME); if (defaultUI != null) return defaultUI; return uiList().isEmpty() ? null : uiList().get(0); } @@ -244,17 +239,17 @@ public List>> getViewerPlugins() { @Override public void show(final Object o) { - getVisibleUI(true).show(o); + activeUI().show(o); } @Override public void show(final String name, final Object o) { - getVisibleUI(true).show(name, o); + activeUI().show(name, o); } @Override public void show(final Display display) { - getVisibleUI(true).show(display); + activeUI().show(display); } @Override @@ -309,44 +304,38 @@ public DialogPrompt.Result showDialog(final String message, final String title, final DialogPrompt.MessageType messageType, final DialogPrompt.OptionType optionType) { - UserInterface ui = getVisibleUI(false); - if (ui == null) return null; - final DialogPrompt dialogPrompt = ui.dialogPrompt(message, title, messageType, optionType); + final DialogPrompt dialogPrompt = // + activeUI().dialogPrompt(message, title, messageType, optionType); return dialogPrompt == null ? null : dialogPrompt.prompt(); } @Override public File chooseFile(final File file, final String style) { - final UserInterface ui = getVisibleUI(true); - return ui == null ? null : ui.chooseFile(file, style); + return activeUI().chooseFile(file, style); } @Override public File chooseFile(final String title, final File file, final String style) { - final UserInterface ui = getVisibleUI(true); - return ui == null ? null : ui.chooseFile(title, file, style); + return activeUI().chooseFile(title, file, style); } @Override public File[] chooseFiles(File parent, File[] files, FileFilter filter, String style) { - final UserInterface ui = getVisibleUI(true); - return ui == null ? null : ui.chooseFiles(parent, files, filter, style); + return activeUI().chooseFiles(parent, files, filter, style); } @Override public List chooseFiles(File parent, List fileList, FileFilter filter, String style) { - final UserInterface ui = getVisibleUI(true); - return ui == null ? null : ui.chooseFiles(parent, fileList, filter, style); + return activeUI().chooseFiles(parent, fileList, filter, style); } @Override public void showContextMenu(final String menuRoot, final Display display, final int x, final int y) { - final UserInterface ui = getVisibleUI(true); - if (ui != null) ui.showContextMenu(menuRoot, display, x, y); + activeUI().showContextMenu(menuRoot, display, x, y); } @Override @@ -542,20 +531,16 @@ private String getTitle() { return appService.getApp().getTitle(); } - private UserInterface getVisibleUI(final boolean forceShow) { - // finds the first (highest priority) VISIBLE UserInterface - // if none are visible, then we show default UI if the caller indicated so. - UserInterface defaultUI = getDefaultUI(); - if (defaultUI == null) return null; - if (defaultUI.isVisible()) return defaultUI; - else if(getVisibleUIs().size() > 0) { - return getVisibleUIs().get(0); - } + /** Gets the UI to use when performing UI operations via the service. */ + private UserInterface activeUI() { + // If a particular UI is already active and still visible, use that one. + if (activeUI != null && activeUI.isVisible()) return activeUI; - if (forceShow) { - showUI(defaultUI); - return defaultUI; - } - return null; + // If a UI is visible, use it. + final List visibleUIs = getVisibleUIs(); + if (visibleUIs.size() > 0) return activeUI = visibleUIs.get(0); + + // No UI is visible, so use the default one. + return activeUI = getDefaultUI(); } } From 0f3bf4449bbcb5bcce5ec5362e2d92bae39619b4 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 26 Jul 2023 19:23:14 -0500 Subject: [PATCH 118/185] ScriptREPL: generalize input and output streams The use of InputStream and OutputStream was natural, but those are heavy abstract classes, not lightweight interfaces. It is more flexible to allow specifying a Supplier from which to draw the REPL input, and/or a Consumer to receive the REPL output. This will be useful e.g. from Python via JPype, which allows to implement Java interfaces in Python backed by proxies. But you cannot proxy an abstract class like InputStream or OutputStream. Nonetheless, the ability to simply use InputStream/OutputStream like System.in+System.out is also nice, so we keep those method signatures as well. --- pom.xml | 2 +- .../java/org/scijava/script/ScriptREPL.java | 174 +++++++++++------- 2 files changed, 109 insertions(+), 67 deletions(-) diff --git a/pom.xml b/pom.xml index 9f587a995..12b513cab 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.94.3-SNAPSHOT + 2.95.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. diff --git a/src/main/java/org/scijava/script/ScriptREPL.java b/src/main/java/org/scijava/script/ScriptREPL.java index 8c4944766..1d1e875e2 100644 --- a/src/main/java/org/scijava/script/ScriptREPL.java +++ b/src/main/java/org/scijava/script/ScriptREPL.java @@ -30,6 +30,7 @@ package org.scijava.script; import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -38,6 +39,8 @@ import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.List; +import java.util.function.Consumer; +import java.util.function.Supplier; import javax.script.Bindings; import javax.script.ScriptException; @@ -67,9 +70,9 @@ public class ScriptREPL { @Parameter(required = false) private PluginService pluginService; - private final PrintStream out; + private final Consumer out; - private String languagePreference = null; + private String languagePreference; /** List of interpreter-friendly script languages. */ private List languages; @@ -84,19 +87,26 @@ public ScriptREPL(final Context context) { this(context, System.out); } + public ScriptREPL(final Context context, final String language) { + this(context, language, System.out); + } + public ScriptREPL(final Context context, final OutputStream out) { - context.inject(this); - this.out = out instanceof PrintStream ? - (PrintStream) out : new PrintStream(out); + this(context, null, out); } - public ScriptREPL(final Context context, final String language) { - this(context, language, System.out); + public ScriptREPL(final Context context, final String language, + final OutputStream out) + { + this(context, language, outputStreamConsumer(out)); } - public ScriptREPL(final Context context, final String language, final OutputStream out) { - this(context, out); + public ScriptREPL(final Context context, final String language, + final Consumer out) + { + context.inject(this); languagePreference = language; + this.out = out; } /** @@ -132,11 +142,39 @@ public void loop() throws IOException { * @param in Input stream from which commands are read. */ public void loop(final InputStream in) throws IOException { - initialize(); final BufferedReader bin = new BufferedReader(new InputStreamReader(in)); + try { + loop(() -> { + try { + return bin.readLine(); + } + catch (final IOException exc) { + throw new RuntimeException(exc); + } + }); + } + catch (final RuntimeException exc) { + // NB: This convolution lets us throw IOException from inside a + // Supplier.get implementation, by wrapping in a RuntimeException. + // We then unwrap it again and throw it here, where we said we would. + final Throwable cause = exc.getCause(); + if (cause instanceof IOException) throw (IOException) cause; + else throw exc; + } + } + + /** + * Starts a Read-Eval-Print-Loop from the given source, returning when + * the loop terminates. + * + * @param in Source from which commands are read. + */ + public void loop(final Supplier in) { + initialize(); while (true) { prompt(); - final String line = bin.readLine(); + final Object input = in.get(); + final String line = input == null ? null : input.toString(); if (line == null) break; if (!evaluate(line)) return; } @@ -157,54 +195,40 @@ public void initialize() { */ public void initialize(final boolean verbose) { if (verbose) { - out.println("Welcome to the SciJava REPL!"); - out.println(); + println("Welcome to the SciJava REPL!"); + println(); help(); } final List langs = getInterpretedLanguages(); if (verbose) { if (langs.isEmpty()) { - out.println("--------------------------------------------------------------"); - out.println("Uh oh! There are no SciJava script languages available!"); - out.println("Are any on your classpath? E.g.: org.scijava:scripting-groovy?"); - out.println("--------------------------------------------------------------"); - out.println(); + println("--------------------------------------------------------------"); + println("Uh oh! There are no SciJava script languages available!"); + println("Are any on your classpath? E.g.: org.scijava:scripting-groovy?"); + println("--------------------------------------------------------------"); + println(); return; } - out.println("Have fun!"); - out.println(); - - if(languagePreference != null) { - selectPreferredLanguage(langs); - } else { - lang(langs.get(0).getLanguageName()); - } + println("Have fun!"); + println(); } - else if (!langs.isEmpty()) { - if(languagePreference != null) { - selectPreferredLanguage(langs); - } else { - lang(langs.get(0)); - } + if (!langs.isEmpty()) { + if (languagePreference != null) selectPreferredLanguage(langs); + else lang(langs.get(0)); } - populateBindings(interpreter.getBindings()); } private void selectPreferredLanguage(List langs) { - final ScriptLanguage preference = langs - .stream().filter(lang -> languagePreference.equals(lang.getLanguageName())) - .findAny().orElse(null); - if(preference != null) { - lang(preference); - } else { - lang(langs.get(0).getLanguageName()); - } + final ScriptLanguage preference = langs.stream() + .filter(lang -> languagePreference.equals(lang.getLanguageName())) + .findFirst().orElse(langs.get(0)); + lang(preference); } /** Outputs the prompt. */ public void prompt() { - out.print(interpreter == null || interpreter.isReady() ? "> " : "\\ "); + print(interpreter == null || interpreter.isReady() ? "> " : "\\ "); } /** @@ -230,22 +254,22 @@ public boolean evaluate(final String line) { // pass the input to the current interpreter for evaluation final Object result = interpreter.interpret(line); if (result != ScriptInterpreter.MORE_INPUT_PENDING) { - out.println(s(result)); + println(s(result)); } } } catch (final ScriptException exc) { // NB: Something went wrong interpreting the line of code. // Let's just display the error message, unless we are in debug mode. - if (debug) exc.printStackTrace(out); + if (debug) printStackTrace(exc); else { final String msg = exc.getMessage(); - out.println(msg == null ? exc.getClass().getName() : msg); + println(msg == null ? exc.getClass().getName() : msg); } } catch (final Throwable exc) { // NB: Something unusual went wrong. Dump the whole exception always. - exc.printStackTrace(out); + printStackTrace(exc); } return true; } @@ -254,17 +278,17 @@ public boolean evaluate(final String line) { /** Prints a usage guide. */ public void help() { - out.println("Available built-in commands:"); - out.println(); - out.println(" :help | this handy list of commands"); - out.println(" :vars | dump a list of variables"); - out.println(" :lang | switch the active language"); - out.println(" :langs | list available languages"); - out.println(" :debug | toggle full stack traces"); - out.println(" :quit | exit the REPL"); - out.println(); - out.println("Or type a statement to evaluate it with the active language."); - out.println(); + println("Available built-in commands:"); + println(); + println(" :help | this handy list of commands"); + println(" :vars | dump a list of variables"); + println(" :lang | switch the active language"); + println(" :langs | list available languages"); + println(" :debug | toggle full stack traces"); + println(" :quit | exit the REPL"); + println(); + println("Or type a statement to evaluate it with the active language."); + println(); } /** Lists variables in the script context. */ @@ -294,11 +318,11 @@ public void lang(final String langName) { // create the new interpreter final ScriptLanguage language = scriptService.getLanguageByName(langName); if (language == null) { - out.println("No such language: " + langName); + println("No such language: " + langName); return; } lang(language); - out.println("language -> " + interpreter.getLanguage().getLanguageName()); + println("language -> " + interpreter.getLanguage().getLanguageName()); } /** @@ -316,7 +340,7 @@ public void lang(final ScriptLanguage language) { copyBindings(interpreter, newInterpreter); } catch (final Throwable t) { - t.printStackTrace(out); + printStackTrace(t); } interpreter = newInterpreter; } @@ -335,7 +359,7 @@ public void langs() { public void debug() { debug = !debug; - out.println("debug mode -> " + debug); + println("debug mode -> " + debug); } // -- Main method -- @@ -417,7 +441,7 @@ private List gateways() { gateways.add(gateway); } catch (final Throwable t) { - t.printStackTrace(out); + printStackTrace(t); } } return gateways; @@ -442,6 +466,17 @@ private String type(final Object value) { return "[" + decoded.getClass().getName() + "]"; } + private static final String NL = System.getProperty("line.separator"); + private void print(String s) { out.accept(s); } + private void println() { print(NL); } + private void println(final String s) { print(s + NL); } + + private void printStackTrace(final Throwable t) { + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + t.printStackTrace(new PrintStream(baos)); + println(baos.toString()); + } + private void printColumns(final List... columns) { final int pad = 2; @@ -456,18 +491,26 @@ private void printColumns(final List... columns) { } // output the columns + final StringBuilder sb = new StringBuilder(); for (int i = 0; i < columns[0].size(); i++) { + sb.setLength(0); for (int c = 0; c < columns.length; c++) { final String s = s(columns[c].get(i)); - out.print(s); + sb.append(s); for (int p = s.length(); p < widths[c] + pad; p++) { - out.print(' '); + sb.append(' '); } } - out.println(); + println(sb.toString()); } } + private static Consumer outputStreamConsumer(final OutputStream out) { + final PrintStream ps = out instanceof PrintStream ? + (PrintStream) out : new PrintStream(out); + return s -> { ps.print(s); ps.flush(); }; + } + private static String lowerCamelCase(final String s) { final StringBuilder sb = new StringBuilder(s); for (int i=0; i Date: Wed, 26 Jul 2023 21:32:46 -0500 Subject: [PATCH 119/185] ScriptREPL: do not trail spaces after last column --- src/main/java/org/scijava/script/ScriptREPL.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/script/ScriptREPL.java b/src/main/java/org/scijava/script/ScriptREPL.java index 1d1e875e2..d09dc7eab 100644 --- a/src/main/java/org/scijava/script/ScriptREPL.java +++ b/src/main/java/org/scijava/script/ScriptREPL.java @@ -497,8 +497,10 @@ private void printColumns(final List... columns) { for (int c = 0; c < columns.length; c++) { final String s = s(columns[c].get(i)); sb.append(s); - for (int p = s.length(); p < widths[c] + pad; p++) { - sb.append(' '); + if (c < columns.length - 1) { + for (int p = s.length(); p < widths[c] + pad; p++) { + sb.append(' '); + } } } println(sb.toString()); From dacd7b19e1b9d5157a1a09f8c7f48ff2a9576d3e Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 20 Jul 2023 13:30:43 -0700 Subject: [PATCH 120/185] DefaultModuleService: make LogService optional --- .../scijava/module/DefaultModuleService.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/scijava/module/DefaultModuleService.java b/src/main/java/org/scijava/module/DefaultModuleService.java index 12b2c19b4..e2c03c0cc 100644 --- a/src/main/java/org/scijava/module/DefaultModuleService.java +++ b/src/main/java/org/scijava/module/DefaultModuleService.java @@ -74,7 +74,7 @@ public class DefaultModuleService extends AbstractService implements ModuleService { - @Parameter + @Parameter(required = false) private LogService log; @Parameter @@ -170,7 +170,7 @@ public Module createModule(final ModuleInfo info) { return module; } catch (final ModuleException exc) { - log.error("Cannot create module: " + info.getDelegateClassName(), exc); + if (log != null) log.error("Cannot create module: " + info.getDelegateClassName(), exc); } return null; } @@ -251,10 +251,10 @@ public M waitFor(final Future future) { return future.get(); } catch (final InterruptedException e) { - log.error("Module execution interrupted", e); + if (log != null) log.error("Module execution interrupted", e); } catch (final ExecutionException e) { - log.error("Error during module execution", e); + if (log != null) log.error("Error during module execution", e); } return null; } @@ -392,8 +392,10 @@ private Module getRegisteredModuleInstance(final ModuleInfo info) { } if (objects.size() > 1) { // there are multiple instances; it's not clear which one to use - log.warn("Ignoring multiple candidate module instances for class: " + - type.getName()); + if (log != null) { + log.warn("Ignoring multiple candidate module instances for class: " + + type.getName()); + } return null; } // found exactly one instance; return it! @@ -416,7 +418,7 @@ private Map createMap(final Object[] values) { final Map valueMap = (Map) values[0]; for (final Object key : valueMap.keySet()) { if (!(key instanceof String)) { - log.error("Invalid input name: " + key); + if (log != null) log.error("Invalid input name: " + key); continue; } final String name = (String) key; @@ -427,7 +429,7 @@ private Map createMap(final Object[] values) { } if (values.length % 2 != 0) { - log.error("Ignoring extraneous argument: " + values[values.length - 1]); + if (log != null) log.error("Ignoring extraneous argument: " + values[values.length - 1]); } // loop over list of key/value pairs @@ -436,7 +438,7 @@ private Map createMap(final Object[] values) { final Object key = values[2 * i]; final Object value = values[2 * i + 1]; if (!(key instanceof String)) { - log.error("Invalid input name: " + key); + if (log != null) log.error("Invalid input name: " + key); continue; } final String name = (String) key; @@ -459,7 +461,7 @@ private void assignInputs(final Module module, if (input == null) { // inputs whose name starts with a dot are implicitly known by convention if (!name.startsWith(".")) { - log.warn("Unmatched input: " + name); + if (log != null) log.warn("Unmatched input: " + name); } converted = value; } @@ -467,8 +469,10 @@ private void assignInputs(final Module module, final Class type = input.getType(); converted = convertService.convert(value, type); if (value != null && converted == null) { - log.error("For input " + name + ": incompatible object " + - value.getClass().getName() + " for type " + type.getName()); + if (log != null) { + log.error("For input " + name + ": incompatible object " + + value.getClass().getName() + " for type " + type.getName()); + } continue; } } From f7b78a880106c8c3e4ece310d066882fdebd417f Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 27 Jul 2023 08:18:27 -0500 Subject: [PATCH 121/185] TaskEventTest: reduce wait time overhead We can terminate as soon as all tasks finish, before 5s elapses. --- src/test/java/org/scijava/task/TaskEventTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/scijava/task/TaskEventTest.java b/src/test/java/org/scijava/task/TaskEventTest.java index 9360fc6ad..6e83d81be 100644 --- a/src/test/java/org/scijava/task/TaskEventTest.java +++ b/src/test/java/org/scijava/task/TaskEventTest.java @@ -72,7 +72,13 @@ public void testManyTasks() throws InterruptedException { for (int i=0;i Date: Thu, 27 Jul 2023 08:41:11 -0500 Subject: [PATCH 122/185] ModuleErroredEventTest: do not dump stack trace It's confusing to see the "Yay!" stack trace in the test output. We can consume the event to prevent it from being emitted, while still testing that the exception is reported via the EventService. --- .../java/org/scijava/module/event/ModuleErroredEventTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java index 340d6e73d..fa5eabe19 100644 --- a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java +++ b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java @@ -75,6 +75,7 @@ public void testModuleErroredEvent() { @EventHandler void onEvent(final ModuleErroredEvent e) { caughtException[0] = e.getException(); + e.consume(); // Prevent exception from being emitted to stderr. } }; es.subscribe(interestedParty); From 1d685ab9874a01b856acb1ada88e2f3347979833 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 3 Aug 2023 10:36:14 -0500 Subject: [PATCH 123/185] POM: update parent to pom-scijava 36.0.0 And pin maven-surefire-plugin to the newest working version for now. --- pom.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 12b513cab..135a39b49 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 35.1.1 + 36.0.0 @@ -168,6 +168,9 @@ SciJava Common shared library for SciJava software. SciJava developers. **/bushe/** + + + 2.22.2 From f55a5a87a4797ed785b91839eb95d94cccbe0a0d Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 3 Aug 2023 10:41:50 -0500 Subject: [PATCH 124/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 135a39b49..8f91c21b1 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.95.0-SNAPSHOT + 2.95.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From b3b432672d7594a74ac6138ab5e137a5e96eb787 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 4 Aug 2023 11:39:49 -0500 Subject: [PATCH 125/185] Fix generics of ReadBufferDataHandle Otherwise, you cannot instantiate it in a type-safe way. --- .../java/org/scijava/io/handle/ReadBufferDataHandle.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java index ffbf10f41..d93f2d6b3 100644 --- a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java @@ -44,7 +44,7 @@ * Read-only buffered {@link DataHandle}. It buffers the underlying handle into * a fixed number of pages, swapping them out when necessary. */ -public class ReadBufferDataHandle extends AbstractHigherOrderHandle { +public class ReadBufferDataHandle extends AbstractHigherOrderHandle { private static final int DEFAULT_PAGE_SIZE = 10_000; private static final int DEFAULT_NUM_PAGES = 10; @@ -67,7 +67,7 @@ public class ReadBufferDataHandle extends AbstractHigherOrderHandle { * @param handle * the handle to wrap */ - public ReadBufferDataHandle(final DataHandle handle) { + public ReadBufferDataHandle(final DataHandle handle) { this(handle, DEFAULT_PAGE_SIZE); } @@ -80,7 +80,7 @@ public ReadBufferDataHandle(final DataHandle handle) { * @param pageSize * the size of the used pages */ - public ReadBufferDataHandle(final DataHandle handle, final int pageSize) { + public ReadBufferDataHandle(final DataHandle handle, final int pageSize) { this(handle, pageSize, DEFAULT_NUM_PAGES); } @@ -94,7 +94,7 @@ public ReadBufferDataHandle(final DataHandle handle, final int pageSiz * @param numPages * the number of pages to use */ - public ReadBufferDataHandle(final DataHandle handle, final int pageSize, final int numPages) { + public ReadBufferDataHandle(final DataHandle handle, final int pageSize, final int numPages) { super(handle); this.pageSize = pageSize; From 9e6a5aa8f21f0275ff8dc6948d30271990f7730f Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 4 Aug 2023 11:54:32 -0500 Subject: [PATCH 126/185] ReadBufferDataHandle: cache length for performance Closes #467. --- .../org/scijava/io/handle/ReadBufferDataHandle.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java index d93f2d6b3..d05f6507d 100644 --- a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java @@ -55,6 +55,12 @@ public class ReadBufferDataHandle extends AbstractHigherOrde private final LRUReplacementStrategy replacementStrategy; private final Map pageToSlot; + /** + * Cached length value, for performance. When reading data, length is not + * expected to change, but querying it (e.g. via native filesystem access) + * can be slow, and we need to query the length frequently. + */ + private long length = -1; private long offset = 0l; private byte[] currentPage; private int currentPageID = -1; @@ -190,6 +196,12 @@ public void seek(final long pos) throws IOException { this.offset = pos; } + @Override + public long length() throws IOException { + if (length < 0) length = super.length(); + return length; + } + @Override public int read(final byte[] b, final int targetOffset, final int len) throws IOException From 72bffe0da55435dcf524b485399b3ca0e7600cce Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 4 Aug 2023 12:41:36 -0500 Subject: [PATCH 127/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8f91c21b1..0dc48eff8 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.95.1-SNAPSHOT + 2.95.2-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 0f0cc605dc93ca99b934089df4d8ced68798d380 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sun, 6 Aug 2023 15:53:34 -0500 Subject: [PATCH 128/185] Add constructors taking wrapped location directly --- pom.xml | 2 +- src/main/java/org/scijava/io/handle/BytesHandle.java | 8 ++++++++ src/main/java/org/scijava/io/handle/DummyHandle.java | 8 ++++++++ src/main/java/org/scijava/io/handle/FileHandle.java | 8 ++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0dc48eff8..c721e7c83 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.95.2-SNAPSHOT + 2.96.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. diff --git a/src/main/java/org/scijava/io/handle/BytesHandle.java b/src/main/java/org/scijava/io/handle/BytesHandle.java index 4ab42965f..971ecd56d 100644 --- a/src/main/java/org/scijava/io/handle/BytesHandle.java +++ b/src/main/java/org/scijava/io/handle/BytesHandle.java @@ -48,6 +48,14 @@ public class BytesHandle extends AbstractDataHandle { private long offset = 0; + // -- Constructors -- + + public BytesHandle() { } + + public BytesHandle(final BytesLocation location) { + set(location); + } + // -- DataHandle methods -- @Override diff --git a/src/main/java/org/scijava/io/handle/DummyHandle.java b/src/main/java/org/scijava/io/handle/DummyHandle.java index ed53272ea..35116cf47 100644 --- a/src/main/java/org/scijava/io/handle/DummyHandle.java +++ b/src/main/java/org/scijava/io/handle/DummyHandle.java @@ -48,6 +48,14 @@ public class DummyHandle extends AbstractDataHandle { private long offset; private long length; + // -- Constructors -- + + public DummyHandle() { } + + public DummyHandle(final DummyLocation location) { + set(location); + } + // -- DataHandle methods -- @Override diff --git a/src/main/java/org/scijava/io/handle/FileHandle.java b/src/main/java/org/scijava/io/handle/FileHandle.java index 029447600..54580b71b 100644 --- a/src/main/java/org/scijava/io/handle/FileHandle.java +++ b/src/main/java/org/scijava/io/handle/FileHandle.java @@ -58,6 +58,14 @@ public class FileHandle extends AbstractDataHandle { /** True iff the {@link #close()} has already been called. */ private boolean closed; + // -- Constructors -- + + public FileHandle() { } + + public FileHandle(final FileLocation location) { + set(location); + } + // -- FileHandle methods -- /** From 9abafb2d50ec2df75edd90811ead26e47b25f0fa Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sun, 6 Aug 2023 15:55:33 -0500 Subject: [PATCH 129/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c721e7c83..713caeef4 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.96.0-SNAPSHOT + 2.96.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 61e98d7cdc820cf85f8957f11b93ebb1dc2115d8 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 11 Oct 2023 14:36:58 +0200 Subject: [PATCH 130/185] Support enum parameters with custom labels With this change, an enum class can implement toString() to control how it is presented in the user interface. --- pom.xml | 2 +- .../org/scijava/convert/DefaultConverter.java | 2 +- src/main/java/org/scijava/util/Types.java | 60 ++++++++++++++++++- src/test/java/org/scijava/util/TypesTest.java | 47 ++++++++++++++- 4 files changed, 105 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 713caeef4..924d8e4af 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.96.1-SNAPSHOT + 2.97.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index 00d4e1a50..975c88f82 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -135,7 +135,7 @@ public Object convert(final Object src, final Type dest) { // special case for conversion to enum if (saneDest.isEnum()) { try { - return Types.enumValue(s, saneDest); + return Types.enumFromString(s, saneDest); } catch (final IllegalArgumentException exc) { // NB: No action needed. diff --git a/src/main/java/org/scijava/util/Types.java b/src/main/java/org/scijava/util/Types.java index 12f46115c..8a4369a05 100644 --- a/src/main/java/org/scijava/util/Types.java +++ b/src/main/java/org/scijava/util/Types.java @@ -780,8 +780,10 @@ public static T cast(final Object src, final Class dest) { } /** - * Converts the given string value to an enumeration constant of the specified - * type. + * Converts the given string value to an enumeration constant of the + * specified type. For example, {@code enumValue("APPLE", Fruit.class)} + * returns {@code Fruit.APPLE} if such a value is among those of the + * requested enum class. * * @param name The value to convert. * @param dest The type of the enumeration constant. @@ -798,6 +800,60 @@ public static T enumValue(final String name, final Class dest) { return typedResult; } + /** + * Converts the given string label to an enumeration constant of the + * specified type. An enum label is the string returned by the enum constant's + * {@link Object#toString()} method. For example, + * {@code enumFromLabel("Apple", Fruit.class)} returns {@code Fruit.APPLE} if + * {@code Fruit.APPLE.toString()} is implemented to return {@code "Apple"}. + * + * @param label The {@code toString()} result of the desired enum value. + * @param dest The type of the enumeration constant. + * @return The matching enumeration constant. + * @throws IllegalArgumentException if the type is not an enumeration type, or + * has no constant with the given label. + */ + public static T enumFromLabel(final String label, final Class dest) { + final T[] values = dest.getEnumConstants(); + if (values == null) throw iae("Not an enum type: " + name(dest)); + for (T value : values) { + if (Objects.equals(label, value.toString())) return value; + } + throw iae("Enum class " + dest.getName() + " has no such label: " + label); + } + + /** + * Converts the given string value or label to an enumeration constant of the + * specified type. + *

      + * If the string matches one of the enum values directly, that value will be + * returned via {@link #enumValue(String, Class)}. Otherwise, the result of + * {@link #enumFromLabel} is returned. + *

      + * + * @param s The name or label of the desired enum value. + * @param dest The type of the enumeration constant. + * @return The matching enumeration constant. + * @throws IllegalArgumentException if the type is not an enumeration type, + * or has no such constant with the given name nor label. + */ + public static T enumFromString(final String s, final Class dest) { + if (!dest.isEnum()) throw iae("Not an enum type: " + name(dest)); + try { + return enumValue(s, dest); + } + catch (final IllegalArgumentException exc) { + // NB: No action needed. + } + try { + return enumFromLabel(s, dest); + } + catch (final IllegalArgumentException exc) { + // NB: No action needed. + } + throw iae("Enum class " + dest.getName() + " has no such value nor label: " + s); + } + /** * Creates a new {@link ParameterizedType} of the given class together with * the specified type arguments. diff --git a/src/test/java/org/scijava/util/TypesTest.java b/src/test/java/org/scijava/util/TypesTest.java index 4edebf7ff..24c6b5657 100644 --- a/src/test/java/org/scijava/util/TypesTest.java +++ b/src/test/java/org/scijava/util/TypesTest.java @@ -593,7 +593,7 @@ public void testEnumValue() { /** Tests {@link Types#enumValue(String, Class)} for invalid value. */ @Test(expected = IllegalArgumentException.class) public void testEnumValueNoConstant() { - Types.enumValue("NONE", Words.class); + Types.enumValue("OMG", Words.class); } /** Tests {@link Types#enumValue(String, Class)} for non-enum class. */ @@ -602,6 +602,38 @@ public void testEnumValueNonEnum() { Types.enumValue("HOOYAH", String.class); } + /** Tests {@link Types#enumFromLabel(String, Class)}. */ + @Test + public void testEnumFromLabel() { + final Words foo = Types.enumFromLabel("Foo", Words.class); + assertSame(Words.FOO, foo); + final Words bar = Types.enumFromLabel("Bar", Words.class); + assertSame(Words.BAR, bar); + final Words fubar = Types.enumFromLabel("OMG", Words.class); + assertSame(Words.FUBAR, fubar); + } + + /** Tests {@link Types#enumFromString(String, Class)}. */ + @Test + public void testEnumFromString() { + { + final Words foo = Types.enumFromString("FOO", Words.class); + assertSame(Words.FOO, foo); + final Words bar = Types.enumFromString("BAR", Words.class); + assertSame(Words.BAR, bar); + final Words fubar = Types.enumFromString("FUBAR", Words.class); + assertSame(Words.FUBAR, fubar); + } + { + final Words foo = Types.enumFromString("Foo", Words.class); + assertSame(Words.FOO, foo); + final Words bar = Types.enumFromString("Bar", Words.class); + assertSame(Words.BAR, bar); + final Words fubar = Types.enumFromString("OMG", Words.class); + assertSame(Words.FUBAR, fubar); + } + } + /** Tests {@link Types#parameterize(Class, Map)}. */ @Test public void testParameterizeMap() { @@ -644,7 +676,18 @@ private static class ComplexThing extends /** Enumeration for testing conversion to enum types. */ public static enum Words { - FOO, BAR, FUBAR + FOO("Foo"), BAR("Bar"), FUBAR("OMG"); + + private final String label; + + private Words(final String label) { + this.label = label; + } + + @Override + public String toString() { + return label; + } } private interface TestTypes { From f892d3db98e4256d9f5e02a16aea4c88f917b3a7 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 11 Oct 2023 16:07:39 +0200 Subject: [PATCH 131/185] Change 0xcafebabe to 0xc0ffee in tests --- .../java/org/scijava/options/OptionsTest.java | 8 ++-- .../org/scijava/util/DigestUtilsTest.java | 46 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/test/java/org/scijava/options/OptionsTest.java b/src/test/java/org/scijava/options/OptionsTest.java index eb144eebc..e49c70abb 100644 --- a/src/test/java/org/scijava/options/OptionsTest.java +++ b/src/test/java/org/scijava/options/OptionsTest.java @@ -94,14 +94,14 @@ public void testPersistence() { assertEquals(0, fooOptions.getBar()); // verify that we can set bar to a desired value at all - fooOptions.setBar(0xcafebabe); - assertEquals(0xcafebabe, fooOptions.getBar()); + fooOptions.setBar(0xc0ffee); + assertEquals(0xc0ffee, fooOptions.getBar()); // verify that save and load work as expected in the same context fooOptions.save(); fooOptions.setBar(0xdeadbeef); fooOptions.load(); - assertEquals(0xcafebabe, fooOptions.getBar()); + assertEquals(0xc0ffee, fooOptions.getBar()); // throw away the 1st context optionsService.getContext().dispose(); @@ -112,7 +112,7 @@ public void testPersistence() { final FooOptions fooOptions = optionsService.getOptions(FooOptions.class); // verify that persisted values are loaded correctly in a new context - assertEquals(0xcafebabe, fooOptions.getBar()); + assertEquals(0xc0ffee, fooOptions.getBar()); // clean up for next time fooOptions.reset(); // FIXME: If this test fails, reset will not happen! diff --git a/src/test/java/org/scijava/util/DigestUtilsTest.java b/src/test/java/org/scijava/util/DigestUtilsTest.java index 8f145181a..4c42955d4 100644 --- a/src/test/java/org/scijava/util/DigestUtilsTest.java +++ b/src/test/java/org/scijava/util/DigestUtilsTest.java @@ -41,11 +41,11 @@ */ public class DigestUtilsTest { - private static final byte[] CAFEBABE_SHA1 = { 20, 101, -38, -47, 38, -45, 43, - -9, -86, 93, 59, -107, -91, -57, -61, 49, -51, -1, 52, -33 }; + private static final byte[] COFFEE_SHA1 = { -71, 2, 27, -126, -23, -70, -89, + 35, -65, -15, -108, 66, 72, 113, 29, -32, -12, -42, -49, 6 }; - private static final byte[] CAFEBABE_MD5 = { 45, 27, -67, -30, -84, -84, 10, - -3, 7, 100, 109, -104, 21, 79, 64, 46 }; + private static final byte[] COFFEE_MD5 = { -39, -98, 9, -40, -39, 44, 31, + -62, 23, 9, 38, 101, 85, -57, 121, -110 }; private static final byte[] HELLO_WORLD_SHA1 = { 123, 80, 44, 58, 31, 72, -56, 96, -102, -30, 18, -51, -5, 99, -99, -18, 57, 103, 63, 94 }; @@ -53,14 +53,14 @@ public class DigestUtilsTest { private static final String HELLO_WORLD_SHA1_HEX = "7b502c3a1f48c8609ae212cdfb639dee39673f5e"; - private static final String CAFEBABE_SHA1_HEX = - "1465dad126d32bf7aa5d3b95a5c7c331cdff34df"; + private static final String COFFEE_SHA1_HEX = + "b9021b82e9baa723bff1944248711de0f4d6cf06"; private static final String HELLO_WORLD_SHA1_BASE64 = "e1AsOh9IyGCa4hLN+2Od7jlnP14="; - private static final String CAFEBABE_SHA1_BASE64 = - "FGXa0SbTK/eqXTuVpcfDMc3/NN8="; + private static final String COFFEE_SHA1_BASE64 = + "uQIbgum6pyO/8ZRCSHEd4PTWzwY="; /** Tests {@link DigestUtils#bytes(String)}. */ @Test @@ -75,15 +75,15 @@ public void testBytesString() { /** Tests {@link DigestUtils#bytes(int)}. */ @Test public void testBytesInt() { - final byte[] bytes = DigestUtils.bytes(0xcafebabe); - final byte[] expected = { -54, -2, -70, -66 }; + final byte[] bytes = DigestUtils.bytes(0xc0ffee); + final byte[] expected = { 0, -64, -1, -18 }; assertArrayEquals(expected, bytes); } /** Tests {@link DigestUtils#hex(byte[])}. */ @Test public void testHex() { - assertEquals("cafebabe", DigestUtils.hex(DigestUtils.bytes(0xcafebabe))); + assertEquals("00c0ffee", DigestUtils.hex(DigestUtils.bytes(0xc0ffee))); assertEquals("deadbeef", DigestUtils.hex(DigestUtils.bytes(0xdeadbeef))); assertEquals("00000000", DigestUtils.hex(DigestUtils.bytes(0x00000000))); assertEquals("ffffffff", DigestUtils.hex(DigestUtils.bytes(0xffffffff))); @@ -92,7 +92,7 @@ public void testHex() { /** Tests {@link DigestUtils#base64(byte[])}. */ @Test public void testBase64() { - assertEquals("yv66vg==", DigestUtils.base64(DigestUtils.bytes(0xcafebabe))); + assertEquals("AMD/7g==", DigestUtils.base64(DigestUtils.bytes(0xc0ffee))); assertEquals("3q2+7w==", DigestUtils.base64(DigestUtils.bytes(0xdeadbeef))); assertEquals("AAAAAA==", DigestUtils.base64(DigestUtils.bytes(0x00000000))); assertEquals("/////w==", DigestUtils.base64(DigestUtils.bytes(0xffffffff))); @@ -118,23 +118,23 @@ public void testHashBytes() { /** Tests {@link DigestUtils#sha1(byte[])}. */ @Test public void testSHA1() { - final byte[] bytes = DigestUtils.bytes(0xcafebabe); + final byte[] bytes = DigestUtils.bytes(0xc0ffee); final byte[] sha1 = DigestUtils.sha1(bytes); - assertArrayEquals(CAFEBABE_SHA1, sha1); + assertArrayEquals(COFFEE_SHA1, sha1); } /** Tests {@link DigestUtils#md5(byte[])}. */ @Test public void testMD5() { - final byte[] bytes = DigestUtils.bytes(0xcafebabe); + final byte[] bytes = DigestUtils.bytes(0xc0ffee); final byte[] md5 = DigestUtils.md5(bytes); - assertArrayEquals(CAFEBABE_MD5, md5); + assertArrayEquals(COFFEE_MD5, md5); } /** Tests {@link DigestUtils#digest(String, byte[])}. */ @Test public void testDigest() { - final byte[] bytes = DigestUtils.bytes(0xcafebabe); + final byte[] bytes = DigestUtils.bytes(0xc0ffee); final byte[] sha1 = DigestUtils.digest("SHA-1", bytes); final byte[] expectedSHA1 = DigestUtils.sha1(bytes); @@ -155,9 +155,9 @@ public void testBestString() { /** Tests {@link DigestUtils#best(byte[])}. */ @Test public void testBestBytes() { - final byte[] bytes = DigestUtils.bytes(0xcafebabe); + final byte[] bytes = DigestUtils.bytes(0xc0ffee); final byte[] best = DigestUtils.best(bytes); - assertArrayEquals(CAFEBABE_SHA1, best); + assertArrayEquals(COFFEE_SHA1, best); } /** Tests {@link DigestUtils#bestHex(String)}. */ @@ -169,8 +169,8 @@ public void testBestHexString() { /** Tests {@link DigestUtils#hex(byte[])}. */ @Test public void testBestHexBytes() { - final byte[] bytes = DigestUtils.bytes(0xcafebabe); - assertEquals(CAFEBABE_SHA1_HEX, DigestUtils.bestHex(bytes)); + final byte[] bytes = DigestUtils.bytes(0xc0ffee); + assertEquals(COFFEE_SHA1_HEX, DigestUtils.bestHex(bytes)); } /** Tests {@link DigestUtils#bestBase64(String)}. */ @@ -182,8 +182,8 @@ public void testBestBase64String() { /** Tests {@link DigestUtils#bestBase64(byte[])}. */ @Test public void testBestBase64Bytes() { - final byte[] bytes = DigestUtils.bytes(0xcafebabe); - assertEquals(CAFEBABE_SHA1_BASE64, DigestUtils.bestBase64(bytes)); + final byte[] bytes = DigestUtils.bytes(0xc0ffee); + assertEquals(COFFEE_SHA1_BASE64, DigestUtils.bestBase64(bytes)); } } From 7bdb3c78a04c6bce6f779a3185fdb8f63f6921e4 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 11 Oct 2023 16:10:44 +0200 Subject: [PATCH 132/185] CI: combine dual workflows into one --- .github/workflows/build-pr.yml | 23 ------------------- .../workflows/{build-main.yml => build.yml} | 3 +++ README.md | 2 +- 3 files changed, 4 insertions(+), 24 deletions(-) delete mode 100644 .github/workflows/build-pr.yml rename .github/workflows/{build-main.yml => build.yml} (94%) diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml deleted file mode 100644 index 925b57658..000000000 --- a/.github/workflows/build-pr.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: build PR - -on: - pull_request: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up Java - uses: actions/setup-java@v3 - with: - java-version: '8' - distribution: 'zulu' - cache: 'maven' - - name: Set up CI environment - run: .github/setup.sh - - name: Execute the build - run: .github/build.sh diff --git a/.github/workflows/build-main.yml b/.github/workflows/build.yml similarity index 94% rename from .github/workflows/build-main.yml rename to .github/workflows/build.yml index 5ef569202..2fa1522d3 100644 --- a/.github/workflows/build-main.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,9 @@ name: build on: + pull_request: + branches: + - master push: branches: - master diff --git a/README.md b/README.md index 6a69bf198..ba1f15173 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![](https://img.shields.io/maven-central/v/org.scijava/scijava-common.svg)](https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.scijava%22%20AND%20a%3A%22scijava-common%22) -[![](https://github.com/scijava/scijava-common/actions/workflows/build-main.yml/badge.svg)](https://github.com/scijava/scijava-common/actions/workflows/build-main.yml) +[![](https://github.com/scijava/scijava-common/actions/workflows/build.yml/badge.svg)](https://github.com/scijava/scijava-common/actions/workflows/build.yml) [![developer chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://imagesc.zulipchat.com/#narrow/stream/327237-SciJava) SciJava Common is a common library for SciJava software. It provides a From fa5133b8e30a744e3b5d5922ac5ec10a8b02ff03 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 11 Oct 2023 16:12:46 +0200 Subject: [PATCH 133/185] CI: test the build on Windows and macOS, too --- .github/workflows/build.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2fa1522d3..118e6ac74 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,11 @@ on: jobs: build: - runs-on: ubuntu-latest + name: build-${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v2 From 49f495000dd8242e43812401b708b5e87a858172 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 20 Jan 2017 12:53:57 -0600 Subject: [PATCH 134/185] DefaultWidgetModel: guard against null conversions When the conversion fails, it returns null. In that case, we should treat the converted value as identical to the original value. --- src/main/java/org/scijava/widget/DefaultWidgetModel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/scijava/widget/DefaultWidgetModel.java b/src/main/java/org/scijava/widget/DefaultWidgetModel.java index ea878b162..daa6b8ee6 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetModel.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetModel.java @@ -156,6 +156,7 @@ public void setValue(final Object value) { // Pass the value through the convertService convertedInput = convertService.convert(value, item.getType()); + if (convertedInput == null) convertedInput = value; // If we get a different (converted) value back, cache it weakly. if (convertedInput != value) { From 8794f7adf2b33caf70b7d251e2a5f99588f0d37e Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 20 Jan 2017 12:55:23 -0600 Subject: [PATCH 135/185] WidgetModel: deprecate getChoices & move to iface The getChoices() method always converts the choices to strings. We cannot always go back from string to original object -- e.g., for enums which override toString() to print something nice. Better to just use the original choices from getItem().getChoices(). This also makes the getChoices method more concise. --- .../org/scijava/widget/DefaultWidgetModel.java | 11 ----------- src/main/java/org/scijava/widget/WidgetModel.java | 14 +++++++------- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/scijava/widget/DefaultWidgetModel.java b/src/main/java/org/scijava/widget/DefaultWidgetModel.java index daa6b8ee6..e8c84ac50 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetModel.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetModel.java @@ -219,17 +219,6 @@ public Number getStepSize() { return NumberUtils.toNumber("1", item.getType()); } - @Override - public String[] getChoices() { - final List choicesList = item.getChoices(); - if (choicesList == null) return null; - final String[] choices = new String[choicesList.size()]; - for (int i = 0; i < choices.length; i++) { - choices[i] = objectService.getName(choicesList.get(i)); - } - return choices; - } - @Override public String getText() { final Object value = getValue(); diff --git a/src/main/java/org/scijava/widget/WidgetModel.java b/src/main/java/org/scijava/widget/WidgetModel.java index 97ccad278..2c5ed296e 100644 --- a/src/main/java/org/scijava/widget/WidgetModel.java +++ b/src/main/java/org/scijava/widget/WidgetModel.java @@ -134,13 +134,13 @@ public interface WidgetModel extends Contextual { */ Number getStepSize(); - /** - * Gets the multiple choice list for the module input. - * - * @return The available choices, or an empty list if not multiple choice. - * @see ChoiceWidget - */ - String[] getChoices(); + /** @deprecated Use {@code getItem().getChoices()} instead. */ + @Deprecated + default String[] getChoices() { + return getItem().getChoices().stream() // + .map(choice -> choice.toString()) // + .toArray(String[]::new); + } /** * Gets the input's value rendered as a string. From 01fc93f33a02a6beb65543511cdd25539f1cfcfb Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 20 Jan 2017 12:57:37 -0600 Subject: [PATCH 136/185] DefaultWidgetModel: use choices, not string labels See also the previous commit. --- src/main/java/org/scijava/widget/DefaultWidgetModel.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/org/scijava/widget/DefaultWidgetModel.java b/src/main/java/org/scijava/widget/DefaultWidgetModel.java index e8c84ac50..dda3e361c 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetModel.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetModel.java @@ -29,7 +29,6 @@ package org.scijava.widget; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; @@ -279,11 +278,10 @@ public boolean isInitialized() { /** * For multiple choice widgets, ensures the value is a valid choice. * - * @see #getChoices() * @see ChoiceWidget */ private Object ensureValidChoice(final Object value) { - return ensureValid(value, Arrays.asList(getChoices())); + return ensureValid(value, getItem().getChoices()); } /** From fcffe20e19017f9391f7a74686f662a1fc5df9b5 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 20 Jan 2017 13:37:07 -0600 Subject: [PATCH 137/185] AbstractInputHarvester: fix generic type hackery --- .../java/org/scijava/widget/AbstractInputHarvester.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/scijava/widget/AbstractInputHarvester.java b/src/main/java/org/scijava/widget/AbstractInputHarvester.java index 9a82ea33f..73fdf7b53 100644 --- a/src/main/java/org/scijava/widget/AbstractInputHarvester.java +++ b/src/main/java/org/scijava/widget/AbstractInputHarvester.java @@ -128,13 +128,10 @@ private WidgetModel addInput(final InputPanel inputPanel, } /** Asks the object service and convert service for valid choices */ - @SuppressWarnings("unchecked") - private List getObjects(final Class type) { - @SuppressWarnings("rawtypes") - Set compatibleInputs = - new HashSet(convertService.getCompatibleInputs(type)); + private List getObjects(final Class type) { + Set compatibleInputs = + new HashSet<>(convertService.getCompatibleInputs(type)); compatibleInputs.addAll(objectService.getObjects(type)); return new ArrayList<>(compatibleInputs); } - } From 3239804efd5085435bb7a9226d3fe492c4438baa Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 12 Oct 2023 11:18:03 +0200 Subject: [PATCH 138/185] Bump to next development cycle --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 924d8e4af..921efab7e 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.97.0-SNAPSHOT + 2.97.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 43469c9a3d1d3f133223f6f389f4560061e6fccd Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 12 Oct 2023 14:07:24 +0200 Subject: [PATCH 139/185] Revert "WidgetModel: deprecate getChoices & move to iface" This reverts commit 8794f7adf2b33caf70b7d251e2a5f99588f0d37e. This change broke scijava-ui-swing, because item.getChoices() can return null. However, even when guarding against null, there is another problem: the current implementation in DefaultWidgetModel leans on the ObjectService, which is not accessible at the WidgetModel interface level. So for now, let's just revert this change. All seems to work fine without meddling here. --- .../org/scijava/widget/DefaultWidgetModel.java | 11 +++++++++++ src/main/java/org/scijava/widget/WidgetModel.java | 14 +++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/scijava/widget/DefaultWidgetModel.java b/src/main/java/org/scijava/widget/DefaultWidgetModel.java index dda3e361c..e8e7c7631 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetModel.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetModel.java @@ -218,6 +218,17 @@ public Number getStepSize() { return NumberUtils.toNumber("1", item.getType()); } + @Override + public String[] getChoices() { + final List choicesList = getItem().getChoices(); + if (choicesList == null) return null; + final String[] choices = new String[choicesList.size()]; + for (int i = 0; i < choices.length; i++) { + choices[i] = objectService.getName(choicesList.get(i)); + } + return choices; + } + @Override public String getText() { final Object value = getValue(); diff --git a/src/main/java/org/scijava/widget/WidgetModel.java b/src/main/java/org/scijava/widget/WidgetModel.java index 2c5ed296e..97ccad278 100644 --- a/src/main/java/org/scijava/widget/WidgetModel.java +++ b/src/main/java/org/scijava/widget/WidgetModel.java @@ -134,13 +134,13 @@ public interface WidgetModel extends Contextual { */ Number getStepSize(); - /** @deprecated Use {@code getItem().getChoices()} instead. */ - @Deprecated - default String[] getChoices() { - return getItem().getChoices().stream() // - .map(choice -> choice.toString()) // - .toArray(String[]::new); - } + /** + * Gets the multiple choice list for the module input. + * + * @return The available choices, or an empty list if not multiple choice. + * @see ChoiceWidget + */ + String[] getChoices(); /** * Gets the input's value rendered as a string. From a8a7e4fa028fd9c79d39286ce32b5334c0b5aae8 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 12 Oct 2023 14:13:03 +0200 Subject: [PATCH 140/185] POM: update parent to pom-scijava 37.0.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 921efab7e..4535b2eff 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 36.0.0 + 37.0.0 From c1c5e2493c6bed7c659965f2260c61510bd12abf Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 12 Oct 2023 14:14:37 +0200 Subject: [PATCH 141/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4535b2eff..aede49815 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.97.1-SNAPSHOT + 2.97.2-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 9960d51acf339b17179d4b3694bf0d891b584dc6 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 13 Oct 2023 10:38:38 +0200 Subject: [PATCH 142/185] Add a ContextCreatedEvent So that services can respond with behavior as soon as their context is fully done initializing. --- pom.xml | 2 +- src/main/java/org/scijava/Context.java | 5 +++ .../scijava/event/ContextCreatedEvent.java | 38 +++++++++++++++++++ .../java/org/scijava/ContextCreationTest.java | 22 +++++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/scijava/event/ContextCreatedEvent.java diff --git a/pom.xml b/pom.xml index aede49815..4b91cb7b3 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.97.2-SNAPSHOT + 2.98.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. diff --git a/src/main/java/org/scijava/Context.java b/src/main/java/org/scijava/Context.java index 63ade880d..d6b777d46 100644 --- a/src/main/java/org/scijava/Context.java +++ b/src/main/java/org/scijava/Context.java @@ -38,6 +38,7 @@ import java.util.Collections; import java.util.List; +import org.scijava.event.ContextCreatedEvent; import org.scijava.event.ContextDisposingEvent; import org.scijava.event.EventHandler; import org.scijava.event.EventService; @@ -293,6 +294,10 @@ public Context(final Collection> serviceClasses, // If JVM shuts down with context still active, clean up after ourselves. Runtime.getRuntime().addShutdownHook(new Thread(() -> doDispose(false))); + + // Publish an event to indicate that context initialization is complete. + final EventService eventService = getService(EventService.class); + if (eventService != null) eventService.publish(new ContextCreatedEvent()); } // -- Context methods -- diff --git a/src/main/java/org/scijava/event/ContextCreatedEvent.java b/src/main/java/org/scijava/event/ContextCreatedEvent.java new file mode 100644 index 000000000..7ca7d529b --- /dev/null +++ b/src/main/java/org/scijava/event/ContextCreatedEvent.java @@ -0,0 +1,38 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2023 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.event; + +/** + * Event to be published immediately after a context has been fully created + * with all services initialized. + * + * @author Curtis Rueden + */ +public class ContextCreatedEvent extends SciJavaEvent { } diff --git a/src/test/java/org/scijava/ContextCreationTest.java b/src/test/java/org/scijava/ContextCreationTest.java index b177a75c7..db4e76ea7 100644 --- a/src/test/java/org/scijava/ContextCreationTest.java +++ b/src/test/java/org/scijava/ContextCreationTest.java @@ -42,6 +42,8 @@ import java.util.List; import org.junit.Test; +import org.scijava.event.ContextCreatedEvent; +import org.scijava.event.EventHandler; import org.scijava.plugin.Parameter; import org.scijava.plugin.PluginIndex; import org.scijava.plugin.PluginInfo; @@ -149,6 +151,14 @@ public void testSciJavaServices() { } } + /** Tests that {@link ContextCreatedEvent} is published as expected. */ + @Test + public void testContextCreatedEvent() { + assertEquals(0, ServiceNoticingContextCreated.created); + final Context context = new Context(ServiceNoticingContextCreated.class); + assertEquals(1, ServiceNoticingContextCreated.created); + } + /** * Tests that dependent {@link Service}s are automatically created and * populated in downstream {@link Service} classes. @@ -441,6 +451,18 @@ private PluginIndex pluginIndex(final Class... plugins) { // -- Helper classes -- + /** A service that notices when {@link ContextCreatedEvent} is published. */ + public static class ServiceNoticingContextCreated extends AbstractService { + + public static int created = 0; + + @EventHandler + public void onEvent(final ContextCreatedEvent evt) { + created++; + } + + } + /** A service which requires a {@link BarService}. */ public static class FooService extends AbstractService { From 06f52dbfc10e169b4c355ac5aa76fd9f8b1faa64 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 13 Oct 2023 13:28:49 +0200 Subject: [PATCH 143/185] DigestUtils: use Base64, not DatatypeConverter Unlike java.util.Base64, the DatatypeConverter class is in the javax.xml.bind package, which is not part of java.base. --- src/main/java/org/scijava/util/DigestUtils.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/scijava/util/DigestUtils.java b/src/main/java/org/scijava/util/DigestUtils.java index 92472445f..54014b709 100644 --- a/src/main/java/org/scijava/util/DigestUtils.java +++ b/src/main/java/org/scijava/util/DigestUtils.java @@ -32,8 +32,7 @@ import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; - -import javax.xml.bind.DatatypeConverter; +import java.util.Base64; /** * Utility class for computing cryptographic hashes. @@ -98,7 +97,7 @@ public static String hex(final byte[] bytes) { /** Converts the given byte array to a base64 string. */ public static String base64(final byte[] bytes) { - return DatatypeConverter.printBase64Binary(bytes); + return new String(Base64.getEncoder().encode(bytes)); } /** From 47f2d2b4e466dac309e50f72c93bdfef1bb80385 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 13 Oct 2023 13:29:13 +0200 Subject: [PATCH 144/185] Remove reference to javax.xml.ws.Service class There is no strong reason we need to link it here, and it won't compile as written with Java 11, due to changes in Java's ServiceLoader mechanism. --- src/main/java/org/scijava/util/ServiceCombiner.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/org/scijava/util/ServiceCombiner.java b/src/main/java/org/scijava/util/ServiceCombiner.java index e976f6846..a24cf6abb 100644 --- a/src/main/java/org/scijava/util/ServiceCombiner.java +++ b/src/main/java/org/scijava/util/ServiceCombiner.java @@ -40,12 +40,10 @@ import java.util.Map; import java.util.Map.Entry; -import javax.xml.ws.Service; - import org.scijava.Context; /** - * Combines {@link Service} information from all JAR files on the classpath. + * Combines {@code Service} information from all JAR files on the classpath. * * @author Johannes Schindelin * @author Mark Hiner From 5e8fb31373197fc0fc74d73f017404ec6927063c Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 13 Oct 2023 14:19:03 +0200 Subject: [PATCH 145/185] ConsoleServiceTest: keep ref to plugin instance --- src/test/java/org/scijava/console/ConsoleServiceTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/scijava/console/ConsoleServiceTest.java b/src/test/java/org/scijava/console/ConsoleServiceTest.java index 432feb8e0..64692143f 100644 --- a/src/test/java/org/scijava/console/ConsoleServiceTest.java +++ b/src/test/java/org/scijava/console/ConsoleServiceTest.java @@ -83,9 +83,12 @@ public void testProcessArgs() { */ @Test public void testInfiniteLoopAvoidance() { - assertFalse(consoleService.getInstance(BrokenArgument.class).argsHandled); + final BrokenArgument broken = // + consoleService.getInstance(BrokenArgument.class); + assertNotNull(broken); + assertFalse(broken.argsHandled); consoleService.processArgs("--broken"); - assertTrue(consoleService.getInstance(BrokenArgument.class).argsHandled); + assertTrue(broken.argsHandled); } /** From 41f31366618fb6ab6ba5e612e61b5c9755d8dd43 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 19 Oct 2023 10:06:48 +0200 Subject: [PATCH 146/185] Only register one single shutdown hook Registering one shutdown hook Thread object per Context ever created eventually causes the JVM to start throwing around OutOfMemoryErrors. --- src/main/java/org/scijava/Context.java | 28 ++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/Context.java b/src/main/java/org/scijava/Context.java index d6b777d46..421ad2b36 100644 --- a/src/main/java/org/scijava/Context.java +++ b/src/main/java/org/scijava/Context.java @@ -33,10 +33,13 @@ import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.scijava.event.ContextCreatedEvent; import org.scijava.event.ContextDisposingEvent; @@ -73,6 +76,14 @@ public class Context implements Disposable, AutoCloseable { */ public static final String STRICT_PROPERTY = "scijava.context.strict"; + /** Set of currently active (not disposed) application contexts. */ + private static final Map CONTEXTS = + new ConcurrentHashMap<>(); // NB: ConcurrentHashMap disallows nulls. + + // -- Static fields -- + + private static Thread shutdownThread = null; + // -- Fields -- /** Index of the application context's services. */ @@ -293,7 +304,20 @@ public Context(final Collection> serviceClasses, } // If JVM shuts down with context still active, clean up after ourselves. - Runtime.getRuntime().addShutdownHook(new Thread(() -> doDispose(false))); + if (shutdownThread == null) { + synchronized (Context.class) { + if (shutdownThread == null) { + shutdownThread = new Thread(() -> { + final List contexts = new ArrayList<>(CONTEXTS.keySet()); + for (final Context context : contexts) { + context.doDispose(false); + } + }); + Runtime.getRuntime().addShutdownHook(shutdownThread); + } + } + } + CONTEXTS.put(this, true); // Publish an event to indicate that context initialization is complete. final EventService eventService = getService(EventService.class); @@ -432,7 +456,6 @@ public boolean isInjectable(final Class type) { @Override public void dispose() { - if (disposed) return; doDispose(true); } @@ -589,6 +612,7 @@ private String createMissingServiceMessage( private synchronized void doDispose(final boolean announce) { if (disposed) return; disposed = true; + CONTEXTS.remove(this); if (announce) { final EventService eventService = getService(EventService.class); if (eventService != null) eventService.publish(new ContextDisposingEvent()); From 4133ac73119f00c3ba8b75266d58389f442fb572 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sat, 4 Nov 2023 09:36:52 -0500 Subject: [PATCH 147/185] ObjectIndexTest: make tests pass with OpenJDK 12 Closes #474. --- .../org/scijava/object/ObjectIndexTest.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/test/java/org/scijava/object/ObjectIndexTest.java b/src/test/java/org/scijava/object/ObjectIndexTest.java index 00be93314..dfd4978f1 100644 --- a/src/test/java/org/scijava/object/ObjectIndexTest.java +++ b/src/test/java/org/scijava/object/ObjectIndexTest.java @@ -36,6 +36,7 @@ import static org.junit.Assert.assertTrue; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -209,15 +210,25 @@ public void testToString() { objectIndex.add(new Integer(5)); objectIndex.add(new Float(2.5f)); objectIndex.add(new Integer(3)); - final String[] expected = - { "java.io.Serializable: {5, 2.5, 3}", - "java.lang.Comparable: {5, 2.5, 3}", "java.lang.Float: {2.5}", - "java.lang.Integer: {5, 3}", "java.lang.Number: {5, 2.5, 3}", - "java.lang.Object: {5, 2.5, 3}", - "org.scijava.object.ObjectIndex$All: {5, 2.5, 3}" }; + + final List expected = new ArrayList<>(); + expected.addAll(Arrays.asList( + "java.io.Serializable: {5, 2.5, 3}", + "java.lang.Comparable: {5, 2.5, 3}", "java.lang.Float: {2.5}", + "java.lang.Integer: {5, 3}", "java.lang.Number: {5, 2.5, 3}", + "java.lang.Object: {5, 2.5, 3}" + )); + final String[] javaVersion = System.getProperty("java.version").split("\\."); + final int majorVersion = Integer.parseInt(javaVersion[0]); + if (majorVersion >= 12) { + expected.add("java.lang.constant.Constable: {5, 2.5, 3}"); + expected.add("java.lang.constant.ConstantDesc: {5, 2.5, 3}"); + } + expected.add("org.scijava.object.ObjectIndex$All: {5, 2.5, 3}"); + final String[] actual = objectIndex.toString().split(System.getProperty("line.separator")); - assertArrayEquals(expected, actual); + assertArrayEquals(expected.toArray(), actual); } } From dc4be9bc8f8ee5893a26133463f90b2e84495f59 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Sat, 4 Nov 2023 09:38:36 -0500 Subject: [PATCH 148/185] ObjectIndexTest: fix line wrapping --- src/test/java/org/scijava/object/ObjectIndexTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/scijava/object/ObjectIndexTest.java b/src/test/java/org/scijava/object/ObjectIndexTest.java index dfd4978f1..2a0870776 100644 --- a/src/test/java/org/scijava/object/ObjectIndexTest.java +++ b/src/test/java/org/scijava/object/ObjectIndexTest.java @@ -214,8 +214,10 @@ public void testToString() { final List expected = new ArrayList<>(); expected.addAll(Arrays.asList( "java.io.Serializable: {5, 2.5, 3}", - "java.lang.Comparable: {5, 2.5, 3}", "java.lang.Float: {2.5}", - "java.lang.Integer: {5, 3}", "java.lang.Number: {5, 2.5, 3}", + "java.lang.Comparable: {5, 2.5, 3}", + "java.lang.Float: {2.5}", + "java.lang.Integer: {5, 3}", + "java.lang.Number: {5, 2.5, 3}", "java.lang.Object: {5, 2.5, 3}" )); final String[] javaVersion = System.getProperty("java.version").split("\\."); From 43164babd71c2429e4fa2e8f59f7eda767ebe120 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 7 Nov 2023 11:21:07 -0600 Subject: [PATCH 149/185] CI: only deploy build artifacts on the Linux node --- .github/build.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/build.sh b/.github/build.sh index 7da42622b..44a7909d1 100755 --- a/.github/build.sh +++ b/.github/build.sh @@ -1,3 +1,4 @@ #!/bin/sh curl -fsLO https://raw.githubusercontent.com/scijava/scijava-scripts/master/ci-build.sh -sh ci-build.sh +# NB: Only the Linux CI node should deploy build artifacts. +NO_DEPLOY=$(test "$(uname)" = Linux || echo 1) sh ci-build.sh From 3dc99c9173f50d9818afc5674e4e11150186387a Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 7 Nov 2023 11:27:23 -0600 Subject: [PATCH 150/185] CI: use bash shell even when building on Windows --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 118e6ac74..876a620a3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,6 +30,7 @@ jobs: run: .github/setup.sh - name: Execute the build run: .github/build.sh + shell: bash env: GPG_KEY_NAME: ${{ secrets.GPG_KEY_NAME }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} From c7b6dc414debe41ef1166c071af034d65a51ff62 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 26 Jan 2024 09:42:47 -0600 Subject: [PATCH 151/185] Happy New Year 2024 --- src/it/apt-test/pom.xml | 2 +- src/it/apt-test/setup.bsh | 2 +- .../src/main/java/org/scijava/annotation/its/Annotated.java | 2 +- .../main/java/org/scijava/annotation/its/CustomAnnotation.java | 2 +- src/it/apt-test/verify.bsh | 2 +- src/it/settings.xml | 2 +- src/main/java/org/scijava/AbstractBasicDetails.java | 2 +- src/main/java/org/scijava/AbstractContextual.java | 2 +- src/main/java/org/scijava/AbstractGateway.java | 2 +- src/main/java/org/scijava/AbstractUIDetails.java | 2 +- src/main/java/org/scijava/BasicDetails.java | 2 +- src/main/java/org/scijava/Cancelable.java | 2 +- src/main/java/org/scijava/Context.java | 2 +- src/main/java/org/scijava/Contextual.java | 2 +- src/main/java/org/scijava/Disposable.java | 2 +- src/main/java/org/scijava/Gateway.java | 2 +- src/main/java/org/scijava/Identifiable.java | 2 +- src/main/java/org/scijava/Initializable.java | 2 +- src/main/java/org/scijava/Instantiable.java | 2 +- src/main/java/org/scijava/InstantiableException.java | 2 +- src/main/java/org/scijava/ItemIO.java | 2 +- src/main/java/org/scijava/ItemVisibility.java | 2 +- src/main/java/org/scijava/Locatable.java | 2 +- src/main/java/org/scijava/MenuEntry.java | 2 +- src/main/java/org/scijava/MenuPath.java | 2 +- src/main/java/org/scijava/Named.java | 2 +- src/main/java/org/scijava/NoSuchServiceException.java | 2 +- src/main/java/org/scijava/NullContextException.java | 2 +- src/main/java/org/scijava/Optional.java | 2 +- src/main/java/org/scijava/Prioritized.java | 2 +- src/main/java/org/scijava/Priority.java | 2 +- src/main/java/org/scijava/SciJava.java | 2 +- src/main/java/org/scijava/Typed.java | 2 +- src/main/java/org/scijava/UIDetails.java | 2 +- src/main/java/org/scijava/Validated.java | 2 +- src/main/java/org/scijava/ValidityProblem.java | 2 +- src/main/java/org/scijava/Versioned.java | 2 +- src/main/java/org/scijava/annotations/AbstractIndexWriter.java | 2 +- src/main/java/org/scijava/annotations/AnnotationCombiner.java | 2 +- src/main/java/org/scijava/annotations/AnnotationProcessor.java | 2 +- src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java | 2 +- src/main/java/org/scijava/annotations/DirectoryIndexer.java | 2 +- src/main/java/org/scijava/annotations/EclipseHelper.java | 2 +- src/main/java/org/scijava/annotations/Index.java | 2 +- src/main/java/org/scijava/annotations/IndexItem.java | 2 +- src/main/java/org/scijava/annotations/IndexReader.java | 2 +- src/main/java/org/scijava/annotations/Indexable.java | 2 +- src/main/java/org/scijava/annotations/legacy/LegacyReader.java | 2 +- src/main/java/org/scijava/app/AbstractApp.java | 2 +- src/main/java/org/scijava/app/App.java | 2 +- src/main/java/org/scijava/app/AppService.java | 2 +- src/main/java/org/scijava/app/DefaultAppService.java | 2 +- src/main/java/org/scijava/app/DefaultStatusService.java | 2 +- src/main/java/org/scijava/app/SciJavaApp.java | 2 +- src/main/java/org/scijava/app/StatusService.java | 2 +- src/main/java/org/scijava/app/event/StatusEvent.java | 2 +- src/main/java/org/scijava/cache/CacheService.java | 2 +- src/main/java/org/scijava/cache/DefaultCacheService.java | 2 +- src/main/java/org/scijava/command/Command.java | 2 +- src/main/java/org/scijava/command/CommandInfo.java | 2 +- src/main/java/org/scijava/command/CommandModule.java | 2 +- src/main/java/org/scijava/command/CommandModuleItem.java | 2 +- src/main/java/org/scijava/command/CommandService.java | 2 +- src/main/java/org/scijava/command/ContextCommand.java | 2 +- src/main/java/org/scijava/command/DefaultCommandService.java | 2 +- src/main/java/org/scijava/command/DynamicCommand.java | 2 +- src/main/java/org/scijava/command/DynamicCommandInfo.java | 2 +- src/main/java/org/scijava/command/Inputs.java | 2 +- src/main/java/org/scijava/command/Interactive.java | 2 +- src/main/java/org/scijava/command/InteractiveCommand.java | 2 +- src/main/java/org/scijava/command/ModuleCommand.java | 2 +- src/main/java/org/scijava/command/Previewable.java | 2 +- src/main/java/org/scijava/command/UnimplementedCommand.java | 2 +- src/main/java/org/scijava/command/console/RunArgument.java | 2 +- src/main/java/org/scijava/command/run/CommandCodeRunner.java | 2 +- src/main/java/org/scijava/console/AbstractConsoleArgument.java | 2 +- src/main/java/org/scijava/console/ConsoleArgument.java | 2 +- src/main/java/org/scijava/console/ConsoleService.java | 2 +- src/main/java/org/scijava/console/ConsoleUtils.java | 2 +- src/main/java/org/scijava/console/DefaultConsoleService.java | 2 +- src/main/java/org/scijava/console/MultiOutputStream.java | 2 +- src/main/java/org/scijava/console/MultiPrintStream.java | 2 +- src/main/java/org/scijava/console/OutputEvent.java | 2 +- src/main/java/org/scijava/console/OutputListener.java | 2 +- src/main/java/org/scijava/console/SystemPropertyArgument.java | 2 +- src/main/java/org/scijava/convert/AbstractConvertService.java | 2 +- src/main/java/org/scijava/convert/AbstractConverter.java | 2 +- .../java/org/scijava/convert/AbstractDelegateConverter.java | 2 +- src/main/java/org/scijava/convert/ArrayConverters.java | 2 +- src/main/java/org/scijava/convert/ArrayToStringConverter.java | 2 +- src/main/java/org/scijava/convert/CastingConverter.java | 2 +- src/main/java/org/scijava/convert/ConversionRequest.java | 2 +- src/main/java/org/scijava/convert/ConvertService.java | 2 +- src/main/java/org/scijava/convert/Converter.java | 2 +- src/main/java/org/scijava/convert/DefaultConvertService.java | 2 +- src/main/java/org/scijava/convert/DefaultConverter.java | 2 +- src/main/java/org/scijava/convert/FileListConverters.java | 2 +- src/main/java/org/scijava/convert/FileToPathConverter.java | 2 +- src/main/java/org/scijava/convert/NullConverter.java | 2 +- src/main/java/org/scijava/convert/NumberConverters.java | 2 +- .../java/org/scijava/convert/NumberToBigDecimalConverter.java | 2 +- .../java/org/scijava/convert/NumberToBigIntegerConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToDoubleConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToFloatConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToIntegerConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToLongConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToNumberConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToShortConverter.java | 2 +- src/main/java/org/scijava/convert/PathToFileConverter.java | 2 +- src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java | 2 +- src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java | 2 +- src/main/java/org/scijava/convert/StringToArrayConverter.java | 2 +- src/main/java/org/scijava/convert/StringToNumberConverter.java | 2 +- src/main/java/org/scijava/display/AbstractDisplay.java | 2 +- .../java/org/scijava/display/ActiveDisplayPreprocessor.java | 2 +- src/main/java/org/scijava/display/DefaultDisplay.java | 2 +- src/main/java/org/scijava/display/DefaultDisplayService.java | 2 +- src/main/java/org/scijava/display/DefaultTextDisplay.java | 2 +- src/main/java/org/scijava/display/Display.java | 2 +- src/main/java/org/scijava/display/DisplayPostprocessor.java | 2 +- src/main/java/org/scijava/display/DisplayService.java | 2 +- src/main/java/org/scijava/display/Displayable.java | 2 +- src/main/java/org/scijava/display/TextDisplay.java | 2 +- .../java/org/scijava/display/event/DisplayActivatedEvent.java | 2 +- .../java/org/scijava/display/event/DisplayCreatedEvent.java | 2 +- .../java/org/scijava/display/event/DisplayDeletedEvent.java | 2 +- src/main/java/org/scijava/display/event/DisplayEvent.java | 2 +- .../java/org/scijava/display/event/DisplayUpdatedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/InputEvent.java | 2 +- src/main/java/org/scijava/display/event/input/KyEvent.java | 2 +- .../java/org/scijava/display/event/input/KyPressedEvent.java | 2 +- .../java/org/scijava/display/event/input/KyReleasedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/KyTypedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsButtonEvent.java | 2 +- .../java/org/scijava/display/event/input/MsClickedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsDraggedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsEnteredEvent.java | 2 +- src/main/java/org/scijava/display/event/input/MsEvent.java | 2 +- .../java/org/scijava/display/event/input/MsExitedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/MsMovedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsPressedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsReleasedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/MsWheelEvent.java | 2 +- .../org/scijava/display/event/window/WinActivatedEvent.java | 2 +- .../java/org/scijava/display/event/window/WinClosedEvent.java | 2 +- .../java/org/scijava/display/event/window/WinClosingEvent.java | 2 +- .../org/scijava/display/event/window/WinDeactivatedEvent.java | 2 +- .../org/scijava/display/event/window/WinDeiconifiedEvent.java | 2 +- src/main/java/org/scijava/display/event/window/WinEvent.java | 2 +- .../org/scijava/display/event/window/WinIconifiedEvent.java | 2 +- .../java/org/scijava/display/event/window/WinOpenedEvent.java | 2 +- src/main/java/org/scijava/download/DefaultDownloadService.java | 2 +- src/main/java/org/scijava/download/DiskLocationCache.java | 2 +- src/main/java/org/scijava/download/Download.java | 2 +- src/main/java/org/scijava/download/DownloadService.java | 2 +- src/main/java/org/scijava/download/LocationCache.java | 2 +- src/main/java/org/scijava/download/MultiWriteHandle.java | 2 +- src/main/java/org/scijava/event/ContextCreatedEvent.java | 2 +- src/main/java/org/scijava/event/ContextDisposingEvent.java | 2 +- src/main/java/org/scijava/event/DefaultEventBus.java | 2 +- src/main/java/org/scijava/event/DefaultEventHistory.java | 2 +- src/main/java/org/scijava/event/DefaultEventService.java | 2 +- src/main/java/org/scijava/event/EventDetails.java | 2 +- src/main/java/org/scijava/event/EventHandler.java | 2 +- src/main/java/org/scijava/event/EventHistory.java | 2 +- src/main/java/org/scijava/event/EventHistoryListener.java | 2 +- src/main/java/org/scijava/event/EventService.java | 2 +- src/main/java/org/scijava/event/EventSubscriber.java | 2 +- src/main/java/org/scijava/event/SciJavaEvent.java | 2 +- src/main/java/org/scijava/input/Accelerator.java | 2 +- src/main/java/org/scijava/input/DefaultInputService.java | 2 +- src/main/java/org/scijava/input/InputModifiers.java | 2 +- src/main/java/org/scijava/input/InputService.java | 2 +- src/main/java/org/scijava/input/KeyCode.java | 2 +- src/main/java/org/scijava/input/MouseCursor.java | 2 +- src/main/java/org/scijava/io/AbstractIOPlugin.java | 2 +- src/main/java/org/scijava/io/AbstractTypedIOService.java | 2 +- src/main/java/org/scijava/io/ByteArrayByteBank.java | 2 +- src/main/java/org/scijava/io/ByteBank.java | 2 +- src/main/java/org/scijava/io/DefaultIOService.java | 2 +- src/main/java/org/scijava/io/DefaultRecentFileService.java | 2 +- src/main/java/org/scijava/io/IOPlugin.java | 2 +- src/main/java/org/scijava/io/IOService.java | 2 +- src/main/java/org/scijava/io/RecentFileService.java | 2 +- src/main/java/org/scijava/io/TypedIOService.java | 2 +- src/main/java/org/scijava/io/console/OpenArgument.java | 2 +- src/main/java/org/scijava/io/event/DataOpenedEvent.java | 2 +- src/main/java/org/scijava/io/event/DataSavedEvent.java | 2 +- src/main/java/org/scijava/io/event/IOEvent.java | 2 +- src/main/java/org/scijava/io/handle/AbstractDataHandle.java | 2 +- .../java/org/scijava/io/handle/AbstractHigherOrderHandle.java | 2 +- .../org/scijava/io/handle/AbstractSeekableStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/AbstractStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/BytesHandle.java | 2 +- src/main/java/org/scijava/io/handle/DataHandle.java | 2 +- src/main/java/org/scijava/io/handle/DataHandleInputStream.java | 2 +- src/main/java/org/scijava/io/handle/DataHandleOutputStream.java | 2 +- src/main/java/org/scijava/io/handle/DataHandleService.java | 2 +- src/main/java/org/scijava/io/handle/DataHandles.java | 2 +- .../java/org/scijava/io/handle/DefaultDataHandleService.java | 2 +- src/main/java/org/scijava/io/handle/DummyHandle.java | 2 +- src/main/java/org/scijava/io/handle/FileHandle.java | 2 +- src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java | 2 +- src/main/java/org/scijava/io/handle/ResettableStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/SeekableStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/StreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java | 2 +- src/main/java/org/scijava/io/location/AbstractLocation.java | 2 +- .../java/org/scijava/io/location/AbstractLocationResolver.java | 2 +- .../java/org/scijava/io/location/AbstractRemoteLocation.java | 2 +- src/main/java/org/scijava/io/location/BrowsableLocation.java | 2 +- src/main/java/org/scijava/io/location/BytesLocation.java | 2 +- .../java/org/scijava/io/location/DefaultLocationService.java | 2 +- src/main/java/org/scijava/io/location/DummyLocation.java | 2 +- src/main/java/org/scijava/io/location/FileLocation.java | 2 +- src/main/java/org/scijava/io/location/FileLocationResolver.java | 2 +- src/main/java/org/scijava/io/location/Location.java | 2 +- src/main/java/org/scijava/io/location/LocationResolver.java | 2 +- src/main/java/org/scijava/io/location/LocationService.java | 2 +- src/main/java/org/scijava/io/location/RemoteLocation.java | 2 +- src/main/java/org/scijava/io/location/URILocation.java | 2 +- src/main/java/org/scijava/io/location/URLLocation.java | 2 +- src/main/java/org/scijava/io/nio/ByteBufferByteBank.java | 2 +- src/main/java/org/scijava/io/nio/DefaultNIOService.java | 2 +- src/main/java/org/scijava/io/nio/NIOService.java | 2 +- src/main/java/org/scijava/log/AbstractLogService.java | 2 +- src/main/java/org/scijava/log/CallingClassUtils.java | 2 +- src/main/java/org/scijava/log/DefaultLogger.java | 2 +- .../java/org/scijava/log/DefaultUncaughtExceptionHandler.java | 2 +- src/main/java/org/scijava/log/IgnoreAsCallingClass.java | 2 +- src/main/java/org/scijava/log/LogLevel.java | 2 +- src/main/java/org/scijava/log/LogListener.java | 2 +- src/main/java/org/scijava/log/LogMessage.java | 2 +- src/main/java/org/scijava/log/LogService.java | 2 +- src/main/java/org/scijava/log/LogSource.java | 2 +- src/main/java/org/scijava/log/Logged.java | 2 +- src/main/java/org/scijava/log/Logger.java | 2 +- src/main/java/org/scijava/log/StderrLogService.java | 2 +- src/main/java/org/scijava/main/DefaultMainService.java | 2 +- src/main/java/org/scijava/main/MainService.java | 2 +- src/main/java/org/scijava/main/console/MainArgument.java | 2 +- src/main/java/org/scijava/main/run/MainCodeRunner.java | 2 +- src/main/java/org/scijava/menu/AbstractMenuCreator.java | 2 +- src/main/java/org/scijava/menu/DefaultMenuService.java | 2 +- src/main/java/org/scijava/menu/MenuConstants.java | 2 +- src/main/java/org/scijava/menu/MenuCreator.java | 2 +- src/main/java/org/scijava/menu/MenuService.java | 2 +- src/main/java/org/scijava/menu/ShadowMenu.java | 2 +- src/main/java/org/scijava/menu/ShadowMenuIterator.java | 2 +- src/main/java/org/scijava/menu/event/MenuEvent.java | 2 +- src/main/java/org/scijava/menu/event/MenusAddedEvent.java | 2 +- src/main/java/org/scijava/menu/event/MenusRemovedEvent.java | 2 +- src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java | 2 +- src/main/java/org/scijava/module/AbstractModule.java | 2 +- src/main/java/org/scijava/module/AbstractModuleInfo.java | 2 +- src/main/java/org/scijava/module/AbstractModuleItem.java | 2 +- src/main/java/org/scijava/module/DefaultModuleService.java | 2 +- src/main/java/org/scijava/module/DefaultMutableModule.java | 2 +- src/main/java/org/scijava/module/DefaultMutableModuleInfo.java | 2 +- src/main/java/org/scijava/module/DefaultMutableModuleItem.java | 2 +- src/main/java/org/scijava/module/MethodCallException.java | 2 +- src/main/java/org/scijava/module/MethodRef.java | 2 +- src/main/java/org/scijava/module/Module.java | 2 +- src/main/java/org/scijava/module/ModuleCanceledException.java | 2 +- src/main/java/org/scijava/module/ModuleException.java | 2 +- src/main/java/org/scijava/module/ModuleIndex.java | 2 +- src/main/java/org/scijava/module/ModuleInfo.java | 2 +- src/main/java/org/scijava/module/ModuleItem.java | 2 +- src/main/java/org/scijava/module/ModuleRunner.java | 2 +- src/main/java/org/scijava/module/ModuleService.java | 2 +- src/main/java/org/scijava/module/MutableModule.java | 2 +- src/main/java/org/scijava/module/MutableModuleInfo.java | 2 +- src/main/java/org/scijava/module/MutableModuleItem.java | 2 +- src/main/java/org/scijava/module/event/ModuleCanceledEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleErroredEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleExecutedEvent.java | 2 +- .../java/org/scijava/module/event/ModuleExecutingEvent.java | 2 +- .../java/org/scijava/module/event/ModuleExecutionEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleFinishedEvent.java | 2 +- .../java/org/scijava/module/event/ModulePostprocessEvent.java | 2 +- .../java/org/scijava/module/event/ModulePreprocessEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleProcessEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleStartedEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesAddedEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesListEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesRemovedEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java | 2 +- .../org/scijava/module/process/AbstractPostprocessorPlugin.java | 2 +- .../org/scijava/module/process/AbstractPreprocessorPlugin.java | 2 +- .../scijava/module/process/AbstractSingleInputPreprocessor.java | 2 +- .../org/scijava/module/process/CheckInputsPreprocessor.java | 2 +- .../java/org/scijava/module/process/DebugPostprocessor.java | 2 +- src/main/java/org/scijava/module/process/DebugPreprocessor.java | 2 +- .../org/scijava/module/process/DefaultValuePreprocessor.java | 2 +- .../java/org/scijava/module/process/GatewayPreprocessor.java | 2 +- src/main/java/org/scijava/module/process/InitPreprocessor.java | 2 +- .../java/org/scijava/module/process/LoadInputsPreprocessor.java | 2 +- .../java/org/scijava/module/process/LoggerPreprocessor.java | 2 +- .../java/org/scijava/module/process/ModulePostprocessor.java | 2 +- .../java/org/scijava/module/process/ModulePreprocessor.java | 2 +- src/main/java/org/scijava/module/process/ModuleProcessor.java | 2 +- .../java/org/scijava/module/process/PostprocessorPlugin.java | 2 +- .../java/org/scijava/module/process/PreprocessorPlugin.java | 2 +- .../java/org/scijava/module/process/SaveInputsPreprocessor.java | 2 +- .../java/org/scijava/module/process/ServicePreprocessor.java | 2 +- .../java/org/scijava/module/process/ValidityPreprocessor.java | 2 +- src/main/java/org/scijava/module/run/ModuleCodeRunner.java | 2 +- src/main/java/org/scijava/object/DefaultObjectService.java | 2 +- src/main/java/org/scijava/object/LazyObjects.java | 2 +- src/main/java/org/scijava/object/NamedObjectIndex.java | 2 +- src/main/java/org/scijava/object/ObjectIndex.java | 2 +- src/main/java/org/scijava/object/ObjectService.java | 2 +- src/main/java/org/scijava/object/SortedObjectIndex.java | 2 +- src/main/java/org/scijava/object/event/ListEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectCreatedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectDeletedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectModifiedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectsAddedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectsListEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java | 2 +- src/main/java/org/scijava/options/DefaultOptionsService.java | 2 +- src/main/java/org/scijava/options/OptionsPlugin.java | 2 +- src/main/java/org/scijava/options/OptionsService.java | 2 +- src/main/java/org/scijava/options/event/OptionsEvent.java | 2 +- src/main/java/org/scijava/parse/DefaultParseService.java | 2 +- src/main/java/org/scijava/parse/Item.java | 2 +- src/main/java/org/scijava/parse/Items.java | 2 +- src/main/java/org/scijava/parse/ParseService.java | 2 +- src/main/java/org/scijava/platform/AbstractPlatform.java | 2 +- src/main/java/org/scijava/platform/AppEventService.java | 2 +- src/main/java/org/scijava/platform/DefaultAppEventService.java | 2 +- src/main/java/org/scijava/platform/DefaultPlatform.java | 2 +- src/main/java/org/scijava/platform/DefaultPlatformService.java | 2 +- src/main/java/org/scijava/platform/Platform.java | 2 +- src/main/java/org/scijava/platform/PlatformService.java | 2 +- src/main/java/org/scijava/platform/event/AppAboutEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppFocusEvent.java | 2 +- .../java/org/scijava/platform/event/AppMenusCreatedEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java | 2 +- .../java/org/scijava/platform/event/AppPreferencesEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppPrintEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppQuitEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppReOpenEvent.java | 2 +- .../java/org/scijava/platform/event/AppScreenSleepEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppSleepEvent.java | 2 +- .../java/org/scijava/platform/event/AppSystemSleepEvent.java | 2 +- .../java/org/scijava/platform/event/AppUserSessionEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppVisibleEvent.java | 2 +- src/main/java/org/scijava/platform/event/ApplicationEvent.java | 2 +- src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractHandlerService.java | 2 +- src/main/java/org/scijava/plugin/AbstractPTService.java | 2 +- src/main/java/org/scijava/plugin/AbstractRichPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractSingletonService.java | 2 +- src/main/java/org/scijava/plugin/AbstractTypedPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractTypedService.java | 2 +- src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractWrapperService.java | 2 +- src/main/java/org/scijava/plugin/Attr.java | 2 +- src/main/java/org/scijava/plugin/DefaultPluginFinder.java | 2 +- src/main/java/org/scijava/plugin/DefaultPluginService.java | 2 +- src/main/java/org/scijava/plugin/HandlerPlugin.java | 2 +- src/main/java/org/scijava/plugin/HandlerService.java | 2 +- src/main/java/org/scijava/plugin/HasPluginInfo.java | 2 +- src/main/java/org/scijava/plugin/Menu.java | 2 +- src/main/java/org/scijava/plugin/PTService.java | 2 +- src/main/java/org/scijava/plugin/Parameter.java | 2 +- src/main/java/org/scijava/plugin/Plugin.java | 2 +- src/main/java/org/scijava/plugin/PluginFinder.java | 2 +- src/main/java/org/scijava/plugin/PluginIndex.java | 2 +- src/main/java/org/scijava/plugin/PluginInfo.java | 2 +- src/main/java/org/scijava/plugin/PluginService.java | 2 +- src/main/java/org/scijava/plugin/RichPlugin.java | 2 +- src/main/java/org/scijava/plugin/SciJavaPlugin.java | 2 +- src/main/java/org/scijava/plugin/SingletonPlugin.java | 2 +- src/main/java/org/scijava/plugin/SingletonService.java | 2 +- src/main/java/org/scijava/plugin/SortablePlugin.java | 2 +- src/main/java/org/scijava/plugin/TypedPlugin.java | 2 +- src/main/java/org/scijava/plugin/TypedService.java | 2 +- src/main/java/org/scijava/plugin/WrapperPlugin.java | 2 +- src/main/java/org/scijava/plugin/WrapperService.java | 2 +- src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java | 2 +- src/main/java/org/scijava/plugin/event/PluginsListEvent.java | 2 +- src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java | 2 +- src/main/java/org/scijava/prefs/AbstractPrefService.java | 2 +- src/main/java/org/scijava/prefs/DefaultPrefService.java | 2 +- src/main/java/org/scijava/prefs/PrefService.java | 2 +- src/main/java/org/scijava/run/AbstractCodeRunner.java | 2 +- src/main/java/org/scijava/run/CodeRunner.java | 2 +- src/main/java/org/scijava/run/DefaultRunService.java | 2 +- src/main/java/org/scijava/run/RunService.java | 2 +- src/main/java/org/scijava/run/console/RunArgument.java | 2 +- src/main/java/org/scijava/script/AbstractAutoCompleter.java | 2 +- src/main/java/org/scijava/script/AbstractScriptContext.java | 2 +- src/main/java/org/scijava/script/AbstractScriptEngine.java | 2 +- src/main/java/org/scijava/script/AbstractScriptHeader.java | 2 +- src/main/java/org/scijava/script/AbstractScriptLanguage.java | 2 +- src/main/java/org/scijava/script/AdaptedScriptEngine.java | 2 +- src/main/java/org/scijava/script/AdaptedScriptLanguage.java | 2 +- src/main/java/org/scijava/script/AutoCompleter.java | 2 +- src/main/java/org/scijava/script/AutoCompletionResult.java | 2 +- src/main/java/org/scijava/script/CodeGenerator.java | 2 +- src/main/java/org/scijava/script/CodeGeneratorJava.java | 2 +- src/main/java/org/scijava/script/DefaultAutoCompleter.java | 2 +- .../java/org/scijava/script/DefaultScriptHeaderService.java | 2 +- src/main/java/org/scijava/script/DefaultScriptInterpreter.java | 2 +- src/main/java/org/scijava/script/DefaultScriptService.java | 2 +- src/main/java/org/scijava/script/InvocationObject.java | 2 +- src/main/java/org/scijava/script/ParameterObject.java | 2 +- src/main/java/org/scijava/script/ScriptCLI.java | 2 +- src/main/java/org/scijava/script/ScriptFinder.java | 2 +- src/main/java/org/scijava/script/ScriptHeader.java | 2 +- src/main/java/org/scijava/script/ScriptHeaderService.java | 2 +- src/main/java/org/scijava/script/ScriptInfo.java | 2 +- src/main/java/org/scijava/script/ScriptInterpreter.java | 2 +- src/main/java/org/scijava/script/ScriptLanguage.java | 2 +- src/main/java/org/scijava/script/ScriptLanguageIndex.java | 2 +- src/main/java/org/scijava/script/ScriptModule.java | 2 +- src/main/java/org/scijava/script/ScriptREPL.java | 2 +- src/main/java/org/scijava/script/ScriptService.java | 2 +- src/main/java/org/scijava/script/console/RunScriptArgument.java | 2 +- src/main/java/org/scijava/script/io/ScriptIOPlugin.java | 2 +- .../scijava/script/process/DefaultScriptProcessorService.java | 2 +- .../org/scijava/script/process/DirectiveScriptProcessor.java | 2 +- .../org/scijava/script/process/ParameterScriptProcessor.java | 2 +- src/main/java/org/scijava/script/process/ScriptCallback.java | 2 +- .../scijava/script/process/ScriptDirectiveScriptProcessor.java | 2 +- src/main/java/org/scijava/script/process/ScriptProcessor.java | 2 +- .../java/org/scijava/script/process/ScriptProcessorService.java | 2 +- .../java/org/scijava/script/process/ShebangScriptProcessor.java | 2 +- src/main/java/org/scijava/script/run/ScriptCodeRunner.java | 2 +- src/main/java/org/scijava/service/AbstractService.java | 2 +- src/main/java/org/scijava/service/SciJavaService.java | 2 +- src/main/java/org/scijava/service/Service.java | 2 +- src/main/java/org/scijava/service/ServiceHelper.java | 2 +- src/main/java/org/scijava/service/ServiceIndex.java | 2 +- .../java/org/scijava/service/event/ServicesLoadedEvent.java | 2 +- src/main/java/org/scijava/startup/DefaultStartupService.java | 2 +- src/main/java/org/scijava/startup/StartupService.java | 2 +- src/main/java/org/scijava/task/DefaultTask.java | 2 +- src/main/java/org/scijava/task/DefaultTaskService.java | 2 +- src/main/java/org/scijava/task/Task.java | 2 +- src/main/java/org/scijava/task/TaskService.java | 2 +- src/main/java/org/scijava/task/event/TaskEvent.java | 2 +- src/main/java/org/scijava/test/TestUtils.java | 2 +- src/main/java/org/scijava/text/AbstractTextFormat.java | 2 +- src/main/java/org/scijava/text/DefaultTextService.java | 2 +- src/main/java/org/scijava/text/TextFormat.java | 2 +- src/main/java/org/scijava/text/TextService.java | 2 +- src/main/java/org/scijava/text/io/DefaultTextIOService.java | 2 +- src/main/java/org/scijava/text/io/TextIOPlugin.java | 2 +- src/main/java/org/scijava/text/io/TextIOService.java | 2 +- src/main/java/org/scijava/thread/DefaultThreadService.java | 2 +- src/main/java/org/scijava/thread/ThreadService.java | 2 +- src/main/java/org/scijava/tool/AbstractTool.java | 2 +- src/main/java/org/scijava/tool/CustomDrawnTool.java | 2 +- src/main/java/org/scijava/tool/DefaultToolService.java | 2 +- src/main/java/org/scijava/tool/DummyTool.java | 2 +- src/main/java/org/scijava/tool/IconDrawer.java | 2 +- src/main/java/org/scijava/tool/IconService.java | 2 +- src/main/java/org/scijava/tool/Tool.java | 2 +- src/main/java/org/scijava/tool/ToolService.java | 2 +- src/main/java/org/scijava/tool/event/ToolActivatedEvent.java | 2 +- src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java | 2 +- src/main/java/org/scijava/tool/event/ToolEvent.java | 2 +- src/main/java/org/scijava/ui/ARGBPlane.java | 2 +- src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java | 2 +- src/main/java/org/scijava/ui/AbstractUIInputWidget.java | 2 +- src/main/java/org/scijava/ui/AbstractUserInterface.java | 2 +- src/main/java/org/scijava/ui/ApplicationFrame.java | 2 +- src/main/java/org/scijava/ui/Arrangeable.java | 2 +- src/main/java/org/scijava/ui/CloseConfirmable.java | 2 +- src/main/java/org/scijava/ui/DefaultUIService.java | 2 +- src/main/java/org/scijava/ui/Desktop.java | 2 +- src/main/java/org/scijava/ui/DialogPrompt.java | 2 +- src/main/java/org/scijava/ui/FileListPreprocessor.java | 2 +- src/main/java/org/scijava/ui/FilePreprocessor.java | 2 +- src/main/java/org/scijava/ui/StatusBar.java | 2 +- src/main/java/org/scijava/ui/SystemClipboard.java | 2 +- src/main/java/org/scijava/ui/ToolBar.java | 2 +- src/main/java/org/scijava/ui/UIPreprocessor.java | 2 +- src/main/java/org/scijava/ui/UIService.java | 2 +- src/main/java/org/scijava/ui/UserInterface.java | 2 +- src/main/java/org/scijava/ui/console/AbstractConsolePane.java | 2 +- src/main/java/org/scijava/ui/console/ConsolePane.java | 2 +- src/main/java/org/scijava/ui/console/HeadlessArgument.java | 2 +- src/main/java/org/scijava/ui/console/ShowUIArgument.java | 2 +- src/main/java/org/scijava/ui/console/UIArgument.java | 2 +- src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java | 2 +- .../java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java | 2 +- src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java | 2 +- src/main/java/org/scijava/ui/dnd/DragAndDropData.java | 2 +- src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/DragAndDropService.java | 2 +- src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/MIMEType.java | 2 +- .../java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DropEvent.java | 2 +- src/main/java/org/scijava/ui/event/UIEvent.java | 2 +- src/main/java/org/scijava/ui/event/UIShownEvent.java | 2 +- .../java/org/scijava/ui/headless/HeadlessDisplayViewer.java | 2 +- src/main/java/org/scijava/ui/headless/HeadlessUI.java | 2 +- src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java | 2 +- src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java | 2 +- src/main/java/org/scijava/ui/viewer/DisplayPanel.java | 2 +- src/main/java/org/scijava/ui/viewer/DisplayViewer.java | 2 +- src/main/java/org/scijava/ui/viewer/DisplayWindow.java | 2 +- .../org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java | 2 +- src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java | 2 +- src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java | 2 +- src/main/java/org/scijava/util/AbstractPrimitiveArray.java | 2 +- src/main/java/org/scijava/util/AppUtils.java | 2 +- src/main/java/org/scijava/util/ArrayUtils.java | 2 +- src/main/java/org/scijava/util/BoolArray.java | 2 +- src/main/java/org/scijava/util/ByteArray.java | 2 +- src/main/java/org/scijava/util/Bytes.java | 2 +- src/main/java/org/scijava/util/CharArray.java | 2 +- src/main/java/org/scijava/util/CheckSezpoz.java | 2 +- src/main/java/org/scijava/util/ClassUtils.java | 2 +- src/main/java/org/scijava/util/ColorRGB.java | 2 +- src/main/java/org/scijava/util/ColorRGBA.java | 2 +- src/main/java/org/scijava/util/Colors.java | 2 +- src/main/java/org/scijava/util/CombineAnnotations.java | 2 +- src/main/java/org/scijava/util/Combiner.java | 2 +- src/main/java/org/scijava/util/ConversionUtils.java | 2 +- src/main/java/org/scijava/util/DebugUtils.java | 2 +- src/main/java/org/scijava/util/DefaultTreeNode.java | 2 +- src/main/java/org/scijava/util/DigestUtils.java | 2 +- src/main/java/org/scijava/util/DoubleArray.java | 2 +- src/main/java/org/scijava/util/FileUtils.java | 2 +- src/main/java/org/scijava/util/FloatArray.java | 2 +- src/main/java/org/scijava/util/GenericUtils.java | 2 +- src/main/java/org/scijava/util/IntArray.java | 2 +- src/main/java/org/scijava/util/IntCoords.java | 2 +- src/main/java/org/scijava/util/IntRect.java | 2 +- src/main/java/org/scijava/util/IteratorPlus.java | 2 +- src/main/java/org/scijava/util/LastRecentlyUsed.java | 2 +- src/main/java/org/scijava/util/LineOutputStream.java | 2 +- src/main/java/org/scijava/util/ListUtils.java | 2 +- src/main/java/org/scijava/util/LongArray.java | 2 +- src/main/java/org/scijava/util/Manifest.java | 2 +- src/main/java/org/scijava/util/MersenneTwisterFast.java | 2 +- src/main/java/org/scijava/util/MetaInfCombiner.java | 2 +- src/main/java/org/scijava/util/MirrorWebsite.java | 2 +- src/main/java/org/scijava/util/MiscUtils.java | 2 +- src/main/java/org/scijava/util/NumberUtils.java | 2 +- src/main/java/org/scijava/util/ObjectArray.java | 2 +- src/main/java/org/scijava/util/POM.java | 2 +- src/main/java/org/scijava/util/PlatformUtils.java | 2 +- src/main/java/org/scijava/util/Prefs.java | 2 +- src/main/java/org/scijava/util/PrimitiveArray.java | 2 +- src/main/java/org/scijava/util/ProcessUtils.java | 2 +- src/main/java/org/scijava/util/Query.java | 2 +- src/main/java/org/scijava/util/ReadInto.java | 2 +- src/main/java/org/scijava/util/RealCoords.java | 2 +- src/main/java/org/scijava/util/RealRect.java | 2 +- src/main/java/org/scijava/util/ReflectException.java | 2 +- src/main/java/org/scijava/util/ReflectedUniverse.java | 2 +- src/main/java/org/scijava/util/ServiceCombiner.java | 2 +- src/main/java/org/scijava/util/ShortArray.java | 2 +- src/main/java/org/scijava/util/Sizable.java | 2 +- src/main/java/org/scijava/util/SizableArrayList.java | 2 +- src/main/java/org/scijava/util/StringMaker.java | 2 +- src/main/java/org/scijava/util/StringUtils.java | 2 +- src/main/java/org/scijava/util/Timing.java | 2 +- src/main/java/org/scijava/util/TreeNode.java | 2 +- src/main/java/org/scijava/util/TunePlayer.java | 2 +- src/main/java/org/scijava/util/Types.java | 2 +- src/main/java/org/scijava/util/UnitUtils.java | 2 +- src/main/java/org/scijava/util/VersionUtils.java | 2 +- src/main/java/org/scijava/util/XML.java | 2 +- src/main/java/org/scijava/welcome/DefaultWelcomeService.java | 2 +- src/main/java/org/scijava/welcome/WelcomeService.java | 2 +- src/main/java/org/scijava/welcome/event/WelcomeEvent.java | 2 +- src/main/java/org/scijava/widget/AbstractInputHarvester.java | 2 +- src/main/java/org/scijava/widget/AbstractInputPanel.java | 2 +- src/main/java/org/scijava/widget/AbstractInputWidget.java | 2 +- src/main/java/org/scijava/widget/Button.java | 2 +- src/main/java/org/scijava/widget/ButtonWidget.java | 2 +- src/main/java/org/scijava/widget/ChoiceWidget.java | 2 +- src/main/java/org/scijava/widget/ColorWidget.java | 2 +- src/main/java/org/scijava/widget/DateWidget.java | 2 +- src/main/java/org/scijava/widget/DefaultWidgetModel.java | 2 +- src/main/java/org/scijava/widget/DefaultWidgetService.java | 2 +- src/main/java/org/scijava/widget/FileListWidget.java | 2 +- src/main/java/org/scijava/widget/FileWidget.java | 2 +- src/main/java/org/scijava/widget/InputHarvester.java | 2 +- src/main/java/org/scijava/widget/InputPanel.java | 2 +- src/main/java/org/scijava/widget/InputWidget.java | 2 +- src/main/java/org/scijava/widget/MessageWidget.java | 2 +- src/main/java/org/scijava/widget/NumberWidget.java | 2 +- src/main/java/org/scijava/widget/ObjectWidget.java | 2 +- src/main/java/org/scijava/widget/TextWidget.java | 2 +- src/main/java/org/scijava/widget/ToggleWidget.java | 2 +- src/main/java/org/scijava/widget/UIComponent.java | 2 +- src/main/java/org/scijava/widget/WidgetModel.java | 2 +- src/main/java/org/scijava/widget/WidgetService.java | 2 +- src/main/java/org/scijava/widget/WidgetStyle.java | 2 +- src/test/java/org/scijava/ContextCreationTest.java | 2 +- src/test/java/org/scijava/ContextDisposalTest.java | 2 +- src/test/java/org/scijava/ContextInjectionTest.java | 2 +- src/test/java/org/scijava/SciJavaTest.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedA.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedB.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedC.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedD.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedInnerClass.java | 2 +- src/test/java/org/scijava/annotations/Complex.java | 2 +- src/test/java/org/scijava/annotations/DirectoryIndexerTest.java | 2 +- src/test/java/org/scijava/annotations/EclipseHelperTest.java | 2 +- src/test/java/org/scijava/annotations/Fruit.java | 2 +- src/test/java/org/scijava/annotations/LegacyTest.java | 2 +- src/test/java/org/scijava/annotations/Simple.java | 2 +- src/test/java/org/scijava/app/StatusServiceTest.java | 2 +- .../java/org/scijava/command/CommandArrayConverterTest.java | 2 +- src/test/java/org/scijava/command/CommandInfoTest.java | 2 +- src/test/java/org/scijava/command/CommandModuleTest.java | 2 +- src/test/java/org/scijava/command/CommandServiceTest.java | 2 +- src/test/java/org/scijava/command/InputsTest.java | 2 +- src/test/java/org/scijava/command/InvalidCommandTest.java | 2 +- .../java/org/scijava/command/run/CommandCodeRunnerTest.java | 2 +- src/test/java/org/scijava/console/ConsoleServiceTest.java | 2 +- .../java/org/scijava/console/SystemPropertyArgumentTest.java | 2 +- .../java/org/scijava/convert/AbstractNumberConverterTests.java | 2 +- .../java/org/scijava/convert/ArrayToStringConverterTest.java | 2 +- .../scijava/convert/BigIntegerToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToBigIntegerConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToDoubleConverterTest.java | 2 +- src/test/java/org/scijava/convert/ByteToFloatConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToIntegerConverterTest.java | 2 +- src/test/java/org/scijava/convert/ByteToLongConverterTest.java | 2 +- src/test/java/org/scijava/convert/ByteToShortConverterTest.java | 2 +- src/test/java/org/scijava/convert/ConvertServiceTest.java | 2 +- src/test/java/org/scijava/convert/ConverterTest.java | 2 +- src/test/java/org/scijava/convert/DefaultConverterTest.java | 2 +- src/test/java/org/scijava/convert/DelegateConverterTest.java | 2 +- .../org/scijava/convert/DoubleToBigDecimalConverterTest.java | 2 +- src/test/java/org/scijava/convert/FileListConverterTest.java | 2 +- src/test/java/org/scijava/convert/FileToPathConversionTest.java | 2 +- .../org/scijava/convert/FloatToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/FloatToDoubleConverterTest.java | 2 +- .../org/scijava/convert/IntegerToBigDecimalConverterTest.java | 2 +- .../org/scijava/convert/IntegerToBigIntegerConverterTest.java | 2 +- .../java/org/scijava/convert/IntegerToDoubleConverterTest.java | 2 +- .../java/org/scijava/convert/IntegerToLongConverterTest.java | 2 +- .../java/org/scijava/convert/LongToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/LongToBigIntegerConverterTest.java | 2 +- .../org/scijava/convert/ShortToBigDecimalConverterTest.java | 2 +- .../org/scijava/convert/ShortToBigIntegerConverterTest.java | 2 +- .../java/org/scijava/convert/ShortToDoubleConverterTest.java | 2 +- .../java/org/scijava/convert/ShortToFloatConverterTest.java | 2 +- .../java/org/scijava/convert/ShortToIntegerConverterTest.java | 2 +- src/test/java/org/scijava/convert/ShortToLongConverterTest.java | 2 +- .../java/org/scijava/convert/StringToArrayConverterTest.java | 2 +- .../java/org/scijava/convert/StringToNumberConverterTest.java | 2 +- src/test/java/org/scijava/display/DisplayTest.java | 2 +- src/test/java/org/scijava/download/DownloadServiceTest.java | 2 +- src/test/java/org/scijava/event/EventServiceTest.java | 2 +- src/test/java/org/scijava/io/ByteArrayByteBankTest.java | 2 +- src/test/java/org/scijava/io/ByteBankTest.java | 2 +- src/test/java/org/scijava/io/IOServiceTest.java | 2 +- src/test/java/org/scijava/io/TypedIOServiceTest.java | 2 +- src/test/java/org/scijava/io/event/DataEventTest.java | 2 +- src/test/java/org/scijava/io/handle/BytesHandleTest.java | 2 +- .../java/org/scijava/io/handle/DataHandleEdgeCaseTests.java | 2 +- src/test/java/org/scijava/io/handle/DataHandleTest.java | 2 +- src/test/java/org/scijava/io/handle/DataHandlesTest.java | 2 +- src/test/java/org/scijava/io/handle/FileHandleTest.java | 2 +- .../org/scijava/io/handle/ReadBufferDataHandleMockTest.java | 2 +- .../java/org/scijava/io/handle/ReadBufferDataHandleTest.java | 2 +- .../java/org/scijava/io/handle/WriteBufferDataHandleTest.java | 2 +- src/test/java/org/scijava/io/location/BytesLocationTest.java | 2 +- .../java/org/scijava/io/location/FileLocationResolverTest.java | 2 +- src/test/java/org/scijava/io/location/FileLocationTest.java | 2 +- src/test/java/org/scijava/io/location/LocationServiceTest.java | 2 +- src/test/java/org/scijava/io/location/URILocationTest.java | 2 +- src/test/java/org/scijava/io/location/URLLocationTest.java | 2 +- src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java | 2 +- src/test/java/org/scijava/log/CallingClassUtilsTest.java | 2 +- src/test/java/org/scijava/log/DefaultLoggerTest.java | 2 +- src/test/java/org/scijava/log/LogMessageTest.java | 2 +- src/test/java/org/scijava/log/LogServiceTest.java | 2 +- src/test/java/org/scijava/log/LogSourceTest.java | 2 +- src/test/java/org/scijava/log/StderrLogServiceTest.java | 2 +- src/test/java/org/scijava/log/TestLogListener.java | 2 +- src/test/java/org/scijava/main/MainServiceTest.java | 2 +- src/test/java/org/scijava/main/run/MainCodeRunnerTest.java | 2 +- src/test/java/org/scijava/menu/MenuServiceTest.java | 2 +- src/test/java/org/scijava/menu/ShadowMenuTest.java | 2 +- src/test/java/org/scijava/module/ModuleServiceTest.java | 2 +- .../java/org/scijava/module/event/ModuleErroredEventTest.java | 2 +- .../java/org/scijava/module/process/LoggerPreprocessorTest.java | 2 +- src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java | 2 +- src/test/java/org/scijava/object/NamedObjectIndexTest.java | 2 +- src/test/java/org/scijava/object/ObjectIndexTest.java | 2 +- src/test/java/org/scijava/object/ObjectServiceTest.java | 2 +- src/test/java/org/scijava/object/SortedObjectIndexTest.java | 2 +- src/test/java/org/scijava/options/OptionsTest.java | 2 +- src/test/java/org/scijava/parse/ParseServiceTest.java | 2 +- src/test/java/org/scijava/plugin/PluginFinderTest.java | 2 +- src/test/java/org/scijava/plugin/PluginIndexTest.java | 2 +- src/test/java/org/scijava/plugin/PluginInfoTest.java | 2 +- src/test/java/org/scijava/plugin/SingletonServiceTest.java | 2 +- src/test/java/org/scijava/prefs/PrefServiceTest.java | 2 +- src/test/java/org/scijava/run/RunServiceTest.java | 2 +- .../java/org/scijava/script/AbstractScriptLanguageTest.java | 2 +- src/test/java/org/scijava/script/ScriptEngineTest.java | 2 +- src/test/java/org/scijava/script/ScriptFinderTest.java | 2 +- src/test/java/org/scijava/script/ScriptInfoTest.java | 2 +- src/test/java/org/scijava/script/ScriptServiceTest.java | 2 +- .../scijava/script/process/ParameterScriptProcessorTest.java | 2 +- src/test/java/org/scijava/service/ServiceIndexTest.java | 2 +- src/test/java/org/scijava/task/TaskEventTest.java | 2 +- src/test/java/org/scijava/task/TaskServiceTest.java | 2 +- src/test/java/org/scijava/test/AbstractSciJavaTest.java | 2 +- src/test/java/org/scijava/test/TestUtilsTest.java | 2 +- src/test/java/org/scijava/text/TextServiceTest.java | 2 +- src/test/java/org/scijava/thread/ThreadServiceTest.java | 2 +- src/test/java/org/scijava/ui/UIServiceTest.java | 2 +- src/test/java/org/scijava/util/AppUtilsTest.java | 2 +- src/test/java/org/scijava/util/ArrayUtilsTest.java | 2 +- src/test/java/org/scijava/util/BoolArrayTest.java | 2 +- src/test/java/org/scijava/util/ByteArrayTest.java | 2 +- src/test/java/org/scijava/util/CharArrayTest.java | 2 +- src/test/java/org/scijava/util/ClassUtilsTest.java | 2 +- src/test/java/org/scijava/util/ColorRGBTest.java | 2 +- src/test/java/org/scijava/util/ConversionUtilsTest.java | 2 +- src/test/java/org/scijava/util/DigestUtilsTest.java | 2 +- src/test/java/org/scijava/util/DoubleArrayTest.java | 2 +- src/test/java/org/scijava/util/FileUtilsTest.java | 2 +- src/test/java/org/scijava/util/FloatArrayTest.java | 2 +- src/test/java/org/scijava/util/GenericArrayTypesTest.java | 2 +- src/test/java/org/scijava/util/IntArrayTest.java | 2 +- src/test/java/org/scijava/util/LastRecentlyUsedTest.java | 2 +- src/test/java/org/scijava/util/LongArrayTest.java | 2 +- src/test/java/org/scijava/util/NumberUtilsTest.java | 2 +- src/test/java/org/scijava/util/ObjectArrayTest.java | 2 +- src/test/java/org/scijava/util/POMTest.java | 2 +- src/test/java/org/scijava/util/PrimitiveArrayTest.java | 2 +- src/test/java/org/scijava/util/ProcessUtilsTest.java | 2 +- src/test/java/org/scijava/util/ShortArrayTest.java | 2 +- src/test/java/org/scijava/util/StringUtilsTest.java | 2 +- src/test/java/org/scijava/util/TypesTest.java | 2 +- src/test/java/org/scijava/util/UnitUtilsTest.java | 2 +- src/test/java/org/scijava/util/VersionUtilsTest.java | 2 +- src/test/java/org/scijava/widget/WidgetStyleTest.java | 2 +- 755 files changed, 755 insertions(+), 755 deletions(-) diff --git a/src/it/apt-test/pom.xml b/src/it/apt-test/pom.xml index 514f2c7d7..0ce0ce63c 100644 --- a/src/it/apt-test/pom.xml +++ b/src/it/apt-test/pom.xml @@ -3,7 +3,7 @@ #%L SciJava Common shared library for SciJava software. %% - Copyright (C) 2009 - 2023 SciJava developers. + Copyright (C) 2009 - 2024 SciJava developers. %% Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/setup.bsh b/src/it/apt-test/setup.bsh index 245d04040..fed9016f3 100644 --- a/src/it/apt-test/setup.bsh +++ b/src/it/apt-test/setup.bsh @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java b/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java index 0f899650e..86df895da 100644 --- a/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java +++ b/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java b/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java index bad45ed0b..451e17e42 100644 --- a/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java +++ b/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/verify.bsh b/src/it/apt-test/verify.bsh index 399db31d8..a91b6f012 100644 --- a/src/it/apt-test/verify.bsh +++ b/src/it/apt-test/verify.bsh @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/settings.xml b/src/it/settings.xml index fb751e065..69b227865 100644 --- a/src/it/settings.xml +++ b/src/it/settings.xml @@ -3,7 +3,7 @@ #%L SciJava Common shared library for SciJava software. %% - Copyright (C) 2009 - 2023 SciJava developers. + Copyright (C) 2009 - 2024 SciJava developers. %% Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractBasicDetails.java b/src/main/java/org/scijava/AbstractBasicDetails.java index f3b30998c..cea966d7b 100644 --- a/src/main/java/org/scijava/AbstractBasicDetails.java +++ b/src/main/java/org/scijava/AbstractBasicDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractContextual.java b/src/main/java/org/scijava/AbstractContextual.java index b550ae26f..23a9076ba 100644 --- a/src/main/java/org/scijava/AbstractContextual.java +++ b/src/main/java/org/scijava/AbstractContextual.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractGateway.java b/src/main/java/org/scijava/AbstractGateway.java index 766597967..d6ee9b0fb 100644 --- a/src/main/java/org/scijava/AbstractGateway.java +++ b/src/main/java/org/scijava/AbstractGateway.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractUIDetails.java b/src/main/java/org/scijava/AbstractUIDetails.java index d6afda127..7fd19bfdd 100644 --- a/src/main/java/org/scijava/AbstractUIDetails.java +++ b/src/main/java/org/scijava/AbstractUIDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/BasicDetails.java b/src/main/java/org/scijava/BasicDetails.java index e6c96fbf1..de28e93bd 100644 --- a/src/main/java/org/scijava/BasicDetails.java +++ b/src/main/java/org/scijava/BasicDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Cancelable.java b/src/main/java/org/scijava/Cancelable.java index 74aef720e..4b2122560 100644 --- a/src/main/java/org/scijava/Cancelable.java +++ b/src/main/java/org/scijava/Cancelable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Context.java b/src/main/java/org/scijava/Context.java index 421ad2b36..561b53fc5 100644 --- a/src/main/java/org/scijava/Context.java +++ b/src/main/java/org/scijava/Context.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Contextual.java b/src/main/java/org/scijava/Contextual.java index 6862b19b8..9b41674da 100644 --- a/src/main/java/org/scijava/Contextual.java +++ b/src/main/java/org/scijava/Contextual.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Disposable.java b/src/main/java/org/scijava/Disposable.java index 6c1f51276..7b3db0a86 100644 --- a/src/main/java/org/scijava/Disposable.java +++ b/src/main/java/org/scijava/Disposable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Gateway.java b/src/main/java/org/scijava/Gateway.java index 657a7faa4..fdb8a624d 100644 --- a/src/main/java/org/scijava/Gateway.java +++ b/src/main/java/org/scijava/Gateway.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Identifiable.java b/src/main/java/org/scijava/Identifiable.java index 5d7b4301d..5e1063ee9 100644 --- a/src/main/java/org/scijava/Identifiable.java +++ b/src/main/java/org/scijava/Identifiable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Initializable.java b/src/main/java/org/scijava/Initializable.java index b8c4bd430..972a192c9 100644 --- a/src/main/java/org/scijava/Initializable.java +++ b/src/main/java/org/scijava/Initializable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Instantiable.java b/src/main/java/org/scijava/Instantiable.java index f51ea2e32..f5dbf14dd 100644 --- a/src/main/java/org/scijava/Instantiable.java +++ b/src/main/java/org/scijava/Instantiable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/InstantiableException.java b/src/main/java/org/scijava/InstantiableException.java index de5d6db8e..087f2321c 100644 --- a/src/main/java/org/scijava/InstantiableException.java +++ b/src/main/java/org/scijava/InstantiableException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ItemIO.java b/src/main/java/org/scijava/ItemIO.java index bb9b0be69..afcfff5be 100644 --- a/src/main/java/org/scijava/ItemIO.java +++ b/src/main/java/org/scijava/ItemIO.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ItemVisibility.java b/src/main/java/org/scijava/ItemVisibility.java index 764d67bac..d1d025569 100644 --- a/src/main/java/org/scijava/ItemVisibility.java +++ b/src/main/java/org/scijava/ItemVisibility.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Locatable.java b/src/main/java/org/scijava/Locatable.java index ed9212310..1cba5940a 100644 --- a/src/main/java/org/scijava/Locatable.java +++ b/src/main/java/org/scijava/Locatable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/MenuEntry.java b/src/main/java/org/scijava/MenuEntry.java index 236cdbe35..7cecc891c 100644 --- a/src/main/java/org/scijava/MenuEntry.java +++ b/src/main/java/org/scijava/MenuEntry.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/MenuPath.java b/src/main/java/org/scijava/MenuPath.java index cab9983d8..c81406db5 100644 --- a/src/main/java/org/scijava/MenuPath.java +++ b/src/main/java/org/scijava/MenuPath.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Named.java b/src/main/java/org/scijava/Named.java index e0f508e94..ce2a9c689 100644 --- a/src/main/java/org/scijava/Named.java +++ b/src/main/java/org/scijava/Named.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/NoSuchServiceException.java b/src/main/java/org/scijava/NoSuchServiceException.java index 24fb01c00..412ac0e67 100644 --- a/src/main/java/org/scijava/NoSuchServiceException.java +++ b/src/main/java/org/scijava/NoSuchServiceException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/NullContextException.java b/src/main/java/org/scijava/NullContextException.java index f411e951d..58f5862fb 100644 --- a/src/main/java/org/scijava/NullContextException.java +++ b/src/main/java/org/scijava/NullContextException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Optional.java b/src/main/java/org/scijava/Optional.java index 4433057a9..04d28e792 100644 --- a/src/main/java/org/scijava/Optional.java +++ b/src/main/java/org/scijava/Optional.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Prioritized.java b/src/main/java/org/scijava/Prioritized.java index cc3e20661..4031ab296 100644 --- a/src/main/java/org/scijava/Prioritized.java +++ b/src/main/java/org/scijava/Prioritized.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Priority.java b/src/main/java/org/scijava/Priority.java index 65ce6c237..7b579848b 100644 --- a/src/main/java/org/scijava/Priority.java +++ b/src/main/java/org/scijava/Priority.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/SciJava.java b/src/main/java/org/scijava/SciJava.java index 11f0d5743..a95841ce0 100644 --- a/src/main/java/org/scijava/SciJava.java +++ b/src/main/java/org/scijava/SciJava.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Typed.java b/src/main/java/org/scijava/Typed.java index f40ca469b..93d9c6339 100644 --- a/src/main/java/org/scijava/Typed.java +++ b/src/main/java/org/scijava/Typed.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/UIDetails.java b/src/main/java/org/scijava/UIDetails.java index 07c444bbd..c20e67efb 100644 --- a/src/main/java/org/scijava/UIDetails.java +++ b/src/main/java/org/scijava/UIDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Validated.java b/src/main/java/org/scijava/Validated.java index f90043370..9873e589b 100644 --- a/src/main/java/org/scijava/Validated.java +++ b/src/main/java/org/scijava/Validated.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ValidityProblem.java b/src/main/java/org/scijava/ValidityProblem.java index 82e8ac134..8efd392d4 100644 --- a/src/main/java/org/scijava/ValidityProblem.java +++ b/src/main/java/org/scijava/ValidityProblem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Versioned.java b/src/main/java/org/scijava/Versioned.java index 446e91cda..c146f41ed 100644 --- a/src/main/java/org/scijava/Versioned.java +++ b/src/main/java/org/scijava/Versioned.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AbstractIndexWriter.java b/src/main/java/org/scijava/annotations/AbstractIndexWriter.java index 54cfac128..12f29e5fc 100644 --- a/src/main/java/org/scijava/annotations/AbstractIndexWriter.java +++ b/src/main/java/org/scijava/annotations/AbstractIndexWriter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AnnotationCombiner.java b/src/main/java/org/scijava/annotations/AnnotationCombiner.java index 66c1d3566..7588b762b 100644 --- a/src/main/java/org/scijava/annotations/AnnotationCombiner.java +++ b/src/main/java/org/scijava/annotations/AnnotationCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AnnotationProcessor.java b/src/main/java/org/scijava/annotations/AnnotationProcessor.java index 518e29d64..8e4e1fc65 100644 --- a/src/main/java/org/scijava/annotations/AnnotationProcessor.java +++ b/src/main/java/org/scijava/annotations/AnnotationProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java b/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java index 4de2c6e53..10682ca6a 100644 --- a/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java +++ b/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/DirectoryIndexer.java b/src/main/java/org/scijava/annotations/DirectoryIndexer.java index 1af1b118d..ab0024069 100644 --- a/src/main/java/org/scijava/annotations/DirectoryIndexer.java +++ b/src/main/java/org/scijava/annotations/DirectoryIndexer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/EclipseHelper.java b/src/main/java/org/scijava/annotations/EclipseHelper.java index 00a320e6a..0d4765e9e 100644 --- a/src/main/java/org/scijava/annotations/EclipseHelper.java +++ b/src/main/java/org/scijava/annotations/EclipseHelper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/Index.java b/src/main/java/org/scijava/annotations/Index.java index 98bcf4033..a7a760df2 100644 --- a/src/main/java/org/scijava/annotations/Index.java +++ b/src/main/java/org/scijava/annotations/Index.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/IndexItem.java b/src/main/java/org/scijava/annotations/IndexItem.java index 3cfa75dd7..dcefa9f88 100644 --- a/src/main/java/org/scijava/annotations/IndexItem.java +++ b/src/main/java/org/scijava/annotations/IndexItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/IndexReader.java b/src/main/java/org/scijava/annotations/IndexReader.java index 63ec749d3..74dd5c65d 100644 --- a/src/main/java/org/scijava/annotations/IndexReader.java +++ b/src/main/java/org/scijava/annotations/IndexReader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/Indexable.java b/src/main/java/org/scijava/annotations/Indexable.java index 7b7f040a8..f1c386bcc 100644 --- a/src/main/java/org/scijava/annotations/Indexable.java +++ b/src/main/java/org/scijava/annotations/Indexable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/legacy/LegacyReader.java b/src/main/java/org/scijava/annotations/legacy/LegacyReader.java index 733a29125..ce6619f24 100644 --- a/src/main/java/org/scijava/annotations/legacy/LegacyReader.java +++ b/src/main/java/org/scijava/annotations/legacy/LegacyReader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/AbstractApp.java b/src/main/java/org/scijava/app/AbstractApp.java index 7901ee792..96b62626a 100644 --- a/src/main/java/org/scijava/app/AbstractApp.java +++ b/src/main/java/org/scijava/app/AbstractApp.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/App.java b/src/main/java/org/scijava/app/App.java index 72990e5f9..a18f8366e 100644 --- a/src/main/java/org/scijava/app/App.java +++ b/src/main/java/org/scijava/app/App.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/AppService.java b/src/main/java/org/scijava/app/AppService.java index e15d3c869..c6ec110b6 100644 --- a/src/main/java/org/scijava/app/AppService.java +++ b/src/main/java/org/scijava/app/AppService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/DefaultAppService.java b/src/main/java/org/scijava/app/DefaultAppService.java index 12e203ab0..2906b72bb 100644 --- a/src/main/java/org/scijava/app/DefaultAppService.java +++ b/src/main/java/org/scijava/app/DefaultAppService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/DefaultStatusService.java b/src/main/java/org/scijava/app/DefaultStatusService.java index 44a871f9f..f93bbba71 100644 --- a/src/main/java/org/scijava/app/DefaultStatusService.java +++ b/src/main/java/org/scijava/app/DefaultStatusService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/SciJavaApp.java b/src/main/java/org/scijava/app/SciJavaApp.java index d8f8a2d71..4af7d69c5 100644 --- a/src/main/java/org/scijava/app/SciJavaApp.java +++ b/src/main/java/org/scijava/app/SciJavaApp.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/StatusService.java b/src/main/java/org/scijava/app/StatusService.java index 82ef4b7f2..3a28d4a52 100644 --- a/src/main/java/org/scijava/app/StatusService.java +++ b/src/main/java/org/scijava/app/StatusService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/event/StatusEvent.java b/src/main/java/org/scijava/app/event/StatusEvent.java index 7b57ce3e2..cabc032f8 100644 --- a/src/main/java/org/scijava/app/event/StatusEvent.java +++ b/src/main/java/org/scijava/app/event/StatusEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/cache/CacheService.java b/src/main/java/org/scijava/cache/CacheService.java index 15b8d82f3..afc2a4a6e 100644 --- a/src/main/java/org/scijava/cache/CacheService.java +++ b/src/main/java/org/scijava/cache/CacheService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/cache/DefaultCacheService.java b/src/main/java/org/scijava/cache/DefaultCacheService.java index a150bf86b..4fddf6734 100644 --- a/src/main/java/org/scijava/cache/DefaultCacheService.java +++ b/src/main/java/org/scijava/cache/DefaultCacheService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Command.java b/src/main/java/org/scijava/command/Command.java index fa462633b..456736f68 100644 --- a/src/main/java/org/scijava/command/Command.java +++ b/src/main/java/org/scijava/command/Command.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandInfo.java b/src/main/java/org/scijava/command/CommandInfo.java index b5aaba8d1..78913df7a 100644 --- a/src/main/java/org/scijava/command/CommandInfo.java +++ b/src/main/java/org/scijava/command/CommandInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandModule.java b/src/main/java/org/scijava/command/CommandModule.java index 702b1a561..0d8201e18 100644 --- a/src/main/java/org/scijava/command/CommandModule.java +++ b/src/main/java/org/scijava/command/CommandModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandModuleItem.java b/src/main/java/org/scijava/command/CommandModuleItem.java index 253c92332..ec30d678a 100644 --- a/src/main/java/org/scijava/command/CommandModuleItem.java +++ b/src/main/java/org/scijava/command/CommandModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandService.java b/src/main/java/org/scijava/command/CommandService.java index 10772f7f9..6d1495ebb 100644 --- a/src/main/java/org/scijava/command/CommandService.java +++ b/src/main/java/org/scijava/command/CommandService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/ContextCommand.java b/src/main/java/org/scijava/command/ContextCommand.java index bc3b6e520..3588dffac 100644 --- a/src/main/java/org/scijava/command/ContextCommand.java +++ b/src/main/java/org/scijava/command/ContextCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DefaultCommandService.java b/src/main/java/org/scijava/command/DefaultCommandService.java index 1ca12204e..00275c0c1 100644 --- a/src/main/java/org/scijava/command/DefaultCommandService.java +++ b/src/main/java/org/scijava/command/DefaultCommandService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DynamicCommand.java b/src/main/java/org/scijava/command/DynamicCommand.java index bda553db7..8fccd9f20 100644 --- a/src/main/java/org/scijava/command/DynamicCommand.java +++ b/src/main/java/org/scijava/command/DynamicCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DynamicCommandInfo.java b/src/main/java/org/scijava/command/DynamicCommandInfo.java index d67417a04..9d85a1235 100644 --- a/src/main/java/org/scijava/command/DynamicCommandInfo.java +++ b/src/main/java/org/scijava/command/DynamicCommandInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Inputs.java b/src/main/java/org/scijava/command/Inputs.java index 9c30dffaa..18272bbbb 100644 --- a/src/main/java/org/scijava/command/Inputs.java +++ b/src/main/java/org/scijava/command/Inputs.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Interactive.java b/src/main/java/org/scijava/command/Interactive.java index a940e4257..b1f3f999d 100644 --- a/src/main/java/org/scijava/command/Interactive.java +++ b/src/main/java/org/scijava/command/Interactive.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/InteractiveCommand.java b/src/main/java/org/scijava/command/InteractiveCommand.java index ea3cce37b..49925091a 100644 --- a/src/main/java/org/scijava/command/InteractiveCommand.java +++ b/src/main/java/org/scijava/command/InteractiveCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/ModuleCommand.java b/src/main/java/org/scijava/command/ModuleCommand.java index bfe715895..ac5b780b7 100644 --- a/src/main/java/org/scijava/command/ModuleCommand.java +++ b/src/main/java/org/scijava/command/ModuleCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Previewable.java b/src/main/java/org/scijava/command/Previewable.java index 3b9ea160c..da9308f5a 100644 --- a/src/main/java/org/scijava/command/Previewable.java +++ b/src/main/java/org/scijava/command/Previewable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/UnimplementedCommand.java b/src/main/java/org/scijava/command/UnimplementedCommand.java index cf1d828ee..eb8804716 100644 --- a/src/main/java/org/scijava/command/UnimplementedCommand.java +++ b/src/main/java/org/scijava/command/UnimplementedCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/console/RunArgument.java b/src/main/java/org/scijava/command/console/RunArgument.java index d0cea8435..86ffa6df7 100644 --- a/src/main/java/org/scijava/command/console/RunArgument.java +++ b/src/main/java/org/scijava/command/console/RunArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/run/CommandCodeRunner.java b/src/main/java/org/scijava/command/run/CommandCodeRunner.java index 2c1816b3c..5b843323e 100644 --- a/src/main/java/org/scijava/command/run/CommandCodeRunner.java +++ b/src/main/java/org/scijava/command/run/CommandCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/AbstractConsoleArgument.java b/src/main/java/org/scijava/console/AbstractConsoleArgument.java index 9ed6165a5..811dabf8c 100644 --- a/src/main/java/org/scijava/console/AbstractConsoleArgument.java +++ b/src/main/java/org/scijava/console/AbstractConsoleArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleArgument.java b/src/main/java/org/scijava/console/ConsoleArgument.java index d4bdec30a..edfa4ea0c 100644 --- a/src/main/java/org/scijava/console/ConsoleArgument.java +++ b/src/main/java/org/scijava/console/ConsoleArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleService.java b/src/main/java/org/scijava/console/ConsoleService.java index fdc600b31..23c5b9a24 100644 --- a/src/main/java/org/scijava/console/ConsoleService.java +++ b/src/main/java/org/scijava/console/ConsoleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleUtils.java b/src/main/java/org/scijava/console/ConsoleUtils.java index 40de75132..6314e737e 100644 --- a/src/main/java/org/scijava/console/ConsoleUtils.java +++ b/src/main/java/org/scijava/console/ConsoleUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/DefaultConsoleService.java b/src/main/java/org/scijava/console/DefaultConsoleService.java index 74cce7d56..535deb088 100644 --- a/src/main/java/org/scijava/console/DefaultConsoleService.java +++ b/src/main/java/org/scijava/console/DefaultConsoleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/MultiOutputStream.java b/src/main/java/org/scijava/console/MultiOutputStream.java index 02e4fb5ac..043e5b439 100644 --- a/src/main/java/org/scijava/console/MultiOutputStream.java +++ b/src/main/java/org/scijava/console/MultiOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/MultiPrintStream.java b/src/main/java/org/scijava/console/MultiPrintStream.java index 3f0109138..e1f2a11c2 100644 --- a/src/main/java/org/scijava/console/MultiPrintStream.java +++ b/src/main/java/org/scijava/console/MultiPrintStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/OutputEvent.java b/src/main/java/org/scijava/console/OutputEvent.java index 843a6f20d..762b7f249 100644 --- a/src/main/java/org/scijava/console/OutputEvent.java +++ b/src/main/java/org/scijava/console/OutputEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/OutputListener.java b/src/main/java/org/scijava/console/OutputListener.java index 44000d87a..640a9dbc7 100644 --- a/src/main/java/org/scijava/console/OutputListener.java +++ b/src/main/java/org/scijava/console/OutputListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/SystemPropertyArgument.java b/src/main/java/org/scijava/console/SystemPropertyArgument.java index 39c100c92..40590ccd0 100644 --- a/src/main/java/org/scijava/console/SystemPropertyArgument.java +++ b/src/main/java/org/scijava/console/SystemPropertyArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractConvertService.java b/src/main/java/org/scijava/convert/AbstractConvertService.java index 15f7812c8..0388e601c 100644 --- a/src/main/java/org/scijava/convert/AbstractConvertService.java +++ b/src/main/java/org/scijava/convert/AbstractConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractConverter.java b/src/main/java/org/scijava/convert/AbstractConverter.java index 7a7a429f6..c80d2fbef 100644 --- a/src/main/java/org/scijava/convert/AbstractConverter.java +++ b/src/main/java/org/scijava/convert/AbstractConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractDelegateConverter.java b/src/main/java/org/scijava/convert/AbstractDelegateConverter.java index df0853005..909c6f0da 100644 --- a/src/main/java/org/scijava/convert/AbstractDelegateConverter.java +++ b/src/main/java/org/scijava/convert/AbstractDelegateConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ArrayConverters.java b/src/main/java/org/scijava/convert/ArrayConverters.java index 7f885d1ee..ab9cb24a8 100644 --- a/src/main/java/org/scijava/convert/ArrayConverters.java +++ b/src/main/java/org/scijava/convert/ArrayConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ArrayToStringConverter.java b/src/main/java/org/scijava/convert/ArrayToStringConverter.java index c9dc10014..1cf448747 100644 --- a/src/main/java/org/scijava/convert/ArrayToStringConverter.java +++ b/src/main/java/org/scijava/convert/ArrayToStringConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/CastingConverter.java b/src/main/java/org/scijava/convert/CastingConverter.java index e9455c214..27915c40d 100644 --- a/src/main/java/org/scijava/convert/CastingConverter.java +++ b/src/main/java/org/scijava/convert/CastingConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ConversionRequest.java b/src/main/java/org/scijava/convert/ConversionRequest.java index 3f8c4d5cd..3486e9a5f 100644 --- a/src/main/java/org/scijava/convert/ConversionRequest.java +++ b/src/main/java/org/scijava/convert/ConversionRequest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ConvertService.java b/src/main/java/org/scijava/convert/ConvertService.java index 6bce9a48b..14e65bae2 100644 --- a/src/main/java/org/scijava/convert/ConvertService.java +++ b/src/main/java/org/scijava/convert/ConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/Converter.java b/src/main/java/org/scijava/convert/Converter.java index 4280789ff..3191be092 100644 --- a/src/main/java/org/scijava/convert/Converter.java +++ b/src/main/java/org/scijava/convert/Converter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/DefaultConvertService.java b/src/main/java/org/scijava/convert/DefaultConvertService.java index f36d9fd9e..434940368 100644 --- a/src/main/java/org/scijava/convert/DefaultConvertService.java +++ b/src/main/java/org/scijava/convert/DefaultConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index 975c88f82..15064c8d7 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/FileListConverters.java b/src/main/java/org/scijava/convert/FileListConverters.java index d9cc1173f..ed3da126e 100644 --- a/src/main/java/org/scijava/convert/FileListConverters.java +++ b/src/main/java/org/scijava/convert/FileListConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/FileToPathConverter.java b/src/main/java/org/scijava/convert/FileToPathConverter.java index 70a295bdb..7d091b9e0 100644 --- a/src/main/java/org/scijava/convert/FileToPathConverter.java +++ b/src/main/java/org/scijava/convert/FileToPathConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NullConverter.java b/src/main/java/org/scijava/convert/NullConverter.java index 0ea6e9f97..9719d6afe 100644 --- a/src/main/java/org/scijava/convert/NullConverter.java +++ b/src/main/java/org/scijava/convert/NullConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberConverters.java b/src/main/java/org/scijava/convert/NumberConverters.java index ed8481463..05aa71c7c 100644 --- a/src/main/java/org/scijava/convert/NumberConverters.java +++ b/src/main/java/org/scijava/convert/NumberConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java b/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java index 73fffeecc..889cf75e9 100644 --- a/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java +++ b/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java b/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java index 5dd8bdc71..80196b63a 100644 --- a/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java +++ b/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToDoubleConverter.java b/src/main/java/org/scijava/convert/NumberToDoubleConverter.java index 23c26b62b..751badc6b 100644 --- a/src/main/java/org/scijava/convert/NumberToDoubleConverter.java +++ b/src/main/java/org/scijava/convert/NumberToDoubleConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToFloatConverter.java b/src/main/java/org/scijava/convert/NumberToFloatConverter.java index 56620787b..19579a857 100644 --- a/src/main/java/org/scijava/convert/NumberToFloatConverter.java +++ b/src/main/java/org/scijava/convert/NumberToFloatConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToIntegerConverter.java b/src/main/java/org/scijava/convert/NumberToIntegerConverter.java index 897fb807f..149962f42 100644 --- a/src/main/java/org/scijava/convert/NumberToIntegerConverter.java +++ b/src/main/java/org/scijava/convert/NumberToIntegerConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToLongConverter.java b/src/main/java/org/scijava/convert/NumberToLongConverter.java index 1b2af346c..7f7eef462 100644 --- a/src/main/java/org/scijava/convert/NumberToLongConverter.java +++ b/src/main/java/org/scijava/convert/NumberToLongConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToNumberConverter.java b/src/main/java/org/scijava/convert/NumberToNumberConverter.java index f99af2e1a..d3b3102fe 100644 --- a/src/main/java/org/scijava/convert/NumberToNumberConverter.java +++ b/src/main/java/org/scijava/convert/NumberToNumberConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToShortConverter.java b/src/main/java/org/scijava/convert/NumberToShortConverter.java index 96c2fbc36..aed496f49 100644 --- a/src/main/java/org/scijava/convert/NumberToShortConverter.java +++ b/src/main/java/org/scijava/convert/NumberToShortConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PathToFileConverter.java b/src/main/java/org/scijava/convert/PathToFileConverter.java index 3b793ae8e..6c221f905 100644 --- a/src/main/java/org/scijava/convert/PathToFileConverter.java +++ b/src/main/java/org/scijava/convert/PathToFileConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java index 5fb595290..514077e15 100644 --- a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java +++ b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java b/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java index 33441c806..dedcc8092 100644 --- a/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java +++ b/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index 18c581b32..18e6a38d6 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/StringToNumberConverter.java b/src/main/java/org/scijava/convert/StringToNumberConverter.java index 6fbebd2cf..817c0c37a 100644 --- a/src/main/java/org/scijava/convert/StringToNumberConverter.java +++ b/src/main/java/org/scijava/convert/StringToNumberConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/AbstractDisplay.java b/src/main/java/org/scijava/display/AbstractDisplay.java index c9ff7f702..02a44cd6d 100644 --- a/src/main/java/org/scijava/display/AbstractDisplay.java +++ b/src/main/java/org/scijava/display/AbstractDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java b/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java index c0e26c205..488cc2249 100644 --- a/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java +++ b/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultDisplay.java b/src/main/java/org/scijava/display/DefaultDisplay.java index fb2f95d39..b7058f5e9 100644 --- a/src/main/java/org/scijava/display/DefaultDisplay.java +++ b/src/main/java/org/scijava/display/DefaultDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultDisplayService.java b/src/main/java/org/scijava/display/DefaultDisplayService.java index 946b63cc0..f91dddc14 100644 --- a/src/main/java/org/scijava/display/DefaultDisplayService.java +++ b/src/main/java/org/scijava/display/DefaultDisplayService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultTextDisplay.java b/src/main/java/org/scijava/display/DefaultTextDisplay.java index abdd3f960..df16c01cc 100644 --- a/src/main/java/org/scijava/display/DefaultTextDisplay.java +++ b/src/main/java/org/scijava/display/DefaultTextDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/Display.java b/src/main/java/org/scijava/display/Display.java index 3df3b4115..77921d195 100644 --- a/src/main/java/org/scijava/display/Display.java +++ b/src/main/java/org/scijava/display/Display.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DisplayPostprocessor.java b/src/main/java/org/scijava/display/DisplayPostprocessor.java index 1f654e213..9a69d7f8e 100644 --- a/src/main/java/org/scijava/display/DisplayPostprocessor.java +++ b/src/main/java/org/scijava/display/DisplayPostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DisplayService.java b/src/main/java/org/scijava/display/DisplayService.java index 2d09285e4..23acbf0e0 100644 --- a/src/main/java/org/scijava/display/DisplayService.java +++ b/src/main/java/org/scijava/display/DisplayService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/Displayable.java b/src/main/java/org/scijava/display/Displayable.java index f0afe8879..ae875c217 100644 --- a/src/main/java/org/scijava/display/Displayable.java +++ b/src/main/java/org/scijava/display/Displayable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/TextDisplay.java b/src/main/java/org/scijava/display/TextDisplay.java index 4a4f72b41..29eb39843 100644 --- a/src/main/java/org/scijava/display/TextDisplay.java +++ b/src/main/java/org/scijava/display/TextDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java b/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java index 8457a85aa..0c6a12a07 100644 --- a/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java b/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java index 44e1736c3..bd6f77560 100644 --- a/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java b/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java index 3a866ec4d..c1420e4d5 100644 --- a/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayEvent.java b/src/main/java/org/scijava/display/event/DisplayEvent.java index 35cf6026e..95e90c7cb 100644 --- a/src/main/java/org/scijava/display/event/DisplayEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java b/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java index 540812981..1be4cb353 100644 --- a/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/InputEvent.java b/src/main/java/org/scijava/display/event/input/InputEvent.java index 86008a0c6..d515f9c0a 100644 --- a/src/main/java/org/scijava/display/event/input/InputEvent.java +++ b/src/main/java/org/scijava/display/event/input/InputEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyEvent.java b/src/main/java/org/scijava/display/event/input/KyEvent.java index a8b6ae9b9..ddc2f3046 100644 --- a/src/main/java/org/scijava/display/event/input/KyEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyPressedEvent.java b/src/main/java/org/scijava/display/event/input/KyPressedEvent.java index d5456b715..6cafacc77 100644 --- a/src/main/java/org/scijava/display/event/input/KyPressedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyPressedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java b/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java index 278c75e1d..acc1bdf9d 100644 --- a/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyTypedEvent.java b/src/main/java/org/scijava/display/event/input/KyTypedEvent.java index 932e1ef9e..398fe027b 100644 --- a/src/main/java/org/scijava/display/event/input/KyTypedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyTypedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsButtonEvent.java b/src/main/java/org/scijava/display/event/input/MsButtonEvent.java index 34d49434b..ed1d4eae4 100644 --- a/src/main/java/org/scijava/display/event/input/MsButtonEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsButtonEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsClickedEvent.java b/src/main/java/org/scijava/display/event/input/MsClickedEvent.java index a6c4ba199..62f9bd622 100644 --- a/src/main/java/org/scijava/display/event/input/MsClickedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsClickedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java b/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java index ddf8fd2b8..ec6595127 100644 --- a/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java b/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java index 7c65762d6..de13c50ee 100644 --- a/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsEvent.java b/src/main/java/org/scijava/display/event/input/MsEvent.java index ef6bca8dd..3836bb65c 100644 --- a/src/main/java/org/scijava/display/event/input/MsEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsExitedEvent.java b/src/main/java/org/scijava/display/event/input/MsExitedEvent.java index fc6b542ba..28584e4e1 100644 --- a/src/main/java/org/scijava/display/event/input/MsExitedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsExitedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsMovedEvent.java b/src/main/java/org/scijava/display/event/input/MsMovedEvent.java index 25b18bf23..f8be96df2 100644 --- a/src/main/java/org/scijava/display/event/input/MsMovedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsMovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsPressedEvent.java b/src/main/java/org/scijava/display/event/input/MsPressedEvent.java index 38fbf57d9..c45b5991d 100644 --- a/src/main/java/org/scijava/display/event/input/MsPressedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsPressedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java b/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java index 7f7a90e98..2ad017f9c 100644 --- a/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsWheelEvent.java b/src/main/java/org/scijava/display/event/input/MsWheelEvent.java index 25e2c8fd5..0c723db58 100644 --- a/src/main/java/org/scijava/display/event/input/MsWheelEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsWheelEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java b/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java index cefba6238..a51e7132b 100644 --- a/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinClosedEvent.java b/src/main/java/org/scijava/display/event/window/WinClosedEvent.java index 8767b0c3b..b54bae090 100644 --- a/src/main/java/org/scijava/display/event/window/WinClosedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinClosedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinClosingEvent.java b/src/main/java/org/scijava/display/event/window/WinClosingEvent.java index 402f42d01..4bf578d83 100644 --- a/src/main/java/org/scijava/display/event/window/WinClosingEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinClosingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java b/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java index e1b136e70..baceef2f0 100644 --- a/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java b/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java index beae46170..882058c7a 100644 --- a/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinEvent.java b/src/main/java/org/scijava/display/event/window/WinEvent.java index c1c50b74b..75a4714ea 100644 --- a/src/main/java/org/scijava/display/event/window/WinEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java b/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java index 3fb4e8f12..731cae148 100644 --- a/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java b/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java index f943b0f59..4ac6abb44 100644 --- a/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DefaultDownloadService.java b/src/main/java/org/scijava/download/DefaultDownloadService.java index 749c05497..6775b0bc0 100644 --- a/src/main/java/org/scijava/download/DefaultDownloadService.java +++ b/src/main/java/org/scijava/download/DefaultDownloadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DiskLocationCache.java b/src/main/java/org/scijava/download/DiskLocationCache.java index 1a957214b..eb9f1f8a1 100644 --- a/src/main/java/org/scijava/download/DiskLocationCache.java +++ b/src/main/java/org/scijava/download/DiskLocationCache.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/Download.java b/src/main/java/org/scijava/download/Download.java index 2ca41a754..313bc5840 100644 --- a/src/main/java/org/scijava/download/Download.java +++ b/src/main/java/org/scijava/download/Download.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DownloadService.java b/src/main/java/org/scijava/download/DownloadService.java index 3e9c8d2d3..7410aa1c5 100644 --- a/src/main/java/org/scijava/download/DownloadService.java +++ b/src/main/java/org/scijava/download/DownloadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/LocationCache.java b/src/main/java/org/scijava/download/LocationCache.java index 1e961bf5a..30da5a620 100644 --- a/src/main/java/org/scijava/download/LocationCache.java +++ b/src/main/java/org/scijava/download/LocationCache.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/MultiWriteHandle.java b/src/main/java/org/scijava/download/MultiWriteHandle.java index 8f565a3ff..b6a7c6e1d 100644 --- a/src/main/java/org/scijava/download/MultiWriteHandle.java +++ b/src/main/java/org/scijava/download/MultiWriteHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/ContextCreatedEvent.java b/src/main/java/org/scijava/event/ContextCreatedEvent.java index 7ca7d529b..8f6de90ee 100644 --- a/src/main/java/org/scijava/event/ContextCreatedEvent.java +++ b/src/main/java/org/scijava/event/ContextCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/ContextDisposingEvent.java b/src/main/java/org/scijava/event/ContextDisposingEvent.java index cdd8a7814..4f161ce33 100644 --- a/src/main/java/org/scijava/event/ContextDisposingEvent.java +++ b/src/main/java/org/scijava/event/ContextDisposingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventBus.java b/src/main/java/org/scijava/event/DefaultEventBus.java index 9d71eb8f3..8d3f91745 100644 --- a/src/main/java/org/scijava/event/DefaultEventBus.java +++ b/src/main/java/org/scijava/event/DefaultEventBus.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventHistory.java b/src/main/java/org/scijava/event/DefaultEventHistory.java index 3245d9014..0847b9b7f 100644 --- a/src/main/java/org/scijava/event/DefaultEventHistory.java +++ b/src/main/java/org/scijava/event/DefaultEventHistory.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index 0047c42f5..5059046db 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventDetails.java b/src/main/java/org/scijava/event/EventDetails.java index be0700965..be2bd9494 100644 --- a/src/main/java/org/scijava/event/EventDetails.java +++ b/src/main/java/org/scijava/event/EventDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHandler.java b/src/main/java/org/scijava/event/EventHandler.java index a3d5a4bba..628e9a7a4 100644 --- a/src/main/java/org/scijava/event/EventHandler.java +++ b/src/main/java/org/scijava/event/EventHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHistory.java b/src/main/java/org/scijava/event/EventHistory.java index de7d48be0..f1b49e309 100644 --- a/src/main/java/org/scijava/event/EventHistory.java +++ b/src/main/java/org/scijava/event/EventHistory.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHistoryListener.java b/src/main/java/org/scijava/event/EventHistoryListener.java index 5a8e4b139..a0da0e664 100644 --- a/src/main/java/org/scijava/event/EventHistoryListener.java +++ b/src/main/java/org/scijava/event/EventHistoryListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventService.java b/src/main/java/org/scijava/event/EventService.java index cc9f89d17..2a7f6d95b 100644 --- a/src/main/java/org/scijava/event/EventService.java +++ b/src/main/java/org/scijava/event/EventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventSubscriber.java b/src/main/java/org/scijava/event/EventSubscriber.java index a36181639..7bcef12d3 100644 --- a/src/main/java/org/scijava/event/EventSubscriber.java +++ b/src/main/java/org/scijava/event/EventSubscriber.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/SciJavaEvent.java b/src/main/java/org/scijava/event/SciJavaEvent.java index d6bdd2f39..b4c8343d3 100644 --- a/src/main/java/org/scijava/event/SciJavaEvent.java +++ b/src/main/java/org/scijava/event/SciJavaEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/Accelerator.java b/src/main/java/org/scijava/input/Accelerator.java index 200167c44..ffa6ca9ae 100644 --- a/src/main/java/org/scijava/input/Accelerator.java +++ b/src/main/java/org/scijava/input/Accelerator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/DefaultInputService.java b/src/main/java/org/scijava/input/DefaultInputService.java index 7a6ad862a..3f9f9b03b 100644 --- a/src/main/java/org/scijava/input/DefaultInputService.java +++ b/src/main/java/org/scijava/input/DefaultInputService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/InputModifiers.java b/src/main/java/org/scijava/input/InputModifiers.java index 6adec0eb7..dc1fd6095 100644 --- a/src/main/java/org/scijava/input/InputModifiers.java +++ b/src/main/java/org/scijava/input/InputModifiers.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/InputService.java b/src/main/java/org/scijava/input/InputService.java index 92ce58ad5..8bb2ea10a 100644 --- a/src/main/java/org/scijava/input/InputService.java +++ b/src/main/java/org/scijava/input/InputService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/KeyCode.java b/src/main/java/org/scijava/input/KeyCode.java index 9e817ad4b..c7207eeb3 100644 --- a/src/main/java/org/scijava/input/KeyCode.java +++ b/src/main/java/org/scijava/input/KeyCode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/MouseCursor.java b/src/main/java/org/scijava/input/MouseCursor.java index 76144f32f..1ade50c90 100644 --- a/src/main/java/org/scijava/input/MouseCursor.java +++ b/src/main/java/org/scijava/input/MouseCursor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/AbstractIOPlugin.java b/src/main/java/org/scijava/io/AbstractIOPlugin.java index f1d483810..954e77258 100644 --- a/src/main/java/org/scijava/io/AbstractIOPlugin.java +++ b/src/main/java/org/scijava/io/AbstractIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/AbstractTypedIOService.java b/src/main/java/org/scijava/io/AbstractTypedIOService.java index 3160c4246..520441e43 100644 --- a/src/main/java/org/scijava/io/AbstractTypedIOService.java +++ b/src/main/java/org/scijava/io/AbstractTypedIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/ByteArrayByteBank.java b/src/main/java/org/scijava/io/ByteArrayByteBank.java index f74659702..196ba64c8 100644 --- a/src/main/java/org/scijava/io/ByteArrayByteBank.java +++ b/src/main/java/org/scijava/io/ByteArrayByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/ByteBank.java b/src/main/java/org/scijava/io/ByteBank.java index 058a9cc40..1bb062b54 100644 --- a/src/main/java/org/scijava/io/ByteBank.java +++ b/src/main/java/org/scijava/io/ByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/DefaultIOService.java b/src/main/java/org/scijava/io/DefaultIOService.java index 32f5e5b27..a5199e76e 100644 --- a/src/main/java/org/scijava/io/DefaultIOService.java +++ b/src/main/java/org/scijava/io/DefaultIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/DefaultRecentFileService.java b/src/main/java/org/scijava/io/DefaultRecentFileService.java index c2e0b94d7..299f3f387 100644 --- a/src/main/java/org/scijava/io/DefaultRecentFileService.java +++ b/src/main/java/org/scijava/io/DefaultRecentFileService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/IOPlugin.java b/src/main/java/org/scijava/io/IOPlugin.java index a6c2536a4..2c12ccd6a 100644 --- a/src/main/java/org/scijava/io/IOPlugin.java +++ b/src/main/java/org/scijava/io/IOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/IOService.java b/src/main/java/org/scijava/io/IOService.java index 72655ab39..26cd44836 100644 --- a/src/main/java/org/scijava/io/IOService.java +++ b/src/main/java/org/scijava/io/IOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/RecentFileService.java b/src/main/java/org/scijava/io/RecentFileService.java index 2f91937bb..7c549fe8b 100644 --- a/src/main/java/org/scijava/io/RecentFileService.java +++ b/src/main/java/org/scijava/io/RecentFileService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/TypedIOService.java b/src/main/java/org/scijava/io/TypedIOService.java index 5664ec3bb..746311f6a 100644 --- a/src/main/java/org/scijava/io/TypedIOService.java +++ b/src/main/java/org/scijava/io/TypedIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/console/OpenArgument.java b/src/main/java/org/scijava/io/console/OpenArgument.java index 4e929d9c1..efe0fe257 100644 --- a/src/main/java/org/scijava/io/console/OpenArgument.java +++ b/src/main/java/org/scijava/io/console/OpenArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/DataOpenedEvent.java b/src/main/java/org/scijava/io/event/DataOpenedEvent.java index 22f9fd4d0..a034e574f 100644 --- a/src/main/java/org/scijava/io/event/DataOpenedEvent.java +++ b/src/main/java/org/scijava/io/event/DataOpenedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/DataSavedEvent.java b/src/main/java/org/scijava/io/event/DataSavedEvent.java index 67a8b21ad..d2fb9e03e 100644 --- a/src/main/java/org/scijava/io/event/DataSavedEvent.java +++ b/src/main/java/org/scijava/io/event/DataSavedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/IOEvent.java b/src/main/java/org/scijava/io/event/IOEvent.java index 1147039b3..593cdf721 100644 --- a/src/main/java/org/scijava/io/event/IOEvent.java +++ b/src/main/java/org/scijava/io/event/IOEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractDataHandle.java b/src/main/java/org/scijava/io/handle/AbstractDataHandle.java index 33a369a5c..dcafd62cd 100644 --- a/src/main/java/org/scijava/io/handle/AbstractDataHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java b/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java index c1276a092..853bc4098 100644 --- a/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java b/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java index 542b29f2c..ac7318347 100644 --- a/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java b/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java index 463eefe59..30af9f6a0 100644 --- a/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/BytesHandle.java b/src/main/java/org/scijava/io/handle/BytesHandle.java index 971ecd56d..4b0051372 100644 --- a/src/main/java/org/scijava/io/handle/BytesHandle.java +++ b/src/main/java/org/scijava/io/handle/BytesHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandle.java b/src/main/java/org/scijava/io/handle/DataHandle.java index 5497d97b8..61d413382 100644 --- a/src/main/java/org/scijava/io/handle/DataHandle.java +++ b/src/main/java/org/scijava/io/handle/DataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleInputStream.java b/src/main/java/org/scijava/io/handle/DataHandleInputStream.java index bbf9bc183..7613b17be 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleInputStream.java +++ b/src/main/java/org/scijava/io/handle/DataHandleInputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java b/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java index d1a8b4791..4e8259a8b 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java +++ b/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleService.java b/src/main/java/org/scijava/io/handle/DataHandleService.java index 37a6e6cfa..e55cdfd3f 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleService.java +++ b/src/main/java/org/scijava/io/handle/DataHandleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandles.java b/src/main/java/org/scijava/io/handle/DataHandles.java index ff2928911..a8976f3fa 100644 --- a/src/main/java/org/scijava/io/handle/DataHandles.java +++ b/src/main/java/org/scijava/io/handle/DataHandles.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java b/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java index cf7c8db92..66428855f 100644 --- a/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java +++ b/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DummyHandle.java b/src/main/java/org/scijava/io/handle/DummyHandle.java index 35116cf47..61fe0bdf5 100644 --- a/src/main/java/org/scijava/io/handle/DummyHandle.java +++ b/src/main/java/org/scijava/io/handle/DummyHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/FileHandle.java b/src/main/java/org/scijava/io/handle/FileHandle.java index 54580b71b..029c0c6b2 100644 --- a/src/main/java/org/scijava/io/handle/FileHandle.java +++ b/src/main/java/org/scijava/io/handle/FileHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java index d05f6507d..35841320b 100644 --- a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java b/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java index b5114ca29..6a1022e9a 100644 --- a/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java b/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java index b57ef34d8..fa4e1666d 100644 --- a/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/StreamHandle.java b/src/main/java/org/scijava/io/handle/StreamHandle.java index e2e683b08..c33eccdab 100644 --- a/src/main/java/org/scijava/io/handle/StreamHandle.java +++ b/src/main/java/org/scijava/io/handle/StreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java b/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java index 280457b21..4f3a7d818 100644 --- a/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractLocation.java b/src/main/java/org/scijava/io/location/AbstractLocation.java index f1c01a2da..d93e29fa9 100644 --- a/src/main/java/org/scijava/io/location/AbstractLocation.java +++ b/src/main/java/org/scijava/io/location/AbstractLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractLocationResolver.java b/src/main/java/org/scijava/io/location/AbstractLocationResolver.java index 0771e095a..d05ad4c9b 100644 --- a/src/main/java/org/scijava/io/location/AbstractLocationResolver.java +++ b/src/main/java/org/scijava/io/location/AbstractLocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java b/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java index ecd40cb78..78e66e53b 100644 --- a/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java +++ b/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/BrowsableLocation.java b/src/main/java/org/scijava/io/location/BrowsableLocation.java index e3f03f912..68bbf0be3 100644 --- a/src/main/java/org/scijava/io/location/BrowsableLocation.java +++ b/src/main/java/org/scijava/io/location/BrowsableLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/BytesLocation.java b/src/main/java/org/scijava/io/location/BytesLocation.java index 2ac731595..74bc91843 100644 --- a/src/main/java/org/scijava/io/location/BytesLocation.java +++ b/src/main/java/org/scijava/io/location/BytesLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/DefaultLocationService.java b/src/main/java/org/scijava/io/location/DefaultLocationService.java index 5f010073b..46dd034ba 100644 --- a/src/main/java/org/scijava/io/location/DefaultLocationService.java +++ b/src/main/java/org/scijava/io/location/DefaultLocationService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/DummyLocation.java b/src/main/java/org/scijava/io/location/DummyLocation.java index 1a2058b42..1235ff829 100644 --- a/src/main/java/org/scijava/io/location/DummyLocation.java +++ b/src/main/java/org/scijava/io/location/DummyLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/FileLocation.java b/src/main/java/org/scijava/io/location/FileLocation.java index d86d0e6ae..ef8b8950e 100644 --- a/src/main/java/org/scijava/io/location/FileLocation.java +++ b/src/main/java/org/scijava/io/location/FileLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/FileLocationResolver.java b/src/main/java/org/scijava/io/location/FileLocationResolver.java index 498ca6d37..9c02c4a8f 100644 --- a/src/main/java/org/scijava/io/location/FileLocationResolver.java +++ b/src/main/java/org/scijava/io/location/FileLocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/Location.java b/src/main/java/org/scijava/io/location/Location.java index 74fd05a65..efb45542f 100644 --- a/src/main/java/org/scijava/io/location/Location.java +++ b/src/main/java/org/scijava/io/location/Location.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/LocationResolver.java b/src/main/java/org/scijava/io/location/LocationResolver.java index 1759f180b..dac41d9bd 100644 --- a/src/main/java/org/scijava/io/location/LocationResolver.java +++ b/src/main/java/org/scijava/io/location/LocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/LocationService.java b/src/main/java/org/scijava/io/location/LocationService.java index b06c6201f..ff29ce6e0 100644 --- a/src/main/java/org/scijava/io/location/LocationService.java +++ b/src/main/java/org/scijava/io/location/LocationService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/RemoteLocation.java b/src/main/java/org/scijava/io/location/RemoteLocation.java index 6a1ca7bde..ce5760565 100644 --- a/src/main/java/org/scijava/io/location/RemoteLocation.java +++ b/src/main/java/org/scijava/io/location/RemoteLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/URILocation.java b/src/main/java/org/scijava/io/location/URILocation.java index 02c3e61d7..3bc2789aa 100644 --- a/src/main/java/org/scijava/io/location/URILocation.java +++ b/src/main/java/org/scijava/io/location/URILocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/URLLocation.java b/src/main/java/org/scijava/io/location/URLLocation.java index e96afcb7d..37619be4f 100644 --- a/src/main/java/org/scijava/io/location/URLLocation.java +++ b/src/main/java/org/scijava/io/location/URLLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java b/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java index 8e3d9afb9..92ccd5a1f 100644 --- a/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java +++ b/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/DefaultNIOService.java b/src/main/java/org/scijava/io/nio/DefaultNIOService.java index 832ce5e06..655580146 100644 --- a/src/main/java/org/scijava/io/nio/DefaultNIOService.java +++ b/src/main/java/org/scijava/io/nio/DefaultNIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/NIOService.java b/src/main/java/org/scijava/io/nio/NIOService.java index b56330b00..4bdb6be3e 100644 --- a/src/main/java/org/scijava/io/nio/NIOService.java +++ b/src/main/java/org/scijava/io/nio/NIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/AbstractLogService.java b/src/main/java/org/scijava/log/AbstractLogService.java index 74e620f2e..de30db3da 100644 --- a/src/main/java/org/scijava/log/AbstractLogService.java +++ b/src/main/java/org/scijava/log/AbstractLogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/CallingClassUtils.java b/src/main/java/org/scijava/log/CallingClassUtils.java index 4216120e7..c29516b91 100644 --- a/src/main/java/org/scijava/log/CallingClassUtils.java +++ b/src/main/java/org/scijava/log/CallingClassUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/DefaultLogger.java b/src/main/java/org/scijava/log/DefaultLogger.java index e8bbfdce6..0cf99f33e 100644 --- a/src/main/java/org/scijava/log/DefaultLogger.java +++ b/src/main/java/org/scijava/log/DefaultLogger.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java b/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java index b866c447c..e59cc2c93 100644 --- a/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java +++ b/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/IgnoreAsCallingClass.java b/src/main/java/org/scijava/log/IgnoreAsCallingClass.java index fc0043dc8..0b18fac9f 100644 --- a/src/main/java/org/scijava/log/IgnoreAsCallingClass.java +++ b/src/main/java/org/scijava/log/IgnoreAsCallingClass.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogLevel.java b/src/main/java/org/scijava/log/LogLevel.java index 0b0211f3b..0172ed524 100644 --- a/src/main/java/org/scijava/log/LogLevel.java +++ b/src/main/java/org/scijava/log/LogLevel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogListener.java b/src/main/java/org/scijava/log/LogListener.java index 502a54c8e..b2e8dad4b 100644 --- a/src/main/java/org/scijava/log/LogListener.java +++ b/src/main/java/org/scijava/log/LogListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogMessage.java b/src/main/java/org/scijava/log/LogMessage.java index 771fe28d9..4a621b261 100644 --- a/src/main/java/org/scijava/log/LogMessage.java +++ b/src/main/java/org/scijava/log/LogMessage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogService.java b/src/main/java/org/scijava/log/LogService.java index c4068d1ff..335abb8f6 100644 --- a/src/main/java/org/scijava/log/LogService.java +++ b/src/main/java/org/scijava/log/LogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogSource.java b/src/main/java/org/scijava/log/LogSource.java index 30bdca5b5..b44c48556 100644 --- a/src/main/java/org/scijava/log/LogSource.java +++ b/src/main/java/org/scijava/log/LogSource.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/Logged.java b/src/main/java/org/scijava/log/Logged.java index 59c1f5c5a..c12e4fe13 100644 --- a/src/main/java/org/scijava/log/Logged.java +++ b/src/main/java/org/scijava/log/Logged.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/Logger.java b/src/main/java/org/scijava/log/Logger.java index 4c066b310..0db237f70 100644 --- a/src/main/java/org/scijava/log/Logger.java +++ b/src/main/java/org/scijava/log/Logger.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/StderrLogService.java b/src/main/java/org/scijava/log/StderrLogService.java index e67c97132..9801bb746 100644 --- a/src/main/java/org/scijava/log/StderrLogService.java +++ b/src/main/java/org/scijava/log/StderrLogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/DefaultMainService.java b/src/main/java/org/scijava/main/DefaultMainService.java index 1be25c6bc..79dea58cf 100644 --- a/src/main/java/org/scijava/main/DefaultMainService.java +++ b/src/main/java/org/scijava/main/DefaultMainService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/MainService.java b/src/main/java/org/scijava/main/MainService.java index 2230a6d4e..d8b190de1 100644 --- a/src/main/java/org/scijava/main/MainService.java +++ b/src/main/java/org/scijava/main/MainService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/console/MainArgument.java b/src/main/java/org/scijava/main/console/MainArgument.java index e1548f46c..0125781da 100644 --- a/src/main/java/org/scijava/main/console/MainArgument.java +++ b/src/main/java/org/scijava/main/console/MainArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/run/MainCodeRunner.java b/src/main/java/org/scijava/main/run/MainCodeRunner.java index bbf3cc36a..6ff737b2b 100644 --- a/src/main/java/org/scijava/main/run/MainCodeRunner.java +++ b/src/main/java/org/scijava/main/run/MainCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/AbstractMenuCreator.java b/src/main/java/org/scijava/menu/AbstractMenuCreator.java index 8ad7ba7d4..d28e3fa73 100644 --- a/src/main/java/org/scijava/menu/AbstractMenuCreator.java +++ b/src/main/java/org/scijava/menu/AbstractMenuCreator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/DefaultMenuService.java b/src/main/java/org/scijava/menu/DefaultMenuService.java index af6eee927..73471d5c9 100644 --- a/src/main/java/org/scijava/menu/DefaultMenuService.java +++ b/src/main/java/org/scijava/menu/DefaultMenuService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuConstants.java b/src/main/java/org/scijava/menu/MenuConstants.java index f15311579..78f71535a 100644 --- a/src/main/java/org/scijava/menu/MenuConstants.java +++ b/src/main/java/org/scijava/menu/MenuConstants.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuCreator.java b/src/main/java/org/scijava/menu/MenuCreator.java index 0be942d50..20249f21b 100644 --- a/src/main/java/org/scijava/menu/MenuCreator.java +++ b/src/main/java/org/scijava/menu/MenuCreator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuService.java b/src/main/java/org/scijava/menu/MenuService.java index 2625caee8..1023a5fd6 100644 --- a/src/main/java/org/scijava/menu/MenuService.java +++ b/src/main/java/org/scijava/menu/MenuService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/ShadowMenu.java b/src/main/java/org/scijava/menu/ShadowMenu.java index 95bcd409a..f6b6e53db 100644 --- a/src/main/java/org/scijava/menu/ShadowMenu.java +++ b/src/main/java/org/scijava/menu/ShadowMenu.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/ShadowMenuIterator.java b/src/main/java/org/scijava/menu/ShadowMenuIterator.java index 2d35a8d2b..4ac49edb9 100644 --- a/src/main/java/org/scijava/menu/ShadowMenuIterator.java +++ b/src/main/java/org/scijava/menu/ShadowMenuIterator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenuEvent.java b/src/main/java/org/scijava/menu/event/MenuEvent.java index db950826c..c8ef4a79d 100644 --- a/src/main/java/org/scijava/menu/event/MenuEvent.java +++ b/src/main/java/org/scijava/menu/event/MenuEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusAddedEvent.java b/src/main/java/org/scijava/menu/event/MenusAddedEvent.java index 7b2595af5..299b7f68e 100644 --- a/src/main/java/org/scijava/menu/event/MenusAddedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java b/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java index 008d2784d..205c13229 100644 --- a/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java b/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java index ff0ea6cd6..ea69e3833 100644 --- a/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModule.java b/src/main/java/org/scijava/module/AbstractModule.java index 4dbae4407..4fd0aacf3 100644 --- a/src/main/java/org/scijava/module/AbstractModule.java +++ b/src/main/java/org/scijava/module/AbstractModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModuleInfo.java b/src/main/java/org/scijava/module/AbstractModuleInfo.java index 9fed0102c..29379b44e 100644 --- a/src/main/java/org/scijava/module/AbstractModuleInfo.java +++ b/src/main/java/org/scijava/module/AbstractModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModuleItem.java b/src/main/java/org/scijava/module/AbstractModuleItem.java index 3f8c7c09c..f61cfcc54 100644 --- a/src/main/java/org/scijava/module/AbstractModuleItem.java +++ b/src/main/java/org/scijava/module/AbstractModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultModuleService.java b/src/main/java/org/scijava/module/DefaultModuleService.java index e2c03c0cc..e4461f236 100644 --- a/src/main/java/org/scijava/module/DefaultModuleService.java +++ b/src/main/java/org/scijava/module/DefaultModuleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModule.java b/src/main/java/org/scijava/module/DefaultMutableModule.java index 3ab26d90f..768d6c663 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModule.java +++ b/src/main/java/org/scijava/module/DefaultMutableModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java b/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java index bdb3b0c4b..859fe0d9b 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java +++ b/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModuleItem.java b/src/main/java/org/scijava/module/DefaultMutableModuleItem.java index fc7cd35d0..3e3eb139c 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModuleItem.java +++ b/src/main/java/org/scijava/module/DefaultMutableModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MethodCallException.java b/src/main/java/org/scijava/module/MethodCallException.java index f42988331..eca6e5e5c 100644 --- a/src/main/java/org/scijava/module/MethodCallException.java +++ b/src/main/java/org/scijava/module/MethodCallException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MethodRef.java b/src/main/java/org/scijava/module/MethodRef.java index b20c2d714..758f8d390 100644 --- a/src/main/java/org/scijava/module/MethodRef.java +++ b/src/main/java/org/scijava/module/MethodRef.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/Module.java b/src/main/java/org/scijava/module/Module.java index 9df7cfda9..16f555a48 100644 --- a/src/main/java/org/scijava/module/Module.java +++ b/src/main/java/org/scijava/module/Module.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleCanceledException.java b/src/main/java/org/scijava/module/ModuleCanceledException.java index 85c20a202..c39147745 100644 --- a/src/main/java/org/scijava/module/ModuleCanceledException.java +++ b/src/main/java/org/scijava/module/ModuleCanceledException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleException.java b/src/main/java/org/scijava/module/ModuleException.java index 5b9a3495d..0b4339108 100644 --- a/src/main/java/org/scijava/module/ModuleException.java +++ b/src/main/java/org/scijava/module/ModuleException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleIndex.java b/src/main/java/org/scijava/module/ModuleIndex.java index 04f0d4de8..30f53e048 100644 --- a/src/main/java/org/scijava/module/ModuleIndex.java +++ b/src/main/java/org/scijava/module/ModuleIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleInfo.java b/src/main/java/org/scijava/module/ModuleInfo.java index b7ae95bab..d95a56335 100644 --- a/src/main/java/org/scijava/module/ModuleInfo.java +++ b/src/main/java/org/scijava/module/ModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleItem.java b/src/main/java/org/scijava/module/ModuleItem.java index 1f1f39003..cec5cb5e2 100644 --- a/src/main/java/org/scijava/module/ModuleItem.java +++ b/src/main/java/org/scijava/module/ModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleRunner.java b/src/main/java/org/scijava/module/ModuleRunner.java index 8fa173225..7de66702f 100644 --- a/src/main/java/org/scijava/module/ModuleRunner.java +++ b/src/main/java/org/scijava/module/ModuleRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleService.java b/src/main/java/org/scijava/module/ModuleService.java index f19ae1df3..ad1ae76d3 100644 --- a/src/main/java/org/scijava/module/ModuleService.java +++ b/src/main/java/org/scijava/module/ModuleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModule.java b/src/main/java/org/scijava/module/MutableModule.java index 1624c726d..487c98f00 100644 --- a/src/main/java/org/scijava/module/MutableModule.java +++ b/src/main/java/org/scijava/module/MutableModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModuleInfo.java b/src/main/java/org/scijava/module/MutableModuleInfo.java index ee7c00232..7dd5bffdd 100644 --- a/src/main/java/org/scijava/module/MutableModuleInfo.java +++ b/src/main/java/org/scijava/module/MutableModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModuleItem.java b/src/main/java/org/scijava/module/MutableModuleItem.java index 3ac251f50..73f952a7e 100644 --- a/src/main/java/org/scijava/module/MutableModuleItem.java +++ b/src/main/java/org/scijava/module/MutableModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java b/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java index d090600cb..4ad43d60d 100644 --- a/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleErroredEvent.java b/src/main/java/org/scijava/module/event/ModuleErroredEvent.java index 9fe97438c..ce0fd6924 100644 --- a/src/main/java/org/scijava/module/event/ModuleErroredEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleErroredEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleEvent.java b/src/main/java/org/scijava/module/event/ModuleEvent.java index ee5c721c1..d00c7ca09 100644 --- a/src/main/java/org/scijava/module/event/ModuleEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java index 66b8a8c29..eecd5c063 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java index d00bb48a4..2cd97f867 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java index 81ff94ee1..c19ba0535 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java b/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java index 6c7c2d543..9bc5604b3 100644 --- a/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java b/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java index 4587ba475..f92330682 100644 --- a/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java +++ b/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java b/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java index e4f228907..92e1ab81e 100644 --- a/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java +++ b/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleProcessEvent.java b/src/main/java/org/scijava/module/event/ModuleProcessEvent.java index 6519874f4..3588bc103 100644 --- a/src/main/java/org/scijava/module/event/ModuleProcessEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleProcessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleStartedEvent.java b/src/main/java/org/scijava/module/event/ModuleStartedEvent.java index aa31745a0..5da7e5fe7 100644 --- a/src/main/java/org/scijava/module/event/ModuleStartedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleStartedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesAddedEvent.java b/src/main/java/org/scijava/module/event/ModulesAddedEvent.java index 0b0844e94..b32385ae3 100644 --- a/src/main/java/org/scijava/module/event/ModulesAddedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesListEvent.java b/src/main/java/org/scijava/module/event/ModulesListEvent.java index fb5fc5199..5f6cca8c3 100644 --- a/src/main/java/org/scijava/module/event/ModulesListEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java b/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java index 00f2d276f..f8a9a9780 100644 --- a/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java b/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java index eb20e9431..075f1f826 100644 --- a/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java b/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java index d7a025dd6..575fec9b3 100644 --- a/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java b/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java index 1824c8b39..53cbac997 100644 --- a/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java b/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java index 59b9b77a6..0e30c3935 100644 --- a/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java +++ b/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java b/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java index 87526ac1a..545261ffc 100644 --- a/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DebugPostprocessor.java b/src/main/java/org/scijava/module/process/DebugPostprocessor.java index 7fbfb10df..af8bd28c2 100644 --- a/src/main/java/org/scijava/module/process/DebugPostprocessor.java +++ b/src/main/java/org/scijava/module/process/DebugPostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DebugPreprocessor.java b/src/main/java/org/scijava/module/process/DebugPreprocessor.java index 0cb62640c..8e33d1088 100644 --- a/src/main/java/org/scijava/module/process/DebugPreprocessor.java +++ b/src/main/java/org/scijava/module/process/DebugPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java b/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java index 272f8580d..28c951188 100644 --- a/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java +++ b/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/GatewayPreprocessor.java b/src/main/java/org/scijava/module/process/GatewayPreprocessor.java index 4d0a71616..b59b8c8cf 100644 --- a/src/main/java/org/scijava/module/process/GatewayPreprocessor.java +++ b/src/main/java/org/scijava/module/process/GatewayPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/InitPreprocessor.java b/src/main/java/org/scijava/module/process/InitPreprocessor.java index 629501688..89c6af4d7 100644 --- a/src/main/java/org/scijava/module/process/InitPreprocessor.java +++ b/src/main/java/org/scijava/module/process/InitPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java b/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java index 773096c99..228058fac 100644 --- a/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java index 439ae43e6..7f4b5531e 100644 --- a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java +++ b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModulePostprocessor.java b/src/main/java/org/scijava/module/process/ModulePostprocessor.java index 93a017750..ee9a06864 100644 --- a/src/main/java/org/scijava/module/process/ModulePostprocessor.java +++ b/src/main/java/org/scijava/module/process/ModulePostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModulePreprocessor.java b/src/main/java/org/scijava/module/process/ModulePreprocessor.java index f0cbe88b9..a90e04b8f 100644 --- a/src/main/java/org/scijava/module/process/ModulePreprocessor.java +++ b/src/main/java/org/scijava/module/process/ModulePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModuleProcessor.java b/src/main/java/org/scijava/module/process/ModuleProcessor.java index 003d0b2c7..67284b0a1 100644 --- a/src/main/java/org/scijava/module/process/ModuleProcessor.java +++ b/src/main/java/org/scijava/module/process/ModuleProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/PostprocessorPlugin.java b/src/main/java/org/scijava/module/process/PostprocessorPlugin.java index f60dc8cfc..21eccd05f 100644 --- a/src/main/java/org/scijava/module/process/PostprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/PostprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/PreprocessorPlugin.java b/src/main/java/org/scijava/module/process/PreprocessorPlugin.java index 357ca6612..fb8765a20 100644 --- a/src/main/java/org/scijava/module/process/PreprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/PreprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java b/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java index 742cb870e..c92e54bb8 100644 --- a/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ServicePreprocessor.java b/src/main/java/org/scijava/module/process/ServicePreprocessor.java index 44f7060ac..75c66526e 100644 --- a/src/main/java/org/scijava/module/process/ServicePreprocessor.java +++ b/src/main/java/org/scijava/module/process/ServicePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ValidityPreprocessor.java b/src/main/java/org/scijava/module/process/ValidityPreprocessor.java index 88c35a9d6..47c523036 100644 --- a/src/main/java/org/scijava/module/process/ValidityPreprocessor.java +++ b/src/main/java/org/scijava/module/process/ValidityPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/run/ModuleCodeRunner.java b/src/main/java/org/scijava/module/run/ModuleCodeRunner.java index 4cafd1220..15faa89ce 100644 --- a/src/main/java/org/scijava/module/run/ModuleCodeRunner.java +++ b/src/main/java/org/scijava/module/run/ModuleCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/DefaultObjectService.java b/src/main/java/org/scijava/object/DefaultObjectService.java index 8063f9709..7efa98f4b 100644 --- a/src/main/java/org/scijava/object/DefaultObjectService.java +++ b/src/main/java/org/scijava/object/DefaultObjectService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/LazyObjects.java b/src/main/java/org/scijava/object/LazyObjects.java index 12a53afc1..8d90f18b0 100644 --- a/src/main/java/org/scijava/object/LazyObjects.java +++ b/src/main/java/org/scijava/object/LazyObjects.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/NamedObjectIndex.java b/src/main/java/org/scijava/object/NamedObjectIndex.java index 8e3712e4a..a37c1eff1 100644 --- a/src/main/java/org/scijava/object/NamedObjectIndex.java +++ b/src/main/java/org/scijava/object/NamedObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/ObjectIndex.java b/src/main/java/org/scijava/object/ObjectIndex.java index 10220b1f3..3bc0567b0 100644 --- a/src/main/java/org/scijava/object/ObjectIndex.java +++ b/src/main/java/org/scijava/object/ObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/ObjectService.java b/src/main/java/org/scijava/object/ObjectService.java index 687fabdfe..7fce98b07 100644 --- a/src/main/java/org/scijava/object/ObjectService.java +++ b/src/main/java/org/scijava/object/ObjectService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/SortedObjectIndex.java b/src/main/java/org/scijava/object/SortedObjectIndex.java index 2a9f12e44..bb233bf26 100644 --- a/src/main/java/org/scijava/object/SortedObjectIndex.java +++ b/src/main/java/org/scijava/object/SortedObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ListEvent.java b/src/main/java/org/scijava/object/event/ListEvent.java index 58ad375df..84f8026a8 100644 --- a/src/main/java/org/scijava/object/event/ListEvent.java +++ b/src/main/java/org/scijava/object/event/ListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java b/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java index 597953762..7e35c68e4 100644 --- a/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java b/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java index d033c7d5a..fc5e237b6 100644 --- a/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectEvent.java b/src/main/java/org/scijava/object/event/ObjectEvent.java index 17446edf9..6730e23d1 100644 --- a/src/main/java/org/scijava/object/event/ObjectEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java b/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java index 8459e1a0d..33b1291d1 100644 --- a/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java b/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java index fb173a3a0..1ec22cb3a 100644 --- a/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsListEvent.java b/src/main/java/org/scijava/object/event/ObjectsListEvent.java index 6039ba504..d77e8f3cd 100644 --- a/src/main/java/org/scijava/object/event/ObjectsListEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java b/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java index 2d6e3a997..938b55b8e 100644 --- a/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/DefaultOptionsService.java b/src/main/java/org/scijava/options/DefaultOptionsService.java index 9967aa887..03379d9d8 100644 --- a/src/main/java/org/scijava/options/DefaultOptionsService.java +++ b/src/main/java/org/scijava/options/DefaultOptionsService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/OptionsPlugin.java b/src/main/java/org/scijava/options/OptionsPlugin.java index 1994745d8..c86b0f34d 100644 --- a/src/main/java/org/scijava/options/OptionsPlugin.java +++ b/src/main/java/org/scijava/options/OptionsPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/OptionsService.java b/src/main/java/org/scijava/options/OptionsService.java index d0e49bc8c..69353a5eb 100644 --- a/src/main/java/org/scijava/options/OptionsService.java +++ b/src/main/java/org/scijava/options/OptionsService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/event/OptionsEvent.java b/src/main/java/org/scijava/options/event/OptionsEvent.java index 49d676898..42e5cd1b7 100644 --- a/src/main/java/org/scijava/options/event/OptionsEvent.java +++ b/src/main/java/org/scijava/options/event/OptionsEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/DefaultParseService.java b/src/main/java/org/scijava/parse/DefaultParseService.java index 1257be932..b8d46f0f8 100644 --- a/src/main/java/org/scijava/parse/DefaultParseService.java +++ b/src/main/java/org/scijava/parse/DefaultParseService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/Item.java b/src/main/java/org/scijava/parse/Item.java index e531fad34..3ef55bcf4 100644 --- a/src/main/java/org/scijava/parse/Item.java +++ b/src/main/java/org/scijava/parse/Item.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/Items.java b/src/main/java/org/scijava/parse/Items.java index 9cc462972..1b9ac7dd1 100644 --- a/src/main/java/org/scijava/parse/Items.java +++ b/src/main/java/org/scijava/parse/Items.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/ParseService.java b/src/main/java/org/scijava/parse/ParseService.java index 2f8a5ed1a..19a705bcf 100644 --- a/src/main/java/org/scijava/parse/ParseService.java +++ b/src/main/java/org/scijava/parse/ParseService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/AbstractPlatform.java b/src/main/java/org/scijava/platform/AbstractPlatform.java index d192753f2..73710dfc2 100644 --- a/src/main/java/org/scijava/platform/AbstractPlatform.java +++ b/src/main/java/org/scijava/platform/AbstractPlatform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/AppEventService.java b/src/main/java/org/scijava/platform/AppEventService.java index c8e51bf5d..b10605b52 100644 --- a/src/main/java/org/scijava/platform/AppEventService.java +++ b/src/main/java/org/scijava/platform/AppEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultAppEventService.java b/src/main/java/org/scijava/platform/DefaultAppEventService.java index ebc753143..55b276774 100644 --- a/src/main/java/org/scijava/platform/DefaultAppEventService.java +++ b/src/main/java/org/scijava/platform/DefaultAppEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultPlatform.java b/src/main/java/org/scijava/platform/DefaultPlatform.java index 35c756bdc..fbd7e67f0 100644 --- a/src/main/java/org/scijava/platform/DefaultPlatform.java +++ b/src/main/java/org/scijava/platform/DefaultPlatform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultPlatformService.java b/src/main/java/org/scijava/platform/DefaultPlatformService.java index 5dd7ffe6b..5804a11a4 100644 --- a/src/main/java/org/scijava/platform/DefaultPlatformService.java +++ b/src/main/java/org/scijava/platform/DefaultPlatformService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/Platform.java b/src/main/java/org/scijava/platform/Platform.java index fd3b71e6d..948024f61 100644 --- a/src/main/java/org/scijava/platform/Platform.java +++ b/src/main/java/org/scijava/platform/Platform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/PlatformService.java b/src/main/java/org/scijava/platform/PlatformService.java index 99eaf6612..c8e796e7f 100644 --- a/src/main/java/org/scijava/platform/PlatformService.java +++ b/src/main/java/org/scijava/platform/PlatformService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppAboutEvent.java b/src/main/java/org/scijava/platform/event/AppAboutEvent.java index 1b1390e93..b266a20bb 100644 --- a/src/main/java/org/scijava/platform/event/AppAboutEvent.java +++ b/src/main/java/org/scijava/platform/event/AppAboutEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppFocusEvent.java b/src/main/java/org/scijava/platform/event/AppFocusEvent.java index 5aafe2b91..4f65243fd 100644 --- a/src/main/java/org/scijava/platform/event/AppFocusEvent.java +++ b/src/main/java/org/scijava/platform/event/AppFocusEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java b/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java index 5603e085d..94244046e 100644 --- a/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java +++ b/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java b/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java index aa33f9e15..6a51cf9da 100644 --- a/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java +++ b/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java b/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java index 73a123737..650200905 100644 --- a/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java +++ b/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppPrintEvent.java b/src/main/java/org/scijava/platform/event/AppPrintEvent.java index 03be243a9..7325f24cc 100644 --- a/src/main/java/org/scijava/platform/event/AppPrintEvent.java +++ b/src/main/java/org/scijava/platform/event/AppPrintEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppQuitEvent.java b/src/main/java/org/scijava/platform/event/AppQuitEvent.java index f2398c75f..002192a48 100644 --- a/src/main/java/org/scijava/platform/event/AppQuitEvent.java +++ b/src/main/java/org/scijava/platform/event/AppQuitEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppReOpenEvent.java b/src/main/java/org/scijava/platform/event/AppReOpenEvent.java index 674f3b340..f5657e7b2 100644 --- a/src/main/java/org/scijava/platform/event/AppReOpenEvent.java +++ b/src/main/java/org/scijava/platform/event/AppReOpenEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java b/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java index a82b0c20a..678e2e839 100644 --- a/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppSleepEvent.java b/src/main/java/org/scijava/platform/event/AppSleepEvent.java index b70c05442..c8e102725 100644 --- a/src/main/java/org/scijava/platform/event/AppSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java b/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java index 4cbfa99f3..5fe8a7286 100644 --- a/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java b/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java index 3a48d5a5e..bd99e0c74 100644 --- a/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java +++ b/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppVisibleEvent.java b/src/main/java/org/scijava/platform/event/AppVisibleEvent.java index e99c60d37..45a9fb4e2 100644 --- a/src/main/java/org/scijava/platform/event/AppVisibleEvent.java +++ b/src/main/java/org/scijava/platform/event/AppVisibleEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/ApplicationEvent.java b/src/main/java/org/scijava/platform/event/ApplicationEvent.java index e5af9d7bd..0038af03f 100644 --- a/src/main/java/org/scijava/platform/event/ApplicationEvent.java +++ b/src/main/java/org/scijava/platform/event/ApplicationEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java b/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java index 91448fa9b..b0e475b68 100644 --- a/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractHandlerService.java b/src/main/java/org/scijava/plugin/AbstractHandlerService.java index e17ba3be7..f2562e9ae 100644 --- a/src/main/java/org/scijava/plugin/AbstractHandlerService.java +++ b/src/main/java/org/scijava/plugin/AbstractHandlerService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractPTService.java b/src/main/java/org/scijava/plugin/AbstractPTService.java index 76b268b65..5170d256e 100644 --- a/src/main/java/org/scijava/plugin/AbstractPTService.java +++ b/src/main/java/org/scijava/plugin/AbstractPTService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractRichPlugin.java b/src/main/java/org/scijava/plugin/AbstractRichPlugin.java index 4b61e1b9f..5f804afa7 100644 --- a/src/main/java/org/scijava/plugin/AbstractRichPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractRichPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractSingletonService.java b/src/main/java/org/scijava/plugin/AbstractSingletonService.java index 28885726a..fe51559aa 100644 --- a/src/main/java/org/scijava/plugin/AbstractSingletonService.java +++ b/src/main/java/org/scijava/plugin/AbstractSingletonService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java b/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java index cb479c299..40929cf32 100644 --- a/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractTypedService.java b/src/main/java/org/scijava/plugin/AbstractTypedService.java index d2ab714a7..67fe4a669 100644 --- a/src/main/java/org/scijava/plugin/AbstractTypedService.java +++ b/src/main/java/org/scijava/plugin/AbstractTypedService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java b/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java index d2324ccd3..525fd50c3 100644 --- a/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractWrapperService.java b/src/main/java/org/scijava/plugin/AbstractWrapperService.java index 69fa49c20..c05cb94ad 100644 --- a/src/main/java/org/scijava/plugin/AbstractWrapperService.java +++ b/src/main/java/org/scijava/plugin/AbstractWrapperService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Attr.java b/src/main/java/org/scijava/plugin/Attr.java index e828d2f2b..4287edcc0 100644 --- a/src/main/java/org/scijava/plugin/Attr.java +++ b/src/main/java/org/scijava/plugin/Attr.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/DefaultPluginFinder.java b/src/main/java/org/scijava/plugin/DefaultPluginFinder.java index 9b2041484..0b16c9d58 100644 --- a/src/main/java/org/scijava/plugin/DefaultPluginFinder.java +++ b/src/main/java/org/scijava/plugin/DefaultPluginFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/DefaultPluginService.java b/src/main/java/org/scijava/plugin/DefaultPluginService.java index 7e73d3e2c..c904ffb73 100644 --- a/src/main/java/org/scijava/plugin/DefaultPluginService.java +++ b/src/main/java/org/scijava/plugin/DefaultPluginService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HandlerPlugin.java b/src/main/java/org/scijava/plugin/HandlerPlugin.java index b08fad223..f2fe8aaf8 100644 --- a/src/main/java/org/scijava/plugin/HandlerPlugin.java +++ b/src/main/java/org/scijava/plugin/HandlerPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HandlerService.java b/src/main/java/org/scijava/plugin/HandlerService.java index 8a5942493..168f977d1 100644 --- a/src/main/java/org/scijava/plugin/HandlerService.java +++ b/src/main/java/org/scijava/plugin/HandlerService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HasPluginInfo.java b/src/main/java/org/scijava/plugin/HasPluginInfo.java index 971201198..3f6cfaf1e 100644 --- a/src/main/java/org/scijava/plugin/HasPluginInfo.java +++ b/src/main/java/org/scijava/plugin/HasPluginInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Menu.java b/src/main/java/org/scijava/plugin/Menu.java index 3c3b0706a..d25e7fc0a 100644 --- a/src/main/java/org/scijava/plugin/Menu.java +++ b/src/main/java/org/scijava/plugin/Menu.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PTService.java b/src/main/java/org/scijava/plugin/PTService.java index ad63b6919..191c8064a 100644 --- a/src/main/java/org/scijava/plugin/PTService.java +++ b/src/main/java/org/scijava/plugin/PTService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Parameter.java b/src/main/java/org/scijava/plugin/Parameter.java index f922c23c8..1ed64c82d 100644 --- a/src/main/java/org/scijava/plugin/Parameter.java +++ b/src/main/java/org/scijava/plugin/Parameter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Plugin.java b/src/main/java/org/scijava/plugin/Plugin.java index d2aabba95..5a8fbc5cb 100644 --- a/src/main/java/org/scijava/plugin/Plugin.java +++ b/src/main/java/org/scijava/plugin/Plugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginFinder.java b/src/main/java/org/scijava/plugin/PluginFinder.java index ccf96ee6a..450af2428 100644 --- a/src/main/java/org/scijava/plugin/PluginFinder.java +++ b/src/main/java/org/scijava/plugin/PluginFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginIndex.java b/src/main/java/org/scijava/plugin/PluginIndex.java index 944133d38..b1ae59bd4 100644 --- a/src/main/java/org/scijava/plugin/PluginIndex.java +++ b/src/main/java/org/scijava/plugin/PluginIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginInfo.java b/src/main/java/org/scijava/plugin/PluginInfo.java index 6629cdb80..dc127f074 100644 --- a/src/main/java/org/scijava/plugin/PluginInfo.java +++ b/src/main/java/org/scijava/plugin/PluginInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginService.java b/src/main/java/org/scijava/plugin/PluginService.java index 3b8ccea3e..e85bf76db 100644 --- a/src/main/java/org/scijava/plugin/PluginService.java +++ b/src/main/java/org/scijava/plugin/PluginService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/RichPlugin.java b/src/main/java/org/scijava/plugin/RichPlugin.java index 29fc580af..8f5eb862b 100644 --- a/src/main/java/org/scijava/plugin/RichPlugin.java +++ b/src/main/java/org/scijava/plugin/RichPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SciJavaPlugin.java b/src/main/java/org/scijava/plugin/SciJavaPlugin.java index bdbe7df70..b7bc4c919 100644 --- a/src/main/java/org/scijava/plugin/SciJavaPlugin.java +++ b/src/main/java/org/scijava/plugin/SciJavaPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SingletonPlugin.java b/src/main/java/org/scijava/plugin/SingletonPlugin.java index 28c9dbd60..79de0e2e0 100644 --- a/src/main/java/org/scijava/plugin/SingletonPlugin.java +++ b/src/main/java/org/scijava/plugin/SingletonPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SingletonService.java b/src/main/java/org/scijava/plugin/SingletonService.java index 7f2363307..3ba80f8ca 100644 --- a/src/main/java/org/scijava/plugin/SingletonService.java +++ b/src/main/java/org/scijava/plugin/SingletonService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SortablePlugin.java b/src/main/java/org/scijava/plugin/SortablePlugin.java index 84da9b16c..257afa423 100644 --- a/src/main/java/org/scijava/plugin/SortablePlugin.java +++ b/src/main/java/org/scijava/plugin/SortablePlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/TypedPlugin.java b/src/main/java/org/scijava/plugin/TypedPlugin.java index 1e583d42a..a3f6033ca 100644 --- a/src/main/java/org/scijava/plugin/TypedPlugin.java +++ b/src/main/java/org/scijava/plugin/TypedPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/TypedService.java b/src/main/java/org/scijava/plugin/TypedService.java index 9629620e6..868144629 100644 --- a/src/main/java/org/scijava/plugin/TypedService.java +++ b/src/main/java/org/scijava/plugin/TypedService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/WrapperPlugin.java b/src/main/java/org/scijava/plugin/WrapperPlugin.java index bfb036898..2cf9a517c 100644 --- a/src/main/java/org/scijava/plugin/WrapperPlugin.java +++ b/src/main/java/org/scijava/plugin/WrapperPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/WrapperService.java b/src/main/java/org/scijava/plugin/WrapperService.java index c42d27caf..3225df43b 100644 --- a/src/main/java/org/scijava/plugin/WrapperService.java +++ b/src/main/java/org/scijava/plugin/WrapperService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java b/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java index ed682367c..6a1fe60fe 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsListEvent.java b/src/main/java/org/scijava/plugin/event/PluginsListEvent.java index af1505342..0f28602fc 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsListEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java b/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java index a302db020..978a4e2de 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/AbstractPrefService.java b/src/main/java/org/scijava/prefs/AbstractPrefService.java index 084df69de..7c1b98cba 100644 --- a/src/main/java/org/scijava/prefs/AbstractPrefService.java +++ b/src/main/java/org/scijava/prefs/AbstractPrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/DefaultPrefService.java b/src/main/java/org/scijava/prefs/DefaultPrefService.java index dfc9b9fa8..f174db6c0 100644 --- a/src/main/java/org/scijava/prefs/DefaultPrefService.java +++ b/src/main/java/org/scijava/prefs/DefaultPrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/PrefService.java b/src/main/java/org/scijava/prefs/PrefService.java index c5761b178..30c91aa6e 100644 --- a/src/main/java/org/scijava/prefs/PrefService.java +++ b/src/main/java/org/scijava/prefs/PrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/AbstractCodeRunner.java b/src/main/java/org/scijava/run/AbstractCodeRunner.java index 4d7eb067a..5d02b3634 100644 --- a/src/main/java/org/scijava/run/AbstractCodeRunner.java +++ b/src/main/java/org/scijava/run/AbstractCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/CodeRunner.java b/src/main/java/org/scijava/run/CodeRunner.java index 06b626881..d1def7ea2 100644 --- a/src/main/java/org/scijava/run/CodeRunner.java +++ b/src/main/java/org/scijava/run/CodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/DefaultRunService.java b/src/main/java/org/scijava/run/DefaultRunService.java index eab573481..883f52e10 100644 --- a/src/main/java/org/scijava/run/DefaultRunService.java +++ b/src/main/java/org/scijava/run/DefaultRunService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/RunService.java b/src/main/java/org/scijava/run/RunService.java index 4d815098d..3fd6cb61e 100644 --- a/src/main/java/org/scijava/run/RunService.java +++ b/src/main/java/org/scijava/run/RunService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/console/RunArgument.java b/src/main/java/org/scijava/run/console/RunArgument.java index 80b9cd073..373da220d 100644 --- a/src/main/java/org/scijava/run/console/RunArgument.java +++ b/src/main/java/org/scijava/run/console/RunArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractAutoCompleter.java b/src/main/java/org/scijava/script/AbstractAutoCompleter.java index fe843eff8..effad4d7f 100644 --- a/src/main/java/org/scijava/script/AbstractAutoCompleter.java +++ b/src/main/java/org/scijava/script/AbstractAutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptContext.java b/src/main/java/org/scijava/script/AbstractScriptContext.java index 67c0d3fee..bc2290a23 100644 --- a/src/main/java/org/scijava/script/AbstractScriptContext.java +++ b/src/main/java/org/scijava/script/AbstractScriptContext.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptEngine.java b/src/main/java/org/scijava/script/AbstractScriptEngine.java index 5826abf07..b62aa5c2f 100644 --- a/src/main/java/org/scijava/script/AbstractScriptEngine.java +++ b/src/main/java/org/scijava/script/AbstractScriptEngine.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptHeader.java b/src/main/java/org/scijava/script/AbstractScriptHeader.java index 8779ac1dc..03306775e 100644 --- a/src/main/java/org/scijava/script/AbstractScriptHeader.java +++ b/src/main/java/org/scijava/script/AbstractScriptHeader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptLanguage.java b/src/main/java/org/scijava/script/AbstractScriptLanguage.java index 3ead99983..f99cba338 100644 --- a/src/main/java/org/scijava/script/AbstractScriptLanguage.java +++ b/src/main/java/org/scijava/script/AbstractScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AdaptedScriptEngine.java b/src/main/java/org/scijava/script/AdaptedScriptEngine.java index e08f84ff7..3144c16af 100644 --- a/src/main/java/org/scijava/script/AdaptedScriptEngine.java +++ b/src/main/java/org/scijava/script/AdaptedScriptEngine.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java index b29910428..084256755 100644 --- a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java +++ b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AutoCompleter.java b/src/main/java/org/scijava/script/AutoCompleter.java index 18783f1e3..190dddd80 100644 --- a/src/main/java/org/scijava/script/AutoCompleter.java +++ b/src/main/java/org/scijava/script/AutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AutoCompletionResult.java b/src/main/java/org/scijava/script/AutoCompletionResult.java index 7a495fe7c..5d65a3f36 100644 --- a/src/main/java/org/scijava/script/AutoCompletionResult.java +++ b/src/main/java/org/scijava/script/AutoCompletionResult.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/CodeGenerator.java b/src/main/java/org/scijava/script/CodeGenerator.java index 16ee156d4..ae578fb40 100644 --- a/src/main/java/org/scijava/script/CodeGenerator.java +++ b/src/main/java/org/scijava/script/CodeGenerator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/CodeGeneratorJava.java b/src/main/java/org/scijava/script/CodeGeneratorJava.java index 7f022c097..69a038be1 100644 --- a/src/main/java/org/scijava/script/CodeGeneratorJava.java +++ b/src/main/java/org/scijava/script/CodeGeneratorJava.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultAutoCompleter.java b/src/main/java/org/scijava/script/DefaultAutoCompleter.java index f4fcf2f75..18ebb0dcb 100644 --- a/src/main/java/org/scijava/script/DefaultAutoCompleter.java +++ b/src/main/java/org/scijava/script/DefaultAutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptHeaderService.java b/src/main/java/org/scijava/script/DefaultScriptHeaderService.java index f81c1cdaa..fd34edbd6 100644 --- a/src/main/java/org/scijava/script/DefaultScriptHeaderService.java +++ b/src/main/java/org/scijava/script/DefaultScriptHeaderService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java index c365ae33f..664ccc300 100644 --- a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java +++ b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptService.java b/src/main/java/org/scijava/script/DefaultScriptService.java index e7fcc6e73..e7f1f0e61 100644 --- a/src/main/java/org/scijava/script/DefaultScriptService.java +++ b/src/main/java/org/scijava/script/DefaultScriptService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/InvocationObject.java b/src/main/java/org/scijava/script/InvocationObject.java index e4de7ae54..1e768a057 100644 --- a/src/main/java/org/scijava/script/InvocationObject.java +++ b/src/main/java/org/scijava/script/InvocationObject.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ParameterObject.java b/src/main/java/org/scijava/script/ParameterObject.java index 6b883fe95..df2374beb 100644 --- a/src/main/java/org/scijava/script/ParameterObject.java +++ b/src/main/java/org/scijava/script/ParameterObject.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptCLI.java b/src/main/java/org/scijava/script/ScriptCLI.java index ab6383b19..db53036a3 100644 --- a/src/main/java/org/scijava/script/ScriptCLI.java +++ b/src/main/java/org/scijava/script/ScriptCLI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptFinder.java b/src/main/java/org/scijava/script/ScriptFinder.java index 23701ea99..55aad7ed5 100644 --- a/src/main/java/org/scijava/script/ScriptFinder.java +++ b/src/main/java/org/scijava/script/ScriptFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptHeader.java b/src/main/java/org/scijava/script/ScriptHeader.java index 3fef71dbf..fbaff7497 100644 --- a/src/main/java/org/scijava/script/ScriptHeader.java +++ b/src/main/java/org/scijava/script/ScriptHeader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptHeaderService.java b/src/main/java/org/scijava/script/ScriptHeaderService.java index 20ea362fa..c1e167ade 100644 --- a/src/main/java/org/scijava/script/ScriptHeaderService.java +++ b/src/main/java/org/scijava/script/ScriptHeaderService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptInfo.java b/src/main/java/org/scijava/script/ScriptInfo.java index cd664397d..f643e0a54 100644 --- a/src/main/java/org/scijava/script/ScriptInfo.java +++ b/src/main/java/org/scijava/script/ScriptInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptInterpreter.java b/src/main/java/org/scijava/script/ScriptInterpreter.java index 098ca57c8..491847136 100644 --- a/src/main/java/org/scijava/script/ScriptInterpreter.java +++ b/src/main/java/org/scijava/script/ScriptInterpreter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptLanguage.java b/src/main/java/org/scijava/script/ScriptLanguage.java index 5c532bd38..f841f32c1 100644 --- a/src/main/java/org/scijava/script/ScriptLanguage.java +++ b/src/main/java/org/scijava/script/ScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptLanguageIndex.java b/src/main/java/org/scijava/script/ScriptLanguageIndex.java index 05bdddadd..fe138cd28 100644 --- a/src/main/java/org/scijava/script/ScriptLanguageIndex.java +++ b/src/main/java/org/scijava/script/ScriptLanguageIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptModule.java b/src/main/java/org/scijava/script/ScriptModule.java index 824e47e67..dedf744f4 100644 --- a/src/main/java/org/scijava/script/ScriptModule.java +++ b/src/main/java/org/scijava/script/ScriptModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptREPL.java b/src/main/java/org/scijava/script/ScriptREPL.java index d09dc7eab..2a93a92c1 100644 --- a/src/main/java/org/scijava/script/ScriptREPL.java +++ b/src/main/java/org/scijava/script/ScriptREPL.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptService.java b/src/main/java/org/scijava/script/ScriptService.java index f8764d7da..c1a61044d 100644 --- a/src/main/java/org/scijava/script/ScriptService.java +++ b/src/main/java/org/scijava/script/ScriptService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/console/RunScriptArgument.java b/src/main/java/org/scijava/script/console/RunScriptArgument.java index 145ea53ea..b78065ee2 100644 --- a/src/main/java/org/scijava/script/console/RunScriptArgument.java +++ b/src/main/java/org/scijava/script/console/RunScriptArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/io/ScriptIOPlugin.java b/src/main/java/org/scijava/script/io/ScriptIOPlugin.java index 208ac521d..b6b30209f 100644 --- a/src/main/java/org/scijava/script/io/ScriptIOPlugin.java +++ b/src/main/java/org/scijava/script/io/ScriptIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java b/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java index ebdf8483b..ded8f418d 100644 --- a/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java +++ b/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java b/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java index dfc68ca99..4dfa5ff38 100644 --- a/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java b/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java index 446f633a2..2e0dfd703 100644 --- a/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptCallback.java b/src/main/java/org/scijava/script/process/ScriptCallback.java index b458da421..445dd157e 100644 --- a/src/main/java/org/scijava/script/process/ScriptCallback.java +++ b/src/main/java/org/scijava/script/process/ScriptCallback.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java b/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java index dc6ae85c1..fffc58568 100644 --- a/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptProcessor.java b/src/main/java/org/scijava/script/process/ScriptProcessor.java index 36d053963..415f51826 100644 --- a/src/main/java/org/scijava/script/process/ScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptProcessorService.java b/src/main/java/org/scijava/script/process/ScriptProcessorService.java index 1ce80c5af..811ab47d4 100644 --- a/src/main/java/org/scijava/script/process/ScriptProcessorService.java +++ b/src/main/java/org/scijava/script/process/ScriptProcessorService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java b/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java index db05e71b9..f7edef985 100644 --- a/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/run/ScriptCodeRunner.java b/src/main/java/org/scijava/script/run/ScriptCodeRunner.java index 5c8e47659..8d4a4a61c 100644 --- a/src/main/java/org/scijava/script/run/ScriptCodeRunner.java +++ b/src/main/java/org/scijava/script/run/ScriptCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/AbstractService.java b/src/main/java/org/scijava/service/AbstractService.java index bf20248a4..841c8c468 100644 --- a/src/main/java/org/scijava/service/AbstractService.java +++ b/src/main/java/org/scijava/service/AbstractService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/SciJavaService.java b/src/main/java/org/scijava/service/SciJavaService.java index fc0e005b0..869ce3269 100644 --- a/src/main/java/org/scijava/service/SciJavaService.java +++ b/src/main/java/org/scijava/service/SciJavaService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/Service.java b/src/main/java/org/scijava/service/Service.java index f078de931..392a6dc08 100644 --- a/src/main/java/org/scijava/service/Service.java +++ b/src/main/java/org/scijava/service/Service.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/ServiceHelper.java b/src/main/java/org/scijava/service/ServiceHelper.java index 4f1031efa..d7ad8003e 100644 --- a/src/main/java/org/scijava/service/ServiceHelper.java +++ b/src/main/java/org/scijava/service/ServiceHelper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/ServiceIndex.java b/src/main/java/org/scijava/service/ServiceIndex.java index 24d693aa9..962952d3e 100644 --- a/src/main/java/org/scijava/service/ServiceIndex.java +++ b/src/main/java/org/scijava/service/ServiceIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java b/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java index bb5fd2258..2b9e9a119 100644 --- a/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java +++ b/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/startup/DefaultStartupService.java b/src/main/java/org/scijava/startup/DefaultStartupService.java index 197cf4774..356437eb4 100644 --- a/src/main/java/org/scijava/startup/DefaultStartupService.java +++ b/src/main/java/org/scijava/startup/DefaultStartupService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/startup/StartupService.java b/src/main/java/org/scijava/startup/StartupService.java index 0f100ff8a..6a47f97d1 100644 --- a/src/main/java/org/scijava/startup/StartupService.java +++ b/src/main/java/org/scijava/startup/StartupService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/DefaultTask.java b/src/main/java/org/scijava/task/DefaultTask.java index 94d817c53..c14d7ad54 100644 --- a/src/main/java/org/scijava/task/DefaultTask.java +++ b/src/main/java/org/scijava/task/DefaultTask.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/DefaultTaskService.java b/src/main/java/org/scijava/task/DefaultTaskService.java index f550585c9..5ad770f25 100644 --- a/src/main/java/org/scijava/task/DefaultTaskService.java +++ b/src/main/java/org/scijava/task/DefaultTaskService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/Task.java b/src/main/java/org/scijava/task/Task.java index be1197d77..a91cdcf6b 100644 --- a/src/main/java/org/scijava/task/Task.java +++ b/src/main/java/org/scijava/task/Task.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/TaskService.java b/src/main/java/org/scijava/task/TaskService.java index 3cacfac9b..5bf0cb2f8 100644 --- a/src/main/java/org/scijava/task/TaskService.java +++ b/src/main/java/org/scijava/task/TaskService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/event/TaskEvent.java b/src/main/java/org/scijava/task/event/TaskEvent.java index 097c9346c..4173c3bc5 100644 --- a/src/main/java/org/scijava/task/event/TaskEvent.java +++ b/src/main/java/org/scijava/task/event/TaskEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/test/TestUtils.java b/src/main/java/org/scijava/test/TestUtils.java index 54c3061e7..692b4fd25 100644 --- a/src/main/java/org/scijava/test/TestUtils.java +++ b/src/main/java/org/scijava/test/TestUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/AbstractTextFormat.java b/src/main/java/org/scijava/text/AbstractTextFormat.java index 55ab02b6b..3bb2edc9e 100644 --- a/src/main/java/org/scijava/text/AbstractTextFormat.java +++ b/src/main/java/org/scijava/text/AbstractTextFormat.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/DefaultTextService.java b/src/main/java/org/scijava/text/DefaultTextService.java index 5836c4e19..a81ed7c0e 100644 --- a/src/main/java/org/scijava/text/DefaultTextService.java +++ b/src/main/java/org/scijava/text/DefaultTextService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/TextFormat.java b/src/main/java/org/scijava/text/TextFormat.java index 076039e9a..05ec572c7 100644 --- a/src/main/java/org/scijava/text/TextFormat.java +++ b/src/main/java/org/scijava/text/TextFormat.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/TextService.java b/src/main/java/org/scijava/text/TextService.java index c8c2219a0..75bae744a 100644 --- a/src/main/java/org/scijava/text/TextService.java +++ b/src/main/java/org/scijava/text/TextService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/DefaultTextIOService.java b/src/main/java/org/scijava/text/io/DefaultTextIOService.java index cba64c9bf..d27ec4657 100644 --- a/src/main/java/org/scijava/text/io/DefaultTextIOService.java +++ b/src/main/java/org/scijava/text/io/DefaultTextIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/TextIOPlugin.java b/src/main/java/org/scijava/text/io/TextIOPlugin.java index d5ce2850a..16e9ba34f 100644 --- a/src/main/java/org/scijava/text/io/TextIOPlugin.java +++ b/src/main/java/org/scijava/text/io/TextIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/TextIOService.java b/src/main/java/org/scijava/text/io/TextIOService.java index 12f629b91..a218aec0f 100644 --- a/src/main/java/org/scijava/text/io/TextIOService.java +++ b/src/main/java/org/scijava/text/io/TextIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/thread/DefaultThreadService.java b/src/main/java/org/scijava/thread/DefaultThreadService.java index 168f9a991..6f48f9e34 100644 --- a/src/main/java/org/scijava/thread/DefaultThreadService.java +++ b/src/main/java/org/scijava/thread/DefaultThreadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/thread/ThreadService.java b/src/main/java/org/scijava/thread/ThreadService.java index 0d272b87d..aeec0d1ba 100644 --- a/src/main/java/org/scijava/thread/ThreadService.java +++ b/src/main/java/org/scijava/thread/ThreadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/AbstractTool.java b/src/main/java/org/scijava/tool/AbstractTool.java index 95f89ccc4..4ec4bd878 100644 --- a/src/main/java/org/scijava/tool/AbstractTool.java +++ b/src/main/java/org/scijava/tool/AbstractTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/CustomDrawnTool.java b/src/main/java/org/scijava/tool/CustomDrawnTool.java index 1ec0e78ff..10aafc9db 100644 --- a/src/main/java/org/scijava/tool/CustomDrawnTool.java +++ b/src/main/java/org/scijava/tool/CustomDrawnTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/DefaultToolService.java b/src/main/java/org/scijava/tool/DefaultToolService.java index 4f2e8d168..e59976a8f 100644 --- a/src/main/java/org/scijava/tool/DefaultToolService.java +++ b/src/main/java/org/scijava/tool/DefaultToolService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/DummyTool.java b/src/main/java/org/scijava/tool/DummyTool.java index d155ef30a..6dc220279 100644 --- a/src/main/java/org/scijava/tool/DummyTool.java +++ b/src/main/java/org/scijava/tool/DummyTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/IconDrawer.java b/src/main/java/org/scijava/tool/IconDrawer.java index e3f108a4d..2493b7880 100644 --- a/src/main/java/org/scijava/tool/IconDrawer.java +++ b/src/main/java/org/scijava/tool/IconDrawer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/IconService.java b/src/main/java/org/scijava/tool/IconService.java index 67ddf9033..0d6349818 100644 --- a/src/main/java/org/scijava/tool/IconService.java +++ b/src/main/java/org/scijava/tool/IconService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/Tool.java b/src/main/java/org/scijava/tool/Tool.java index e345c253f..31adad6d6 100644 --- a/src/main/java/org/scijava/tool/Tool.java +++ b/src/main/java/org/scijava/tool/Tool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/ToolService.java b/src/main/java/org/scijava/tool/ToolService.java index 0a84ae96b..8fe2855f9 100644 --- a/src/main/java/org/scijava/tool/ToolService.java +++ b/src/main/java/org/scijava/tool/ToolService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java b/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java index 9bdb75a60..e2eabdf0d 100644 --- a/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java b/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java index a197eca41..5b668aa23 100644 --- a/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolEvent.java b/src/main/java/org/scijava/tool/event/ToolEvent.java index c4c058393..553fd83e1 100644 --- a/src/main/java/org/scijava/tool/event/ToolEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ARGBPlane.java b/src/main/java/org/scijava/ui/ARGBPlane.java index 4c9b60709..b30d9df8f 100644 --- a/src/main/java/org/scijava/ui/ARGBPlane.java +++ b/src/main/java/org/scijava/ui/ARGBPlane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java b/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java index f3db6253a..b29383470 100644 --- a/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java +++ b/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractUIInputWidget.java b/src/main/java/org/scijava/ui/AbstractUIInputWidget.java index a5e1ec829..606864da0 100644 --- a/src/main/java/org/scijava/ui/AbstractUIInputWidget.java +++ b/src/main/java/org/scijava/ui/AbstractUIInputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractUserInterface.java b/src/main/java/org/scijava/ui/AbstractUserInterface.java index decf671af..fd9cc24d1 100644 --- a/src/main/java/org/scijava/ui/AbstractUserInterface.java +++ b/src/main/java/org/scijava/ui/AbstractUserInterface.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ApplicationFrame.java b/src/main/java/org/scijava/ui/ApplicationFrame.java index f4ecf39ea..98a2ce24d 100644 --- a/src/main/java/org/scijava/ui/ApplicationFrame.java +++ b/src/main/java/org/scijava/ui/ApplicationFrame.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/Arrangeable.java b/src/main/java/org/scijava/ui/Arrangeable.java index ad95bb784..19c8cd3a3 100644 --- a/src/main/java/org/scijava/ui/Arrangeable.java +++ b/src/main/java/org/scijava/ui/Arrangeable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/CloseConfirmable.java b/src/main/java/org/scijava/ui/CloseConfirmable.java index c92b2a9f3..729a15ed5 100644 --- a/src/main/java/org/scijava/ui/CloseConfirmable.java +++ b/src/main/java/org/scijava/ui/CloseConfirmable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/DefaultUIService.java b/src/main/java/org/scijava/ui/DefaultUIService.java index cda97ec0b..fe787ad5c 100644 --- a/src/main/java/org/scijava/ui/DefaultUIService.java +++ b/src/main/java/org/scijava/ui/DefaultUIService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/Desktop.java b/src/main/java/org/scijava/ui/Desktop.java index 114b512cc..e851e6634 100644 --- a/src/main/java/org/scijava/ui/Desktop.java +++ b/src/main/java/org/scijava/ui/Desktop.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/DialogPrompt.java b/src/main/java/org/scijava/ui/DialogPrompt.java index f21ab726e..7a14960e2 100644 --- a/src/main/java/org/scijava/ui/DialogPrompt.java +++ b/src/main/java/org/scijava/ui/DialogPrompt.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/FileListPreprocessor.java b/src/main/java/org/scijava/ui/FileListPreprocessor.java index a8feefe5d..1f3227731 100644 --- a/src/main/java/org/scijava/ui/FileListPreprocessor.java +++ b/src/main/java/org/scijava/ui/FileListPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/FilePreprocessor.java b/src/main/java/org/scijava/ui/FilePreprocessor.java index 44eff1194..2076665ec 100644 --- a/src/main/java/org/scijava/ui/FilePreprocessor.java +++ b/src/main/java/org/scijava/ui/FilePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/StatusBar.java b/src/main/java/org/scijava/ui/StatusBar.java index cfef18eff..1d2c39232 100644 --- a/src/main/java/org/scijava/ui/StatusBar.java +++ b/src/main/java/org/scijava/ui/StatusBar.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/SystemClipboard.java b/src/main/java/org/scijava/ui/SystemClipboard.java index 421aa24c6..1a362d55e 100644 --- a/src/main/java/org/scijava/ui/SystemClipboard.java +++ b/src/main/java/org/scijava/ui/SystemClipboard.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ToolBar.java b/src/main/java/org/scijava/ui/ToolBar.java index c294cdb23..c7e4de97b 100644 --- a/src/main/java/org/scijava/ui/ToolBar.java +++ b/src/main/java/org/scijava/ui/ToolBar.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UIPreprocessor.java b/src/main/java/org/scijava/ui/UIPreprocessor.java index b22a20a6f..eb7780a4f 100644 --- a/src/main/java/org/scijava/ui/UIPreprocessor.java +++ b/src/main/java/org/scijava/ui/UIPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UIService.java b/src/main/java/org/scijava/ui/UIService.java index 53debcf43..0f3958698 100644 --- a/src/main/java/org/scijava/ui/UIService.java +++ b/src/main/java/org/scijava/ui/UIService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UserInterface.java b/src/main/java/org/scijava/ui/UserInterface.java index a0588256c..54dbfb767 100644 --- a/src/main/java/org/scijava/ui/UserInterface.java +++ b/src/main/java/org/scijava/ui/UserInterface.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/AbstractConsolePane.java b/src/main/java/org/scijava/ui/console/AbstractConsolePane.java index 0512d725d..b9de2570f 100644 --- a/src/main/java/org/scijava/ui/console/AbstractConsolePane.java +++ b/src/main/java/org/scijava/ui/console/AbstractConsolePane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/ConsolePane.java b/src/main/java/org/scijava/ui/console/ConsolePane.java index 02e2b5b24..3db7788d4 100644 --- a/src/main/java/org/scijava/ui/console/ConsolePane.java +++ b/src/main/java/org/scijava/ui/console/ConsolePane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/HeadlessArgument.java b/src/main/java/org/scijava/ui/console/HeadlessArgument.java index dca137c3b..601b3d3ed 100644 --- a/src/main/java/org/scijava/ui/console/HeadlessArgument.java +++ b/src/main/java/org/scijava/ui/console/HeadlessArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/ShowUIArgument.java b/src/main/java/org/scijava/ui/console/ShowUIArgument.java index 10fd2e6b7..3c4cd4a7a 100644 --- a/src/main/java/org/scijava/ui/console/ShowUIArgument.java +++ b/src/main/java/org/scijava/ui/console/ShowUIArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/UIArgument.java b/src/main/java/org/scijava/ui/console/UIArgument.java index 05bee6855..40ee7986f 100644 --- a/src/main/java/org/scijava/ui/console/UIArgument.java +++ b/src/main/java/org/scijava/ui/console/UIArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java index e098a2367..dfc445dca 100644 --- a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java index d578688ad..53b24aae6 100644 --- a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java index 9634c477a..fc7f00803 100644 --- a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java index 3bc3de22e..5a15efe09 100644 --- a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java +++ b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropData.java b/src/main/java/org/scijava/ui/dnd/DragAndDropData.java index a4cd7a258..8cc4e082f 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java index a81e25f6c..0377f1f03 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropService.java b/src/main/java/org/scijava/ui/dnd/DragAndDropService.java index 0d2b3ae38..2319a5c41 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropService.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java index e8f6090c2..336c94e20 100644 --- a/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java index d36a10797..42c2490c4 100644 --- a/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/MIMEType.java b/src/main/java/org/scijava/ui/dnd/MIMEType.java index 037e3916a..db21cac88 100644 --- a/src/main/java/org/scijava/ui/dnd/MIMEType.java +++ b/src/main/java/org/scijava/ui/dnd/MIMEType.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java index af9f53015..a5e0cb5b6 100644 --- a/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java index e460f58b7..aa8f3c624 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java index 3b85bb254..b221fdadc 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java index c51a4b3c4..268b9b0c9 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java index 4545f24e2..fd93d52eb 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DropEvent.java b/src/main/java/org/scijava/ui/dnd/event/DropEvent.java index 49331480c..a4a6ac4fe 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DropEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DropEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/event/UIEvent.java b/src/main/java/org/scijava/ui/event/UIEvent.java index d2b7fd7b8..92f876cd3 100644 --- a/src/main/java/org/scijava/ui/event/UIEvent.java +++ b/src/main/java/org/scijava/ui/event/UIEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/event/UIShownEvent.java b/src/main/java/org/scijava/ui/event/UIShownEvent.java index 23f55be2d..c5e1fb2e3 100644 --- a/src/main/java/org/scijava/ui/event/UIShownEvent.java +++ b/src/main/java/org/scijava/ui/event/UIShownEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java b/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java index df5e0cc93..2dfa036da 100644 --- a/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java +++ b/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headless/HeadlessUI.java b/src/main/java/org/scijava/ui/headless/HeadlessUI.java index 3f658df97..63cb32d5c 100644 --- a/src/main/java/org/scijava/ui/headless/HeadlessUI.java +++ b/src/main/java/org/scijava/ui/headless/HeadlessUI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java b/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java index 257753e9d..d3f48f2fc 100644 --- a/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java +++ b/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java index ab552f6d0..e705cbbb7 100644 --- a/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayPanel.java b/src/main/java/org/scijava/ui/viewer/DisplayPanel.java index 0ab9b1df1..c51213d04 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayPanel.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayViewer.java b/src/main/java/org/scijava/ui/viewer/DisplayViewer.java index d8ea0193a..de99dfc95 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayWindow.java b/src/main/java/org/scijava/ui/viewer/DisplayWindow.java index 55b3b842c..2a45a3427 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayWindow.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayWindow.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java index ac0c67d16..a737da1f5 100644 --- a/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java b/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java index 683fdbd26..9ca4ae5be 100644 --- a/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java +++ b/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java index 517bdb9cf..fe8343711 100644 --- a/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/AbstractPrimitiveArray.java b/src/main/java/org/scijava/util/AbstractPrimitiveArray.java index 28bfefc67..6c1a720b2 100644 --- a/src/main/java/org/scijava/util/AbstractPrimitiveArray.java +++ b/src/main/java/org/scijava/util/AbstractPrimitiveArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/AppUtils.java b/src/main/java/org/scijava/util/AppUtils.java index 48519a328..4dd310c6a 100644 --- a/src/main/java/org/scijava/util/AppUtils.java +++ b/src/main/java/org/scijava/util/AppUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ArrayUtils.java b/src/main/java/org/scijava/util/ArrayUtils.java index 6ce46c43e..db6efcdbf 100644 --- a/src/main/java/org/scijava/util/ArrayUtils.java +++ b/src/main/java/org/scijava/util/ArrayUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/BoolArray.java b/src/main/java/org/scijava/util/BoolArray.java index 3edf088a8..3ea2bee18 100644 --- a/src/main/java/org/scijava/util/BoolArray.java +++ b/src/main/java/org/scijava/util/BoolArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ByteArray.java b/src/main/java/org/scijava/util/ByteArray.java index 07e724fb1..f5eda9f65 100644 --- a/src/main/java/org/scijava/util/ByteArray.java +++ b/src/main/java/org/scijava/util/ByteArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Bytes.java b/src/main/java/org/scijava/util/Bytes.java index ac6637797..759383d73 100644 --- a/src/main/java/org/scijava/util/Bytes.java +++ b/src/main/java/org/scijava/util/Bytes.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CharArray.java b/src/main/java/org/scijava/util/CharArray.java index 1550ec875..cdfa1de15 100644 --- a/src/main/java/org/scijava/util/CharArray.java +++ b/src/main/java/org/scijava/util/CharArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CheckSezpoz.java b/src/main/java/org/scijava/util/CheckSezpoz.java index 7f5643b76..235db46fd 100644 --- a/src/main/java/org/scijava/util/CheckSezpoz.java +++ b/src/main/java/org/scijava/util/CheckSezpoz.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ClassUtils.java b/src/main/java/org/scijava/util/ClassUtils.java index 5543ce7bb..8569b4bd6 100644 --- a/src/main/java/org/scijava/util/ClassUtils.java +++ b/src/main/java/org/scijava/util/ClassUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ColorRGB.java b/src/main/java/org/scijava/util/ColorRGB.java index 4e10cd8c4..cfc211e04 100644 --- a/src/main/java/org/scijava/util/ColorRGB.java +++ b/src/main/java/org/scijava/util/ColorRGB.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ColorRGBA.java b/src/main/java/org/scijava/util/ColorRGBA.java index fb89ccb72..e78221623 100644 --- a/src/main/java/org/scijava/util/ColorRGBA.java +++ b/src/main/java/org/scijava/util/ColorRGBA.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Colors.java b/src/main/java/org/scijava/util/Colors.java index cc115dc75..2f616b838 100644 --- a/src/main/java/org/scijava/util/Colors.java +++ b/src/main/java/org/scijava/util/Colors.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CombineAnnotations.java b/src/main/java/org/scijava/util/CombineAnnotations.java index 993a03445..dddf6046d 100644 --- a/src/main/java/org/scijava/util/CombineAnnotations.java +++ b/src/main/java/org/scijava/util/CombineAnnotations.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Combiner.java b/src/main/java/org/scijava/util/Combiner.java index feb0b1774..7b107d0fb 100644 --- a/src/main/java/org/scijava/util/Combiner.java +++ b/src/main/java/org/scijava/util/Combiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ConversionUtils.java b/src/main/java/org/scijava/util/ConversionUtils.java index b3662eaa2..7a01ba31f 100644 --- a/src/main/java/org/scijava/util/ConversionUtils.java +++ b/src/main/java/org/scijava/util/ConversionUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DebugUtils.java b/src/main/java/org/scijava/util/DebugUtils.java index 06c26b168..78f84c6fa 100644 --- a/src/main/java/org/scijava/util/DebugUtils.java +++ b/src/main/java/org/scijava/util/DebugUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DefaultTreeNode.java b/src/main/java/org/scijava/util/DefaultTreeNode.java index 1d1231702..e16bf02e5 100644 --- a/src/main/java/org/scijava/util/DefaultTreeNode.java +++ b/src/main/java/org/scijava/util/DefaultTreeNode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DigestUtils.java b/src/main/java/org/scijava/util/DigestUtils.java index 54014b709..c63b035fb 100644 --- a/src/main/java/org/scijava/util/DigestUtils.java +++ b/src/main/java/org/scijava/util/DigestUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DoubleArray.java b/src/main/java/org/scijava/util/DoubleArray.java index bf76fdb7b..71aaaece8 100644 --- a/src/main/java/org/scijava/util/DoubleArray.java +++ b/src/main/java/org/scijava/util/DoubleArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/FileUtils.java b/src/main/java/org/scijava/util/FileUtils.java index e9424cef0..73099aacc 100644 --- a/src/main/java/org/scijava/util/FileUtils.java +++ b/src/main/java/org/scijava/util/FileUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/FloatArray.java b/src/main/java/org/scijava/util/FloatArray.java index 593d22131..3c3bd00ce 100644 --- a/src/main/java/org/scijava/util/FloatArray.java +++ b/src/main/java/org/scijava/util/FloatArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/GenericUtils.java b/src/main/java/org/scijava/util/GenericUtils.java index 978af3f54..d470580e3 100644 --- a/src/main/java/org/scijava/util/GenericUtils.java +++ b/src/main/java/org/scijava/util/GenericUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntArray.java b/src/main/java/org/scijava/util/IntArray.java index 66de4c87e..32f2f027d 100644 --- a/src/main/java/org/scijava/util/IntArray.java +++ b/src/main/java/org/scijava/util/IntArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntCoords.java b/src/main/java/org/scijava/util/IntCoords.java index bc689e341..23d3bc238 100644 --- a/src/main/java/org/scijava/util/IntCoords.java +++ b/src/main/java/org/scijava/util/IntCoords.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntRect.java b/src/main/java/org/scijava/util/IntRect.java index 9791697e3..4c224be75 100644 --- a/src/main/java/org/scijava/util/IntRect.java +++ b/src/main/java/org/scijava/util/IntRect.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IteratorPlus.java b/src/main/java/org/scijava/util/IteratorPlus.java index da8bae3db..da2c28dad 100644 --- a/src/main/java/org/scijava/util/IteratorPlus.java +++ b/src/main/java/org/scijava/util/IteratorPlus.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LastRecentlyUsed.java b/src/main/java/org/scijava/util/LastRecentlyUsed.java index 2e485bf22..0714ce49c 100644 --- a/src/main/java/org/scijava/util/LastRecentlyUsed.java +++ b/src/main/java/org/scijava/util/LastRecentlyUsed.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LineOutputStream.java b/src/main/java/org/scijava/util/LineOutputStream.java index c37318242..c3d95997d 100644 --- a/src/main/java/org/scijava/util/LineOutputStream.java +++ b/src/main/java/org/scijava/util/LineOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ListUtils.java b/src/main/java/org/scijava/util/ListUtils.java index f868a9af2..79c857461 100644 --- a/src/main/java/org/scijava/util/ListUtils.java +++ b/src/main/java/org/scijava/util/ListUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LongArray.java b/src/main/java/org/scijava/util/LongArray.java index f190a2049..ee9a4a453 100644 --- a/src/main/java/org/scijava/util/LongArray.java +++ b/src/main/java/org/scijava/util/LongArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Manifest.java b/src/main/java/org/scijava/util/Manifest.java index f57983e31..e5f7fab67 100644 --- a/src/main/java/org/scijava/util/Manifest.java +++ b/src/main/java/org/scijava/util/Manifest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MersenneTwisterFast.java b/src/main/java/org/scijava/util/MersenneTwisterFast.java index bf176347b..089299ee0 100644 --- a/src/main/java/org/scijava/util/MersenneTwisterFast.java +++ b/src/main/java/org/scijava/util/MersenneTwisterFast.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MetaInfCombiner.java b/src/main/java/org/scijava/util/MetaInfCombiner.java index 6380901ad..4cb22cb05 100644 --- a/src/main/java/org/scijava/util/MetaInfCombiner.java +++ b/src/main/java/org/scijava/util/MetaInfCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MirrorWebsite.java b/src/main/java/org/scijava/util/MirrorWebsite.java index fff9366d3..4bd72155a 100644 --- a/src/main/java/org/scijava/util/MirrorWebsite.java +++ b/src/main/java/org/scijava/util/MirrorWebsite.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MiscUtils.java b/src/main/java/org/scijava/util/MiscUtils.java index 3c0f5b0be..667e7560a 100644 --- a/src/main/java/org/scijava/util/MiscUtils.java +++ b/src/main/java/org/scijava/util/MiscUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/NumberUtils.java b/src/main/java/org/scijava/util/NumberUtils.java index 704e0bc8c..77137ecbe 100644 --- a/src/main/java/org/scijava/util/NumberUtils.java +++ b/src/main/java/org/scijava/util/NumberUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ObjectArray.java b/src/main/java/org/scijava/util/ObjectArray.java index 44e4dfce3..486313d8c 100644 --- a/src/main/java/org/scijava/util/ObjectArray.java +++ b/src/main/java/org/scijava/util/ObjectArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/POM.java b/src/main/java/org/scijava/util/POM.java index ea0feacbc..afd4771a0 100644 --- a/src/main/java/org/scijava/util/POM.java +++ b/src/main/java/org/scijava/util/POM.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/PlatformUtils.java b/src/main/java/org/scijava/util/PlatformUtils.java index 21ffc6475..8e67ec1a3 100644 --- a/src/main/java/org/scijava/util/PlatformUtils.java +++ b/src/main/java/org/scijava/util/PlatformUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Prefs.java b/src/main/java/org/scijava/util/Prefs.java index 8519017c4..4044f6762 100644 --- a/src/main/java/org/scijava/util/Prefs.java +++ b/src/main/java/org/scijava/util/Prefs.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/PrimitiveArray.java b/src/main/java/org/scijava/util/PrimitiveArray.java index addc4d016..35a6c7498 100644 --- a/src/main/java/org/scijava/util/PrimitiveArray.java +++ b/src/main/java/org/scijava/util/PrimitiveArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ProcessUtils.java b/src/main/java/org/scijava/util/ProcessUtils.java index cf8914033..9f97a24d0 100644 --- a/src/main/java/org/scijava/util/ProcessUtils.java +++ b/src/main/java/org/scijava/util/ProcessUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Query.java b/src/main/java/org/scijava/util/Query.java index c8b6d525b..39914f518 100644 --- a/src/main/java/org/scijava/util/Query.java +++ b/src/main/java/org/scijava/util/Query.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReadInto.java b/src/main/java/org/scijava/util/ReadInto.java index 37daf4857..3aafebae3 100644 --- a/src/main/java/org/scijava/util/ReadInto.java +++ b/src/main/java/org/scijava/util/ReadInto.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/RealCoords.java b/src/main/java/org/scijava/util/RealCoords.java index dbb39a44e..7b49819fe 100644 --- a/src/main/java/org/scijava/util/RealCoords.java +++ b/src/main/java/org/scijava/util/RealCoords.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/RealRect.java b/src/main/java/org/scijava/util/RealRect.java index 7f6867df6..b149ba1d5 100644 --- a/src/main/java/org/scijava/util/RealRect.java +++ b/src/main/java/org/scijava/util/RealRect.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReflectException.java b/src/main/java/org/scijava/util/ReflectException.java index 701e8362e..aa3e18849 100644 --- a/src/main/java/org/scijava/util/ReflectException.java +++ b/src/main/java/org/scijava/util/ReflectException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReflectedUniverse.java b/src/main/java/org/scijava/util/ReflectedUniverse.java index 4c9fd953f..54ce3cd65 100644 --- a/src/main/java/org/scijava/util/ReflectedUniverse.java +++ b/src/main/java/org/scijava/util/ReflectedUniverse.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ServiceCombiner.java b/src/main/java/org/scijava/util/ServiceCombiner.java index a24cf6abb..2a069ef5c 100644 --- a/src/main/java/org/scijava/util/ServiceCombiner.java +++ b/src/main/java/org/scijava/util/ServiceCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ShortArray.java b/src/main/java/org/scijava/util/ShortArray.java index 8a3985006..1f903b532 100644 --- a/src/main/java/org/scijava/util/ShortArray.java +++ b/src/main/java/org/scijava/util/ShortArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Sizable.java b/src/main/java/org/scijava/util/Sizable.java index c1172b1dc..9c9d34a7a 100644 --- a/src/main/java/org/scijava/util/Sizable.java +++ b/src/main/java/org/scijava/util/Sizable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/SizableArrayList.java b/src/main/java/org/scijava/util/SizableArrayList.java index b132a87f7..89fa00b66 100644 --- a/src/main/java/org/scijava/util/SizableArrayList.java +++ b/src/main/java/org/scijava/util/SizableArrayList.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/StringMaker.java b/src/main/java/org/scijava/util/StringMaker.java index ac4db3873..3b2d1839c 100644 --- a/src/main/java/org/scijava/util/StringMaker.java +++ b/src/main/java/org/scijava/util/StringMaker.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/StringUtils.java b/src/main/java/org/scijava/util/StringUtils.java index 0fdba3900..5d72f80bd 100644 --- a/src/main/java/org/scijava/util/StringUtils.java +++ b/src/main/java/org/scijava/util/StringUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Timing.java b/src/main/java/org/scijava/util/Timing.java index 1bf79ddd4..aec5a6d1e 100644 --- a/src/main/java/org/scijava/util/Timing.java +++ b/src/main/java/org/scijava/util/Timing.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/TreeNode.java b/src/main/java/org/scijava/util/TreeNode.java index 833832642..a827556f9 100644 --- a/src/main/java/org/scijava/util/TreeNode.java +++ b/src/main/java/org/scijava/util/TreeNode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/TunePlayer.java b/src/main/java/org/scijava/util/TunePlayer.java index f12969725..d14fd40b4 100644 --- a/src/main/java/org/scijava/util/TunePlayer.java +++ b/src/main/java/org/scijava/util/TunePlayer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Types.java b/src/main/java/org/scijava/util/Types.java index 8a4369a05..d112b2114 100644 --- a/src/main/java/org/scijava/util/Types.java +++ b/src/main/java/org/scijava/util/Types.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/UnitUtils.java b/src/main/java/org/scijava/util/UnitUtils.java index 6f1848da9..d93471c25 100644 --- a/src/main/java/org/scijava/util/UnitUtils.java +++ b/src/main/java/org/scijava/util/UnitUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/VersionUtils.java b/src/main/java/org/scijava/util/VersionUtils.java index 2bbb2e25d..b5306c1de 100644 --- a/src/main/java/org/scijava/util/VersionUtils.java +++ b/src/main/java/org/scijava/util/VersionUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/XML.java b/src/main/java/org/scijava/util/XML.java index aac4a396b..732b0ee0c 100644 --- a/src/main/java/org/scijava/util/XML.java +++ b/src/main/java/org/scijava/util/XML.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/DefaultWelcomeService.java b/src/main/java/org/scijava/welcome/DefaultWelcomeService.java index bc7bdd726..817fc44f1 100644 --- a/src/main/java/org/scijava/welcome/DefaultWelcomeService.java +++ b/src/main/java/org/scijava/welcome/DefaultWelcomeService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/WelcomeService.java b/src/main/java/org/scijava/welcome/WelcomeService.java index 68da22375..a2819123f 100644 --- a/src/main/java/org/scijava/welcome/WelcomeService.java +++ b/src/main/java/org/scijava/welcome/WelcomeService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/event/WelcomeEvent.java b/src/main/java/org/scijava/welcome/event/WelcomeEvent.java index 90b70c8d6..f6f046b81 100644 --- a/src/main/java/org/scijava/welcome/event/WelcomeEvent.java +++ b/src/main/java/org/scijava/welcome/event/WelcomeEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputHarvester.java b/src/main/java/org/scijava/widget/AbstractInputHarvester.java index 73fdf7b53..2c259c400 100644 --- a/src/main/java/org/scijava/widget/AbstractInputHarvester.java +++ b/src/main/java/org/scijava/widget/AbstractInputHarvester.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputPanel.java b/src/main/java/org/scijava/widget/AbstractInputPanel.java index 0efb95586..e2accd1af 100644 --- a/src/main/java/org/scijava/widget/AbstractInputPanel.java +++ b/src/main/java/org/scijava/widget/AbstractInputPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputWidget.java b/src/main/java/org/scijava/widget/AbstractInputWidget.java index 9c6aede1e..420fb43ae 100644 --- a/src/main/java/org/scijava/widget/AbstractInputWidget.java +++ b/src/main/java/org/scijava/widget/AbstractInputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/Button.java b/src/main/java/org/scijava/widget/Button.java index e9e73f59a..174c30d2c 100644 --- a/src/main/java/org/scijava/widget/Button.java +++ b/src/main/java/org/scijava/widget/Button.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ButtonWidget.java b/src/main/java/org/scijava/widget/ButtonWidget.java index 9c278c243..8b43645a4 100644 --- a/src/main/java/org/scijava/widget/ButtonWidget.java +++ b/src/main/java/org/scijava/widget/ButtonWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ChoiceWidget.java b/src/main/java/org/scijava/widget/ChoiceWidget.java index 6ca640cb9..202a6e346 100644 --- a/src/main/java/org/scijava/widget/ChoiceWidget.java +++ b/src/main/java/org/scijava/widget/ChoiceWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ColorWidget.java b/src/main/java/org/scijava/widget/ColorWidget.java index 17de750c9..fdbe7a7f5 100644 --- a/src/main/java/org/scijava/widget/ColorWidget.java +++ b/src/main/java/org/scijava/widget/ColorWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DateWidget.java b/src/main/java/org/scijava/widget/DateWidget.java index 8a7db46cf..5a849f966 100644 --- a/src/main/java/org/scijava/widget/DateWidget.java +++ b/src/main/java/org/scijava/widget/DateWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DefaultWidgetModel.java b/src/main/java/org/scijava/widget/DefaultWidgetModel.java index e8e7c7631..b1ed1cd47 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetModel.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetModel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DefaultWidgetService.java b/src/main/java/org/scijava/widget/DefaultWidgetService.java index 19111288c..380746ad7 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetService.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/FileListWidget.java b/src/main/java/org/scijava/widget/FileListWidget.java index f99c66ee2..87401b27f 100644 --- a/src/main/java/org/scijava/widget/FileListWidget.java +++ b/src/main/java/org/scijava/widget/FileListWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/FileWidget.java b/src/main/java/org/scijava/widget/FileWidget.java index da4632c79..a4322554d 100644 --- a/src/main/java/org/scijava/widget/FileWidget.java +++ b/src/main/java/org/scijava/widget/FileWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputHarvester.java b/src/main/java/org/scijava/widget/InputHarvester.java index 25ce4c5e8..30735f457 100644 --- a/src/main/java/org/scijava/widget/InputHarvester.java +++ b/src/main/java/org/scijava/widget/InputHarvester.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputPanel.java b/src/main/java/org/scijava/widget/InputPanel.java index 664ade0ab..6e1396e0f 100644 --- a/src/main/java/org/scijava/widget/InputPanel.java +++ b/src/main/java/org/scijava/widget/InputPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputWidget.java b/src/main/java/org/scijava/widget/InputWidget.java index bdcb27c2d..6499314bc 100644 --- a/src/main/java/org/scijava/widget/InputWidget.java +++ b/src/main/java/org/scijava/widget/InputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/MessageWidget.java b/src/main/java/org/scijava/widget/MessageWidget.java index 117b08aeb..f096f4116 100644 --- a/src/main/java/org/scijava/widget/MessageWidget.java +++ b/src/main/java/org/scijava/widget/MessageWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/NumberWidget.java b/src/main/java/org/scijava/widget/NumberWidget.java index b6b81e6c9..67d4c1030 100644 --- a/src/main/java/org/scijava/widget/NumberWidget.java +++ b/src/main/java/org/scijava/widget/NumberWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ObjectWidget.java b/src/main/java/org/scijava/widget/ObjectWidget.java index 839b5272b..5c8b2ed81 100644 --- a/src/main/java/org/scijava/widget/ObjectWidget.java +++ b/src/main/java/org/scijava/widget/ObjectWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/TextWidget.java b/src/main/java/org/scijava/widget/TextWidget.java index 34dd871bf..4f555d8c1 100644 --- a/src/main/java/org/scijava/widget/TextWidget.java +++ b/src/main/java/org/scijava/widget/TextWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ToggleWidget.java b/src/main/java/org/scijava/widget/ToggleWidget.java index 829dd0c94..336e75cd1 100644 --- a/src/main/java/org/scijava/widget/ToggleWidget.java +++ b/src/main/java/org/scijava/widget/ToggleWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/UIComponent.java b/src/main/java/org/scijava/widget/UIComponent.java index 943daa7ee..20dd35301 100644 --- a/src/main/java/org/scijava/widget/UIComponent.java +++ b/src/main/java/org/scijava/widget/UIComponent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetModel.java b/src/main/java/org/scijava/widget/WidgetModel.java index 97ccad278..9f0f1b634 100644 --- a/src/main/java/org/scijava/widget/WidgetModel.java +++ b/src/main/java/org/scijava/widget/WidgetModel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetService.java b/src/main/java/org/scijava/widget/WidgetService.java index 8f02d6603..047657acb 100644 --- a/src/main/java/org/scijava/widget/WidgetService.java +++ b/src/main/java/org/scijava/widget/WidgetService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetStyle.java b/src/main/java/org/scijava/widget/WidgetStyle.java index 9dedf5aaf..d9c186b0c 100644 --- a/src/main/java/org/scijava/widget/WidgetStyle.java +++ b/src/main/java/org/scijava/widget/WidgetStyle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextCreationTest.java b/src/test/java/org/scijava/ContextCreationTest.java index db4e76ea7..614e4a019 100644 --- a/src/test/java/org/scijava/ContextCreationTest.java +++ b/src/test/java/org/scijava/ContextCreationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextDisposalTest.java b/src/test/java/org/scijava/ContextDisposalTest.java index e47fcbc7b..e3834d3a2 100644 --- a/src/test/java/org/scijava/ContextDisposalTest.java +++ b/src/test/java/org/scijava/ContextDisposalTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextInjectionTest.java b/src/test/java/org/scijava/ContextInjectionTest.java index bff5bf657..b5f948041 100644 --- a/src/test/java/org/scijava/ContextInjectionTest.java +++ b/src/test/java/org/scijava/ContextInjectionTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/SciJavaTest.java b/src/test/java/org/scijava/SciJavaTest.java index c8a0fd499..1279f8861 100644 --- a/src/test/java/org/scijava/SciJavaTest.java +++ b/src/test/java/org/scijava/SciJavaTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedA.java b/src/test/java/org/scijava/annotations/AnnotatedA.java index 9e1ca7982..799eea92f 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedA.java +++ b/src/test/java/org/scijava/annotations/AnnotatedA.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedB.java b/src/test/java/org/scijava/annotations/AnnotatedB.java index 41047039a..a14106e1d 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedB.java +++ b/src/test/java/org/scijava/annotations/AnnotatedB.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedC.java b/src/test/java/org/scijava/annotations/AnnotatedC.java index b2221e5bd..589a49e5f 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedC.java +++ b/src/test/java/org/scijava/annotations/AnnotatedC.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedD.java b/src/test/java/org/scijava/annotations/AnnotatedD.java index 4c534202a..f6e23eac6 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedD.java +++ b/src/test/java/org/scijava/annotations/AnnotatedD.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java b/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java index c431acec2..6f46d5864 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java +++ b/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Complex.java b/src/test/java/org/scijava/annotations/Complex.java index c5f1b24bb..b0c7d879e 100644 --- a/src/test/java/org/scijava/annotations/Complex.java +++ b/src/test/java/org/scijava/annotations/Complex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java b/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java index 6ba1f5cde..81a96747d 100644 --- a/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java +++ b/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/EclipseHelperTest.java b/src/test/java/org/scijava/annotations/EclipseHelperTest.java index 9a809785b..24daca561 100644 --- a/src/test/java/org/scijava/annotations/EclipseHelperTest.java +++ b/src/test/java/org/scijava/annotations/EclipseHelperTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Fruit.java b/src/test/java/org/scijava/annotations/Fruit.java index 547d39793..cf484cb20 100644 --- a/src/test/java/org/scijava/annotations/Fruit.java +++ b/src/test/java/org/scijava/annotations/Fruit.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/LegacyTest.java b/src/test/java/org/scijava/annotations/LegacyTest.java index 47336653e..a9aaf12a8 100644 --- a/src/test/java/org/scijava/annotations/LegacyTest.java +++ b/src/test/java/org/scijava/annotations/LegacyTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Simple.java b/src/test/java/org/scijava/annotations/Simple.java index 9641955f1..193803c00 100644 --- a/src/test/java/org/scijava/annotations/Simple.java +++ b/src/test/java/org/scijava/annotations/Simple.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/app/StatusServiceTest.java b/src/test/java/org/scijava/app/StatusServiceTest.java index b1d4feb43..1e2eed9d3 100644 --- a/src/test/java/org/scijava/app/StatusServiceTest.java +++ b/src/test/java/org/scijava/app/StatusServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandArrayConverterTest.java b/src/test/java/org/scijava/command/CommandArrayConverterTest.java index 406f5f604..b2a34200e 100644 --- a/src/test/java/org/scijava/command/CommandArrayConverterTest.java +++ b/src/test/java/org/scijava/command/CommandArrayConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandInfoTest.java b/src/test/java/org/scijava/command/CommandInfoTest.java index 8de905e99..492945766 100644 --- a/src/test/java/org/scijava/command/CommandInfoTest.java +++ b/src/test/java/org/scijava/command/CommandInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandModuleTest.java b/src/test/java/org/scijava/command/CommandModuleTest.java index bbdb25270..cfa70fe45 100644 --- a/src/test/java/org/scijava/command/CommandModuleTest.java +++ b/src/test/java/org/scijava/command/CommandModuleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandServiceTest.java b/src/test/java/org/scijava/command/CommandServiceTest.java index e13622351..fb1fda971 100644 --- a/src/test/java/org/scijava/command/CommandServiceTest.java +++ b/src/test/java/org/scijava/command/CommandServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/InputsTest.java b/src/test/java/org/scijava/command/InputsTest.java index 2c6556644..db55f9c3e 100644 --- a/src/test/java/org/scijava/command/InputsTest.java +++ b/src/test/java/org/scijava/command/InputsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/InvalidCommandTest.java b/src/test/java/org/scijava/command/InvalidCommandTest.java index b0d311083..2687d056a 100644 --- a/src/test/java/org/scijava/command/InvalidCommandTest.java +++ b/src/test/java/org/scijava/command/InvalidCommandTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java b/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java index 557de6a28..6e488c1f7 100644 --- a/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java +++ b/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/console/ConsoleServiceTest.java b/src/test/java/org/scijava/console/ConsoleServiceTest.java index 64692143f..cb4728630 100644 --- a/src/test/java/org/scijava/console/ConsoleServiceTest.java +++ b/src/test/java/org/scijava/console/ConsoleServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java b/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java index c7c0a9185..b073e504c 100644 --- a/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java +++ b/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java b/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java index 7922b3cb6..7b899bd4f 100644 --- a/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java +++ b/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java index 17ec928f5..a1a1bb10a 100644 --- a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java +++ b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java index ee40655af..0535224eb 100644 --- a/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java index 504165eca..d63cb3743 100644 --- a/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java index 5fe0aeda9..e179deff1 100644 --- a/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java b/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java index 1e577f141..472e42702 100644 --- a/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java b/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java index 3f0c755de..7674190ca 100644 --- a/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java b/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java index 890953eed..1d1747098 100644 --- a/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToLongConverterTest.java b/src/test/java/org/scijava/convert/ByteToLongConverterTest.java index 0feab666a..53f552f1c 100644 --- a/src/test/java/org/scijava/convert/ByteToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToShortConverterTest.java b/src/test/java/org/scijava/convert/ByteToShortConverterTest.java index cec43a6e4..b2fd5281b 100644 --- a/src/test/java/org/scijava/convert/ByteToShortConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToShortConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ConvertServiceTest.java b/src/test/java/org/scijava/convert/ConvertServiceTest.java index e870723e8..96dbe1bdf 100644 --- a/src/test/java/org/scijava/convert/ConvertServiceTest.java +++ b/src/test/java/org/scijava/convert/ConvertServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ConverterTest.java b/src/test/java/org/scijava/convert/ConverterTest.java index 27ae140b3..ddb0f6c9f 100644 --- a/src/test/java/org/scijava/convert/ConverterTest.java +++ b/src/test/java/org/scijava/convert/ConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DefaultConverterTest.java b/src/test/java/org/scijava/convert/DefaultConverterTest.java index 06394fafe..b1c810d83 100644 --- a/src/test/java/org/scijava/convert/DefaultConverterTest.java +++ b/src/test/java/org/scijava/convert/DefaultConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DelegateConverterTest.java b/src/test/java/org/scijava/convert/DelegateConverterTest.java index 00bd9baae..b506e9e2d 100644 --- a/src/test/java/org/scijava/convert/DelegateConverterTest.java +++ b/src/test/java/org/scijava/convert/DelegateConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java index 57c4e8cba..aa85644ab 100644 --- a/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FileListConverterTest.java b/src/test/java/org/scijava/convert/FileListConverterTest.java index cd6b011e6..0276fe63a 100644 --- a/src/test/java/org/scijava/convert/FileListConverterTest.java +++ b/src/test/java/org/scijava/convert/FileListConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FileToPathConversionTest.java b/src/test/java/org/scijava/convert/FileToPathConversionTest.java index 3b6f554c1..ef8829e07 100644 --- a/src/test/java/org/scijava/convert/FileToPathConversionTest.java +++ b/src/test/java/org/scijava/convert/FileToPathConversionTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java index db194c80b..546a649c0 100644 --- a/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java b/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java index cbb142ed8..5aaf070cc 100644 --- a/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java index 4d59c5a23..48d54b3d6 100644 --- a/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java index e75975687..e1430131c 100644 --- a/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java b/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java index 79f4e4b5f..3581c5c48 100644 --- a/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java b/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java index bf8057129..5aa0f3b9c 100644 --- a/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java index 3c3989bb8..56e6da876 100644 --- a/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java index 3483ab5a3..57527734a 100644 --- a/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java index cfc350b18..fd65d1a31 100644 --- a/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java index ef713a05c..7ff413922 100644 --- a/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java b/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java index aadd59fbb..0a71d5092 100644 --- a/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java b/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java index 0cbeb21fd..cc93bd4c3 100644 --- a/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java b/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java index d74f7d81f..11c514c59 100644 --- a/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToLongConverterTest.java b/src/test/java/org/scijava/convert/ShortToLongConverterTest.java index 8f8d6543e..f396697fd 100644 --- a/src/test/java/org/scijava/convert/ShortToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java index d9d912451..35b45f19b 100644 --- a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java index 879e9ffc8..779850213 100644 --- a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/display/DisplayTest.java b/src/test/java/org/scijava/display/DisplayTest.java index c8502c237..07cf2967f 100644 --- a/src/test/java/org/scijava/display/DisplayTest.java +++ b/src/test/java/org/scijava/display/DisplayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/download/DownloadServiceTest.java b/src/test/java/org/scijava/download/DownloadServiceTest.java index 722a3325c..390f06f68 100644 --- a/src/test/java/org/scijava/download/DownloadServiceTest.java +++ b/src/test/java/org/scijava/download/DownloadServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/event/EventServiceTest.java b/src/test/java/org/scijava/event/EventServiceTest.java index 7d80cd56d..2d0215f41 100644 --- a/src/test/java/org/scijava/event/EventServiceTest.java +++ b/src/test/java/org/scijava/event/EventServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/ByteArrayByteBankTest.java b/src/test/java/org/scijava/io/ByteArrayByteBankTest.java index a8c43184c..1f184071a 100644 --- a/src/test/java/org/scijava/io/ByteArrayByteBankTest.java +++ b/src/test/java/org/scijava/io/ByteArrayByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/ByteBankTest.java b/src/test/java/org/scijava/io/ByteBankTest.java index 7861b3920..fdc00f86c 100644 --- a/src/test/java/org/scijava/io/ByteBankTest.java +++ b/src/test/java/org/scijava/io/ByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/IOServiceTest.java b/src/test/java/org/scijava/io/IOServiceTest.java index a109c85e8..ecfed72ad 100644 --- a/src/test/java/org/scijava/io/IOServiceTest.java +++ b/src/test/java/org/scijava/io/IOServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/TypedIOServiceTest.java b/src/test/java/org/scijava/io/TypedIOServiceTest.java index b17bca169..734924839 100644 --- a/src/test/java/org/scijava/io/TypedIOServiceTest.java +++ b/src/test/java/org/scijava/io/TypedIOServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/event/DataEventTest.java b/src/test/java/org/scijava/io/event/DataEventTest.java index 6ceb42e2e..5a56f2fcd 100644 --- a/src/test/java/org/scijava/io/event/DataEventTest.java +++ b/src/test/java/org/scijava/io/event/DataEventTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/BytesHandleTest.java b/src/test/java/org/scijava/io/handle/BytesHandleTest.java index 865cd327f..4b2d05db0 100644 --- a/src/test/java/org/scijava/io/handle/BytesHandleTest.java +++ b/src/test/java/org/scijava/io/handle/BytesHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java b/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java index 7115af445..deba27821 100644 --- a/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java +++ b/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandleTest.java b/src/test/java/org/scijava/io/handle/DataHandleTest.java index 15730d404..b12a7592b 100644 --- a/src/test/java/org/scijava/io/handle/DataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/DataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandlesTest.java b/src/test/java/org/scijava/io/handle/DataHandlesTest.java index 9a91d56c0..09ff0e012 100644 --- a/src/test/java/org/scijava/io/handle/DataHandlesTest.java +++ b/src/test/java/org/scijava/io/handle/DataHandlesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/FileHandleTest.java b/src/test/java/org/scijava/io/handle/FileHandleTest.java index d690ed710..551769c30 100644 --- a/src/test/java/org/scijava/io/handle/FileHandleTest.java +++ b/src/test/java/org/scijava/io/handle/FileHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java index f7cb24182..20a637f3e 100644 --- a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java +++ b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java index 61c7c9b41..8196c9128 100644 --- a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java b/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java index fd813e326..813a5ab46 100644 --- a/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/BytesLocationTest.java b/src/test/java/org/scijava/io/location/BytesLocationTest.java index e2900a9c6..1217c23ff 100644 --- a/src/test/java/org/scijava/io/location/BytesLocationTest.java +++ b/src/test/java/org/scijava/io/location/BytesLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/FileLocationResolverTest.java b/src/test/java/org/scijava/io/location/FileLocationResolverTest.java index 62def039e..62ec48db0 100644 --- a/src/test/java/org/scijava/io/location/FileLocationResolverTest.java +++ b/src/test/java/org/scijava/io/location/FileLocationResolverTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/FileLocationTest.java b/src/test/java/org/scijava/io/location/FileLocationTest.java index cf98dcfa1..3ce55ea53 100644 --- a/src/test/java/org/scijava/io/location/FileLocationTest.java +++ b/src/test/java/org/scijava/io/location/FileLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/LocationServiceTest.java b/src/test/java/org/scijava/io/location/LocationServiceTest.java index ade1122ba..cede48501 100644 --- a/src/test/java/org/scijava/io/location/LocationServiceTest.java +++ b/src/test/java/org/scijava/io/location/LocationServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/URILocationTest.java b/src/test/java/org/scijava/io/location/URILocationTest.java index 6e23d6fd9..9df45d181 100644 --- a/src/test/java/org/scijava/io/location/URILocationTest.java +++ b/src/test/java/org/scijava/io/location/URILocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/URLLocationTest.java b/src/test/java/org/scijava/io/location/URLLocationTest.java index 3f15988c0..0075c79dd 100644 --- a/src/test/java/org/scijava/io/location/URLLocationTest.java +++ b/src/test/java/org/scijava/io/location/URLLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java b/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java index 13c3c0a6b..8685dc322 100644 --- a/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java +++ b/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/CallingClassUtilsTest.java b/src/test/java/org/scijava/log/CallingClassUtilsTest.java index e8b2d8ed5..a88c970a1 100644 --- a/src/test/java/org/scijava/log/CallingClassUtilsTest.java +++ b/src/test/java/org/scijava/log/CallingClassUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/DefaultLoggerTest.java b/src/test/java/org/scijava/log/DefaultLoggerTest.java index c8143017e..14cc55b77 100644 --- a/src/test/java/org/scijava/log/DefaultLoggerTest.java +++ b/src/test/java/org/scijava/log/DefaultLoggerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogMessageTest.java b/src/test/java/org/scijava/log/LogMessageTest.java index 20cbe8d76..f08f6ec18 100644 --- a/src/test/java/org/scijava/log/LogMessageTest.java +++ b/src/test/java/org/scijava/log/LogMessageTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogServiceTest.java b/src/test/java/org/scijava/log/LogServiceTest.java index 9ab4f15bd..2d3d3b46f 100644 --- a/src/test/java/org/scijava/log/LogServiceTest.java +++ b/src/test/java/org/scijava/log/LogServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogSourceTest.java b/src/test/java/org/scijava/log/LogSourceTest.java index 65d5813f4..c5dda19d7 100644 --- a/src/test/java/org/scijava/log/LogSourceTest.java +++ b/src/test/java/org/scijava/log/LogSourceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/StderrLogServiceTest.java b/src/test/java/org/scijava/log/StderrLogServiceTest.java index b28503b32..95429dd25 100644 --- a/src/test/java/org/scijava/log/StderrLogServiceTest.java +++ b/src/test/java/org/scijava/log/StderrLogServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/TestLogListener.java b/src/test/java/org/scijava/log/TestLogListener.java index ef92de0d5..e7f2bce82 100644 --- a/src/test/java/org/scijava/log/TestLogListener.java +++ b/src/test/java/org/scijava/log/TestLogListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/main/MainServiceTest.java b/src/test/java/org/scijava/main/MainServiceTest.java index 8152f13c6..b5d09ac31 100644 --- a/src/test/java/org/scijava/main/MainServiceTest.java +++ b/src/test/java/org/scijava/main/MainServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java b/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java index 03872538f..ea049cf18 100644 --- a/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java +++ b/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/menu/MenuServiceTest.java b/src/test/java/org/scijava/menu/MenuServiceTest.java index 604db06c3..aad47bb73 100644 --- a/src/test/java/org/scijava/menu/MenuServiceTest.java +++ b/src/test/java/org/scijava/menu/MenuServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/menu/ShadowMenuTest.java b/src/test/java/org/scijava/menu/ShadowMenuTest.java index 3c8ff6874..2c9660b2d 100644 --- a/src/test/java/org/scijava/menu/ShadowMenuTest.java +++ b/src/test/java/org/scijava/menu/ShadowMenuTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/ModuleServiceTest.java b/src/test/java/org/scijava/module/ModuleServiceTest.java index b9e6ab4f5..e8844f086 100644 --- a/src/test/java/org/scijava/module/ModuleServiceTest.java +++ b/src/test/java/org/scijava/module/ModuleServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java index fa5eabe19..4524254df 100644 --- a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java +++ b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java b/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java index 40461b497..16e5e7e6d 100644 --- a/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java +++ b/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java b/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java index b5db1288c..9a2dcc0c4 100644 --- a/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java +++ b/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/NamedObjectIndexTest.java b/src/test/java/org/scijava/object/NamedObjectIndexTest.java index 0e8e510f8..4a76b6962 100644 --- a/src/test/java/org/scijava/object/NamedObjectIndexTest.java +++ b/src/test/java/org/scijava/object/NamedObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/ObjectIndexTest.java b/src/test/java/org/scijava/object/ObjectIndexTest.java index 2a0870776..62c2e4071 100644 --- a/src/test/java/org/scijava/object/ObjectIndexTest.java +++ b/src/test/java/org/scijava/object/ObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/ObjectServiceTest.java b/src/test/java/org/scijava/object/ObjectServiceTest.java index 7e179c0bf..bdb18ce5d 100644 --- a/src/test/java/org/scijava/object/ObjectServiceTest.java +++ b/src/test/java/org/scijava/object/ObjectServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/SortedObjectIndexTest.java b/src/test/java/org/scijava/object/SortedObjectIndexTest.java index 86c38ecfd..ad5e0e14c 100644 --- a/src/test/java/org/scijava/object/SortedObjectIndexTest.java +++ b/src/test/java/org/scijava/object/SortedObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/options/OptionsTest.java b/src/test/java/org/scijava/options/OptionsTest.java index e49c70abb..78b4e182a 100644 --- a/src/test/java/org/scijava/options/OptionsTest.java +++ b/src/test/java/org/scijava/options/OptionsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/parse/ParseServiceTest.java b/src/test/java/org/scijava/parse/ParseServiceTest.java index f09d33308..5a7cdb164 100644 --- a/src/test/java/org/scijava/parse/ParseServiceTest.java +++ b/src/test/java/org/scijava/parse/ParseServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginFinderTest.java b/src/test/java/org/scijava/plugin/PluginFinderTest.java index 32514f731..a5562f3bb 100644 --- a/src/test/java/org/scijava/plugin/PluginFinderTest.java +++ b/src/test/java/org/scijava/plugin/PluginFinderTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginIndexTest.java b/src/test/java/org/scijava/plugin/PluginIndexTest.java index 6452fffba..7453aba96 100644 --- a/src/test/java/org/scijava/plugin/PluginIndexTest.java +++ b/src/test/java/org/scijava/plugin/PluginIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginInfoTest.java b/src/test/java/org/scijava/plugin/PluginInfoTest.java index 49c7fa8bf..eb8507f43 100644 --- a/src/test/java/org/scijava/plugin/PluginInfoTest.java +++ b/src/test/java/org/scijava/plugin/PluginInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/SingletonServiceTest.java b/src/test/java/org/scijava/plugin/SingletonServiceTest.java index ca6e5a331..18242910f 100644 --- a/src/test/java/org/scijava/plugin/SingletonServiceTest.java +++ b/src/test/java/org/scijava/plugin/SingletonServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/prefs/PrefServiceTest.java b/src/test/java/org/scijava/prefs/PrefServiceTest.java index ff5de6fde..63249b4e5 100644 --- a/src/test/java/org/scijava/prefs/PrefServiceTest.java +++ b/src/test/java/org/scijava/prefs/PrefServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/run/RunServiceTest.java b/src/test/java/org/scijava/run/RunServiceTest.java index f7e908154..ae3506c8c 100644 --- a/src/test/java/org/scijava/run/RunServiceTest.java +++ b/src/test/java/org/scijava/run/RunServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java b/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java index 9b8415054..192232351 100644 --- a/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java +++ b/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptEngineTest.java b/src/test/java/org/scijava/script/ScriptEngineTest.java index b10c6d3e8..3df84bf5a 100644 --- a/src/test/java/org/scijava/script/ScriptEngineTest.java +++ b/src/test/java/org/scijava/script/ScriptEngineTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptFinderTest.java b/src/test/java/org/scijava/script/ScriptFinderTest.java index e28869372..dce377a2d 100644 --- a/src/test/java/org/scijava/script/ScriptFinderTest.java +++ b/src/test/java/org/scijava/script/ScriptFinderTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptInfoTest.java b/src/test/java/org/scijava/script/ScriptInfoTest.java index 06231bb0e..47951dd75 100644 --- a/src/test/java/org/scijava/script/ScriptInfoTest.java +++ b/src/test/java/org/scijava/script/ScriptInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptServiceTest.java b/src/test/java/org/scijava/script/ScriptServiceTest.java index b548ea74a..1cf9ae9ff 100644 --- a/src/test/java/org/scijava/script/ScriptServiceTest.java +++ b/src/test/java/org/scijava/script/ScriptServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java b/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java index dbc1e0674..578cfe617 100644 --- a/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java +++ b/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/service/ServiceIndexTest.java b/src/test/java/org/scijava/service/ServiceIndexTest.java index 44dc0c11e..2629c8195 100644 --- a/src/test/java/org/scijava/service/ServiceIndexTest.java +++ b/src/test/java/org/scijava/service/ServiceIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/task/TaskEventTest.java b/src/test/java/org/scijava/task/TaskEventTest.java index 6e83d81be..eb939fbf0 100644 --- a/src/test/java/org/scijava/task/TaskEventTest.java +++ b/src/test/java/org/scijava/task/TaskEventTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/task/TaskServiceTest.java b/src/test/java/org/scijava/task/TaskServiceTest.java index 5f64642c0..a8c99505f 100644 --- a/src/test/java/org/scijava/task/TaskServiceTest.java +++ b/src/test/java/org/scijava/task/TaskServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/test/AbstractSciJavaTest.java b/src/test/java/org/scijava/test/AbstractSciJavaTest.java index b11a6e1d6..5f8dab9a0 100644 --- a/src/test/java/org/scijava/test/AbstractSciJavaTest.java +++ b/src/test/java/org/scijava/test/AbstractSciJavaTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/test/TestUtilsTest.java b/src/test/java/org/scijava/test/TestUtilsTest.java index fd25f1cff..3bba34708 100644 --- a/src/test/java/org/scijava/test/TestUtilsTest.java +++ b/src/test/java/org/scijava/test/TestUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/text/TextServiceTest.java b/src/test/java/org/scijava/text/TextServiceTest.java index aa4b714c2..e969da2aa 100644 --- a/src/test/java/org/scijava/text/TextServiceTest.java +++ b/src/test/java/org/scijava/text/TextServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/thread/ThreadServiceTest.java b/src/test/java/org/scijava/thread/ThreadServiceTest.java index 918dc33ea..83e5dd336 100644 --- a/src/test/java/org/scijava/thread/ThreadServiceTest.java +++ b/src/test/java/org/scijava/thread/ThreadServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ui/UIServiceTest.java b/src/test/java/org/scijava/ui/UIServiceTest.java index 89def4290..7a53b6e58 100644 --- a/src/test/java/org/scijava/ui/UIServiceTest.java +++ b/src/test/java/org/scijava/ui/UIServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/AppUtilsTest.java b/src/test/java/org/scijava/util/AppUtilsTest.java index 7018581b2..2bce17e08 100644 --- a/src/test/java/org/scijava/util/AppUtilsTest.java +++ b/src/test/java/org/scijava/util/AppUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ArrayUtilsTest.java b/src/test/java/org/scijava/util/ArrayUtilsTest.java index befbf0697..15e953adc 100644 --- a/src/test/java/org/scijava/util/ArrayUtilsTest.java +++ b/src/test/java/org/scijava/util/ArrayUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/BoolArrayTest.java b/src/test/java/org/scijava/util/BoolArrayTest.java index c578dd824..2da00516f 100644 --- a/src/test/java/org/scijava/util/BoolArrayTest.java +++ b/src/test/java/org/scijava/util/BoolArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ByteArrayTest.java b/src/test/java/org/scijava/util/ByteArrayTest.java index f4fa06ec5..ab862f915 100644 --- a/src/test/java/org/scijava/util/ByteArrayTest.java +++ b/src/test/java/org/scijava/util/ByteArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/CharArrayTest.java b/src/test/java/org/scijava/util/CharArrayTest.java index 2063c0a88..9aa855f27 100644 --- a/src/test/java/org/scijava/util/CharArrayTest.java +++ b/src/test/java/org/scijava/util/CharArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ClassUtilsTest.java b/src/test/java/org/scijava/util/ClassUtilsTest.java index 11b469757..0e8e022f1 100644 --- a/src/test/java/org/scijava/util/ClassUtilsTest.java +++ b/src/test/java/org/scijava/util/ClassUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ColorRGBTest.java b/src/test/java/org/scijava/util/ColorRGBTest.java index e461780a5..d09e01721 100644 --- a/src/test/java/org/scijava/util/ColorRGBTest.java +++ b/src/test/java/org/scijava/util/ColorRGBTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ConversionUtilsTest.java b/src/test/java/org/scijava/util/ConversionUtilsTest.java index a6a49d3b3..3daac3f50 100644 --- a/src/test/java/org/scijava/util/ConversionUtilsTest.java +++ b/src/test/java/org/scijava/util/ConversionUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/DigestUtilsTest.java b/src/test/java/org/scijava/util/DigestUtilsTest.java index 4c42955d4..0b1e15f24 100644 --- a/src/test/java/org/scijava/util/DigestUtilsTest.java +++ b/src/test/java/org/scijava/util/DigestUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/DoubleArrayTest.java b/src/test/java/org/scijava/util/DoubleArrayTest.java index 8f8c4aece..6d382c09c 100644 --- a/src/test/java/org/scijava/util/DoubleArrayTest.java +++ b/src/test/java/org/scijava/util/DoubleArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/FileUtilsTest.java b/src/test/java/org/scijava/util/FileUtilsTest.java index ebea6008c..dd240f593 100644 --- a/src/test/java/org/scijava/util/FileUtilsTest.java +++ b/src/test/java/org/scijava/util/FileUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/FloatArrayTest.java b/src/test/java/org/scijava/util/FloatArrayTest.java index cfa9d7f24..a76c12349 100644 --- a/src/test/java/org/scijava/util/FloatArrayTest.java +++ b/src/test/java/org/scijava/util/FloatArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/GenericArrayTypesTest.java b/src/test/java/org/scijava/util/GenericArrayTypesTest.java index 651b6b437..fee6a2504 100644 --- a/src/test/java/org/scijava/util/GenericArrayTypesTest.java +++ b/src/test/java/org/scijava/util/GenericArrayTypesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/IntArrayTest.java b/src/test/java/org/scijava/util/IntArrayTest.java index 449621017..7536716d3 100644 --- a/src/test/java/org/scijava/util/IntArrayTest.java +++ b/src/test/java/org/scijava/util/IntArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/LastRecentlyUsedTest.java b/src/test/java/org/scijava/util/LastRecentlyUsedTest.java index a543f9830..8eeb5c5db 100644 --- a/src/test/java/org/scijava/util/LastRecentlyUsedTest.java +++ b/src/test/java/org/scijava/util/LastRecentlyUsedTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/LongArrayTest.java b/src/test/java/org/scijava/util/LongArrayTest.java index 04401d197..a18997343 100644 --- a/src/test/java/org/scijava/util/LongArrayTest.java +++ b/src/test/java/org/scijava/util/LongArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/NumberUtilsTest.java b/src/test/java/org/scijava/util/NumberUtilsTest.java index 2180767af..5ce6b3780 100644 --- a/src/test/java/org/scijava/util/NumberUtilsTest.java +++ b/src/test/java/org/scijava/util/NumberUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ObjectArrayTest.java b/src/test/java/org/scijava/util/ObjectArrayTest.java index 8bf3cae7e..1c96cec41 100644 --- a/src/test/java/org/scijava/util/ObjectArrayTest.java +++ b/src/test/java/org/scijava/util/ObjectArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/POMTest.java b/src/test/java/org/scijava/util/POMTest.java index b24fee5dc..86a800515 100644 --- a/src/test/java/org/scijava/util/POMTest.java +++ b/src/test/java/org/scijava/util/POMTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/PrimitiveArrayTest.java b/src/test/java/org/scijava/util/PrimitiveArrayTest.java index cb76fac7c..0fde7de05 100644 --- a/src/test/java/org/scijava/util/PrimitiveArrayTest.java +++ b/src/test/java/org/scijava/util/PrimitiveArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ProcessUtilsTest.java b/src/test/java/org/scijava/util/ProcessUtilsTest.java index 8b19a7cf7..dc529b96b 100644 --- a/src/test/java/org/scijava/util/ProcessUtilsTest.java +++ b/src/test/java/org/scijava/util/ProcessUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ShortArrayTest.java b/src/test/java/org/scijava/util/ShortArrayTest.java index cad66c41d..3626aa063 100644 --- a/src/test/java/org/scijava/util/ShortArrayTest.java +++ b/src/test/java/org/scijava/util/ShortArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/StringUtilsTest.java b/src/test/java/org/scijava/util/StringUtilsTest.java index 30f99e02f..86555e910 100644 --- a/src/test/java/org/scijava/util/StringUtilsTest.java +++ b/src/test/java/org/scijava/util/StringUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/TypesTest.java b/src/test/java/org/scijava/util/TypesTest.java index 24c6b5657..3ffa1edea 100644 --- a/src/test/java/org/scijava/util/TypesTest.java +++ b/src/test/java/org/scijava/util/TypesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/UnitUtilsTest.java b/src/test/java/org/scijava/util/UnitUtilsTest.java index bfc2aa681..96f54eae7 100644 --- a/src/test/java/org/scijava/util/UnitUtilsTest.java +++ b/src/test/java/org/scijava/util/UnitUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/VersionUtilsTest.java b/src/test/java/org/scijava/util/VersionUtilsTest.java index a924049f8..35554427b 100644 --- a/src/test/java/org/scijava/util/VersionUtilsTest.java +++ b/src/test/java/org/scijava/util/VersionUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/widget/WidgetStyleTest.java b/src/test/java/org/scijava/widget/WidgetStyleTest.java index 78f9c203d..2391ecb8a 100644 --- a/src/test/java/org/scijava/widget/WidgetStyleTest.java +++ b/src/test/java/org/scijava/widget/WidgetStyleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2023 SciJava developers. + * Copyright (C) 2009 - 2024 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: From fd951509484d337b505799ee4cfcf1bc05546a3f Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 26 Jan 2024 09:43:33 -0600 Subject: [PATCH 152/185] ScriptService: don't alias plugins w/ noAlias flag --- src/main/java/org/scijava/script/DefaultScriptService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/script/DefaultScriptService.java b/src/main/java/org/scijava/script/DefaultScriptService.java index e7f1f0e61..f8bd5e952 100644 --- a/src/main/java/org/scijava/script/DefaultScriptService.java +++ b/src/main/java/org/scijava/script/DefaultScriptService.java @@ -385,7 +385,10 @@ private void addAliases(final HashMap> map, } private Class[] pluginClasses(final Class type) { - return pluginService.getPluginsOfType(type).stream().map(info -> { + return pluginService.getPluginsOfType(type).stream() // + .filter(info -> !info.is("noAlias")) // + .map(info -> + { try { return info.loadClass(); } From 4632c641a4219bbfd9738bc5a0f44cb9cfde556d Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 12 Feb 2024 16:11:21 -0600 Subject: [PATCH 153/185] Fix enormous bug in subscribe(EventSubscriber) Thanks to Gabriel Selzer for pointing it out. --- src/main/java/org/scijava/event/DefaultEventService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index 5059046db..30194744d 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -140,7 +140,7 @@ public List> subscribe(final Object o) { @Override public void subscribe(final EventSubscriber subscriber) { - eventBus.subscribe(subscriber.getClass(), subscriber); + eventBus.subscribe(subscriber.getEventClass(), subscriber); } @Override From 11ba2a4f23307a1e02bc0e25363dcfbeb9f93636 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 16 Feb 2024 11:38:44 -0600 Subject: [PATCH 154/185] Happy New Year 2024 to LICENSE.txt, too --- LICENSE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.txt b/LICENSE.txt index aaee970f7..e37abf5e1 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 - 2023, SciJava developers. +Copyright (c) 2009 - 2024, SciJava developers. All rights reserved. Redistribution and use in source and binary forms, with or without modification, From 3f0e32f14aa7c6f64f206d79af14c47c6aac0249 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 16 Feb 2024 11:39:58 -0600 Subject: [PATCH 155/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4b91cb7b3..92b6764a7 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.98.0-SNAPSHOT + 2.98.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 661d92a0e9d86ea27cea024c8d032837bfc21390 Mon Sep 17 00:00:00 2001 From: hinerm Date: Thu, 9 May 2024 10:14:54 -0500 Subject: [PATCH 156/185] Create simple utility for property map I/O This helper reads and writes maps to/from plain text files, storing entries in "key=value" pairs. --- .../org/scijava/util/PropertiesHelper.java | 72 +++++++++ .../scijava/util/PropertiesHelperTest.java | 138 ++++++++++++++++++ 2 files changed, 210 insertions(+) create mode 100644 src/main/java/org/scijava/util/PropertiesHelper.java create mode 100644 src/test/java/org/scijava/util/PropertiesHelperTest.java diff --git a/src/main/java/org/scijava/util/PropertiesHelper.java b/src/main/java/org/scijava/util/PropertiesHelper.java new file mode 100644 index 000000000..64c2336df --- /dev/null +++ b/src/main/java/org/scijava/util/PropertiesHelper.java @@ -0,0 +1,72 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2024 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.util; + +import java.io.*; +import java.util.HashMap; +import java.util.Map; + +/** + * Simple utility for reading and writing a property map to/from plain text. + */ +public final class PropertiesHelper { + + public static Map get(File filename) { + Map map = new HashMap<>(); + try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { + String line; + while ((line = reader.readLine()) != null) { + String[] parts = line.split("=", 2); + if (parts.length == 2) { + map.put(parts[0], parts[1]); + } + } + } + catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + catch (IOException e) { + throw new RuntimeException(e); + } + return map; + } + + public static void put(Map properties, File filename) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) { + for (Map.Entry entry : properties.entrySet()) { + writer.write(entry.getKey() + "=" + entry.getValue()); + writer.newLine(); + } + } + catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/test/java/org/scijava/util/PropertiesHelperTest.java b/src/test/java/org/scijava/util/PropertiesHelperTest.java new file mode 100644 index 000000000..f4d655ef8 --- /dev/null +++ b/src/test/java/org/scijava/util/PropertiesHelperTest.java @@ -0,0 +1,138 @@ +/*- + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2024 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.util; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.*; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Tests for {@link PropertiesHelper} + */ +public class PropertiesHelperTest { + + private static final String EXPECTED_1 = "a=b"; + private static final String EXPECTED_2 = "hello=goodbye"; + + private Map props; + private File temp; + + @Before + public void setup() throws IOException { + temp = File.createTempFile("PropertiesHelper", "txt"); + props = new HashMap<>(); + props.put("a", "b"); + props.put("hello", "goodbye"); + } + + @After + public void cleanup() { + temp.delete(); + } + + @Test + public void testWrite() throws IOException { + PropertiesHelper.put(props, temp); + + int count = 0; + boolean saw1 = false, saw2 = false; + + try (BufferedReader reader = new BufferedReader(new FileReader(temp))) { + String line; + while ((line = reader.readLine()) != null) { + if (line.equals(EXPECTED_1)) { + saw1 = true; + } + if (line.equals(EXPECTED_2)) { + saw2 = true; + } + count++; + } + } + assertTrue(saw1); + assertTrue(saw2); + assertEquals(2, count); + } + + @Test + public void testRead() throws IOException { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(temp))) { + writer.write(EXPECTED_1); + writer.newLine(); + writer.write(EXPECTED_2); + writer.newLine(); + } + + Map propsMap = PropertiesHelper.get(temp); + assertTrue(props.equals(propsMap)); + } + + @Test + public void testIO() throws IOException { + PropertiesHelper.put(props, temp); + Map propsMap = PropertiesHelper.get(temp); + assertTrue(props.equals(propsMap)); + } + + @Test + public void testMultipleEquals() throws IOException { + props.clear(); + final String K = "hello", V = "world=true"; + props.put(K, V); + PropertiesHelper.put(props, temp); + Map propsMap = PropertiesHelper.get(temp); + assertEquals(1, propsMap.size()); + assertEquals(props.get(K), propsMap.get(K)); + } + + @Test + public void testOverwrite() throws IOException { + PropertiesHelper.put(props, temp); + props.put("myname", "jonas"); + PropertiesHelper.put(props, temp); + Map loadedProps = PropertiesHelper.get(temp); + assertEquals(3, loadedProps.size()); + int count = 0; + try (BufferedReader reader = new BufferedReader(new FileReader(temp))) { + String line; + while ((line = reader.readLine()) != null) { + count++; + } + } + assertEquals(3, count); + } +} From e9552bc0fa9115d053dad1376e0627909ac23fb6 Mon Sep 17 00:00:00 2001 From: hinerm Date: Tue, 4 Jun 2024 11:33:09 -0500 Subject: [PATCH 157/185] Bump minor version for new API --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 92b6764a7..468e5842d 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.98.1-SNAPSHOT + 2.99.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From d4ab47a1d41d9f7c0e593afb6a7959119c14249e Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 10 Jun 2024 19:37:43 -0500 Subject: [PATCH 158/185] DefaultTask: fix up class javadoc --- src/main/java/org/scijava/task/DefaultTask.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/scijava/task/DefaultTask.java b/src/main/java/org/scijava/task/DefaultTask.java index c14d7ad54..a275c3505 100644 --- a/src/main/java/org/scijava/task/DefaultTask.java +++ b/src/main/java/org/scijava/task/DefaultTask.java @@ -39,9 +39,9 @@ * Default implementation of {@link Task}. Throughout the task (or job), * {@link Task#setProgressValue(long)} can be called to inform * how the job is progressing. - * + *

      * Asynchronous case: - * - A job (runnable) is sent for execution to the linked {@link ThreadService}. + * A job (runnable) is sent for execution to the linked {@link ThreadService}. * It reports status updates via the linked {@link EventService}. * A {@link org.scijava.task.event.TaskEvent} is sent before the job * is started and when finished. @@ -50,9 +50,10 @@ * by calling {@link Future#cancel(boolean)}. * This default behaviour can be supplemented by an additional * custom callback which can be set in {@link Task#setCancelCallBack(Runnable)}. - * + *

      + *

      * Synchronous case: - * - A job that reports its status in between calls of {@link Task#start()}, + * A job that reports its status in between calls of {@link Task#start()}, * and {@link Task#finish()}. It also reports its status via * the linked {@link EventService}. * Start and finish calls allow publishing proper {@link org.scijava.task.event.TaskEvent} @@ -60,8 +61,10 @@ * Upon cancellation of a synchronous task, it is the responsibility * of the synchronous task to handle its own cancellation through * a custom callback which can be set via {@link Task#setCancelCallBack(Runnable)}. + *

      * - * @author Curtis Rueden, Nicolas Chiaruttini + * @author Curtis Rueden + * @author Nicolas Chiaruttini */ public class DefaultTask implements Task { From d476e5cb36ccbf5735742b6b623919ffe3f5bce2 Mon Sep 17 00:00:00 2001 From: Stefan Hahmann Date: Thu, 27 Jun 2024 14:47:29 +0200 Subject: [PATCH 159/185] Ignore empty Strings during String to FileArray conversion * The current state of the code is that an empty String, is converted to a new File("") object with an empty String * A File object instantiated by this will be a File object with an absolute Path that is equivalent to the Path from which the application was started * The result of this is relatively unpredictable * Thus empty String should not be converted to File object and not be added to the output --- src/main/java/org/scijava/convert/FileListConverters.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/scijava/convert/FileListConverters.java b/src/main/java/org/scijava/convert/FileListConverters.java index ed3da126e..47a81053c 100644 --- a/src/main/java/org/scijava/convert/FileListConverters.java +++ b/src/main/java/org/scijava/convert/FileListConverters.java @@ -82,6 +82,8 @@ public T convert(final Object src, final Class dest) { final String[] tokens = StringUtils.splitUnquoted((String) src, ","); final List fileList = new ArrayList<>(); for (final String filePath : tokens) { + if ( filePath.isEmpty() ) + continue; fileList.add(new File(filePath.replaceAll("^\"|\"$", ""))); } return (T) fileList.toArray(new File[fileList.size()]); From 8dc4c0e4146f779fd05c068974ad0b450bdc47bf Mon Sep 17 00:00:00 2001 From: Stefan Hahmann Date: Thu, 27 Jun 2024 15:33:44 +0200 Subject: [PATCH 160/185] Add assertion of 0 length File array in case of an empty String provided for String to File Array conversion --- src/test/java/org/scijava/convert/FileListConverterTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/org/scijava/convert/FileListConverterTest.java b/src/test/java/org/scijava/convert/FileListConverterTest.java index 0276fe63a..71afaa2dc 100644 --- a/src/test/java/org/scijava/convert/FileListConverterTest.java +++ b/src/test/java/org/scijava/convert/FileListConverterTest.java @@ -69,6 +69,7 @@ public void testStringToFileArrayConverter() { conv.convert(path, File[].class)[0]); assertEquals("Wrong file name", new File("C:\\temp"), conv.convert(path, File[].class)[1]); + assertEquals( 0, conv.convert( "", File[].class ).length ); } @Test From 00512f5554090cfc878936deb9156712400a44df Mon Sep 17 00:00:00 2001 From: Christian Tischer Date: Thu, 27 Jun 2024 23:46:47 +0200 Subject: [PATCH 161/185] Add FileWidget.FILE_AND_DIRECTORY_STYLE --- pom.xml | 5 +++++ src/main/java/org/scijava/ui/UserInterface.java | 2 ++ src/main/java/org/scijava/widget/FileWidget.java | 7 +++++++ 3 files changed, 14 insertions(+) diff --git a/pom.xml b/pom.xml index 468e5842d..f1b9aec33 100644 --- a/pom.xml +++ b/pom.xml @@ -134,6 +134,11 @@ https://imagej.net/people/jaywarrick jaywarrick + + Christian Tischer + https://imagej.net/people/tischi + tischi + diff --git a/src/main/java/org/scijava/ui/UserInterface.java b/src/main/java/org/scijava/ui/UserInterface.java index 54dbfb767..938a5663a 100644 --- a/src/main/java/org/scijava/ui/UserInterface.java +++ b/src/main/java/org/scijava/ui/UserInterface.java @@ -163,6 +163,7 @@ default File chooseFile(final File file, final String style) { // TODO use a utility class for style handling, e.g. StyleUtils.isStyle(style, ...) if (style == null) title = "Choose a file"; else if (style.toLowerCase().contains(FileWidget.DIRECTORY_STYLE)) title = "Choose a directory"; + else if (style.toLowerCase().contains(FileWidget.FILE_AND_DIRECTORY_STYLE )) title = "Choose a file or directory"; else if (style.toLowerCase().contains(FileWidget.OPEN_STYLE)) title = "Open"; else if (style.toLowerCase().contains(FileWidget.SAVE_STYLE)) title = "Save"; else title = "Choose a file"; @@ -180,6 +181,7 @@ default File chooseFile(final File file, final String style) { *
    9. {@link FileWidget#OPEN_STYLE}
    10. *
    11. {@link FileWidget#SAVE_STYLE}
    12. *
    13. {@link FileWidget#DIRECTORY_STYLE}
    14. + *
    15. {@link FileWidget#FILE_AND_DIRECTORY_STYLE}
    16. * * @return The {@link File} chosen by the user, or null if prompt is not * available diff --git a/src/main/java/org/scijava/widget/FileWidget.java b/src/main/java/org/scijava/widget/FileWidget.java index a4322554d..e72d41c37 100644 --- a/src/main/java/org/scijava/widget/FileWidget.java +++ b/src/main/java/org/scijava/widget/FileWidget.java @@ -59,4 +59,11 @@ public interface FileWidget extends InputWidget { */ String DIRECTORY_STYLE = "directory"; + /** + * Widget style for directory chooser dialogs. + * + * @see org.scijava.plugin.Parameter#style() + */ + String FILE_AND_DIRECTORY_STYLE = "both"; + } From 79a92d832f773bbefe0c8f44da840017b36e5ebb Mon Sep 17 00:00:00 2001 From: Jan Eglinger Date: Mon, 1 Jul 2024 11:20:31 +0200 Subject: [PATCH 162/185] Use WidgetStyle.isStyle for style logic --- src/main/java/org/scijava/ui/UserInterface.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/scijava/ui/UserInterface.java b/src/main/java/org/scijava/ui/UserInterface.java index 938a5663a..f4c6d0c70 100644 --- a/src/main/java/org/scijava/ui/UserInterface.java +++ b/src/main/java/org/scijava/ui/UserInterface.java @@ -41,6 +41,7 @@ import org.scijava.ui.console.ConsolePane; import org.scijava.ui.viewer.DisplayWindow; import org.scijava.widget.FileWidget; +import org.scijava.widget.WidgetStyle; /** * An end-user SciJava application user interface. @@ -160,12 +161,11 @@ DialogPrompt dialogPrompt(String message, String title, default File chooseFile(final File file, final String style) { final String title; // style can be a string with multiple comma-separated keywords - // TODO use a utility class for style handling, e.g. StyleUtils.isStyle(style, ...) if (style == null) title = "Choose a file"; - else if (style.toLowerCase().contains(FileWidget.DIRECTORY_STYLE)) title = "Choose a directory"; - else if (style.toLowerCase().contains(FileWidget.FILE_AND_DIRECTORY_STYLE )) title = "Choose a file or directory"; - else if (style.toLowerCase().contains(FileWidget.OPEN_STYLE)) title = "Open"; - else if (style.toLowerCase().contains(FileWidget.SAVE_STYLE)) title = "Save"; + else if (WidgetStyle.isStyle(style, FileWidget.DIRECTORY_STYLE)) title = "Choose a directory"; + else if (WidgetStyle.isStyle(style, FileWidget.FILE_AND_DIRECTORY_STYLE)) title = "Choose a file or directory"; + else if (WidgetStyle.isStyle(style, FileWidget.OPEN_STYLE)) title = "Open"; + else if (WidgetStyle.isStyle(style, FileWidget.SAVE_STYLE)) title = "Save"; else title = "Choose a file"; return chooseFile(title, file, style); From 88d5fd5ac3e350f7565e8e3db310723e186d0f29 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 8 Jul 2024 12:50:06 -0500 Subject: [PATCH 163/185] Appease the license-maven-plugin --- src/main/java/org/scijava/util/PropertiesHelper.java | 4 ++-- src/test/java/org/scijava/util/PropertiesHelperTest.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/scijava/util/PropertiesHelper.java b/src/main/java/org/scijava/util/PropertiesHelper.java index 64c2336df..f56189d8c 100644 --- a/src/main/java/org/scijava/util/PropertiesHelper.java +++ b/src/main/java/org/scijava/util/PropertiesHelper.java @@ -6,13 +6,13 @@ * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE diff --git a/src/test/java/org/scijava/util/PropertiesHelperTest.java b/src/test/java/org/scijava/util/PropertiesHelperTest.java index f4d655ef8..35202c9f5 100644 --- a/src/test/java/org/scijava/util/PropertiesHelperTest.java +++ b/src/test/java/org/scijava/util/PropertiesHelperTest.java @@ -6,13 +6,13 @@ * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE From 0eb119360bb7f9c946aa98e25cdd01a13b28088d Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 8 Jul 2024 14:27:22 -0500 Subject: [PATCH 164/185] CI: add OSSRH_USER as configured env var We need it now in order to deploy to OSS Sonatype. --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 876a620a3..b11b4f1a2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,5 +36,6 @@ jobs: GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} MAVEN_USER: ${{ secrets.MAVEN_USER }} MAVEN_PASS: ${{ secrets.MAVEN_PASS }} + OSSRH_USER: ${{ secrets.OSSRH_USER }} OSSRH_PASS: ${{ secrets.OSSRH_PASS }} SIGNING_ASC: ${{ secrets.SIGNING_ASC }} From 37abc7e94672532348dc4673f07f60b30293019f Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 8 Jul 2024 14:34:52 -0500 Subject: [PATCH 165/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 468e5842d..9eece0c91 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.99.0-SNAPSHOT + 2.99.1-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 3074675da4f3cf27544c8241fe674ae87b73468c Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 16 Jul 2024 10:14:59 -0500 Subject: [PATCH 166/185] If UI is already created, don't createUI() again --- src/main/java/org/scijava/ui/AbstractUserInterface.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/scijava/ui/AbstractUserInterface.java b/src/main/java/org/scijava/ui/AbstractUserInterface.java index fd9cc24d1..a3894158b 100644 --- a/src/main/java/org/scijava/ui/AbstractUserInterface.java +++ b/src/main/java/org/scijava/ui/AbstractUserInterface.java @@ -79,6 +79,7 @@ public abstract class AbstractUserInterface extends AbstractRichPlugin @Override public void show() { + if (visible) return; createUI(); visible = true; } From 96827bf5ea2400b605cacad5e6dbf9984441c06f Mon Sep 17 00:00:00 2001 From: hinerm Date: Mon, 22 Jul 2024 10:33:08 -0500 Subject: [PATCH 167/185] Show UI on EDT if required UserInterfaces have a requiresEDT flag. If this is set, the UIService should show them on the EDT when showUI is called. --- .../java/org/scijava/ui/DefaultUIService.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/scijava/ui/DefaultUIService.java b/src/main/java/org/scijava/ui/DefaultUIService.java index fe787ad5c..ff5663f91 100644 --- a/src/main/java/org/scijava/ui/DefaultUIService.java +++ b/src/main/java/org/scijava/ui/DefaultUIService.java @@ -32,6 +32,7 @@ import java.awt.GraphicsEnvironment; import java.io.File; import java.io.FileFilter; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -161,10 +162,25 @@ public void showUI(final String name) { @Override public void showUI(final UserInterface ui) { log.debug("Launching user interface: " + ui.getClass().getName()); - ui.show(); - // NB: Also show all the current displays. - for (final Display display : displayService.getDisplays()) { - ui.show(display); + Runnable showUI = () -> { + ui.show(); + // NB: Also show all the current displays. + for (final Display display : displayService.getDisplays()) { + ui.show(display); + } + }; + + // Dispatch on EDT if necessary + if (ui.requiresEDT()) { + try { + threadService.invoke(showUI); + } + catch (InterruptedException | InvocationTargetException e) { + throw new RuntimeException(e); + } + } + else { + showUI.run(); } eventService.publish(new UIShownEvent(ui)); } From 055a449826c6a541d84c458575a8497e952d31c6 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 24 Jul 2024 12:00:02 -0500 Subject: [PATCH 168/185] CI: Tweak Linux-only deployment logic --- .github/build.sh | 3 +-- .github/setup.sh | 7 +++++++ .github/workflows/build.yml | 7 ++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/build.sh b/.github/build.sh index 44a7909d1..7da42622b 100755 --- a/.github/build.sh +++ b/.github/build.sh @@ -1,4 +1,3 @@ #!/bin/sh curl -fsLO https://raw.githubusercontent.com/scijava/scijava-scripts/master/ci-build.sh -# NB: Only the Linux CI node should deploy build artifacts. -NO_DEPLOY=$(test "$(uname)" = Linux || echo 1) sh ci-build.sh +sh ci-build.sh diff --git a/.github/setup.sh b/.github/setup.sh index f359bbeeb..d06d5a746 100755 --- a/.github/setup.sh +++ b/.github/setup.sh @@ -1,3 +1,10 @@ #!/bin/sh curl -fsLO https://raw.githubusercontent.com/scijava/scijava-scripts/master/ci-setup-github-actions.sh sh ci-setup-github-actions.sh + +# Let the Linux build handle artifact deployment. +if [ "$(uname)" != Linux ] +then + echo "No deploy -- non-Linux build" + echo "NO_DEPLOY=1" >> $GITHUB_ENV +fi diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b11b4f1a2..64b606407 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,14 +1,14 @@ name: build on: - pull_request: - branches: - - master push: branches: - master tags: - "*-[0-9]+.*" + pull_request: + branches: + - master jobs: build: @@ -28,6 +28,7 @@ jobs: cache: 'maven' - name: Set up CI environment run: .github/setup.sh + shell: bash - name: Execute the build run: .github/build.sh shell: bash From 0d9534095735cb75e06adfe42d902de1ac3d5662 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 27 Aug 2024 10:33:52 -0500 Subject: [PATCH 169/185] LocationService: fall back to FileLocation more Specifically: if the URI resolution returns null, rather than actually returning null, let's wrap the string into a FileLocation as a fallback. See imagej/pyimagej#285. --- .../scijava/io/location/LocationService.java | 5 +++-- .../io/location/LocationServiceTest.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/io/location/LocationService.java b/src/main/java/org/scijava/io/location/LocationService.java index ff29ce6e0..08aa30759 100644 --- a/src/main/java/org/scijava/io/location/LocationService.java +++ b/src/main/java/org/scijava/io/location/LocationService.java @@ -56,14 +56,15 @@ public interface LocationService extends HandlerService, */ default Location resolve(final String uriString) throws URISyntaxException { try { - return resolve(new URI(uriString)); + Location loc = resolve(new URI(uriString)); + if (loc != null) return loc; } catch (final URISyntaxException exc) { // In general, filenames are not valid URI strings. // Particularly on Windows, there are backslashes, which are invalid in URIs. // So we explicitly turn this string into a file if an error happens above. - return resolve(new File(uriString).toURI()); } + return resolve(new File(uriString).toURI()); } /** diff --git a/src/test/java/org/scijava/io/location/LocationServiceTest.java b/src/test/java/org/scijava/io/location/LocationServiceTest.java index cede48501..fb917a694 100644 --- a/src/test/java/org/scijava/io/location/LocationServiceTest.java +++ b/src/test/java/org/scijava/io/location/LocationServiceTest.java @@ -30,6 +30,7 @@ package org.scijava.io.location; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.io.File; @@ -43,6 +44,7 @@ * Tests {@link LocationService}. * * @author Gabriel Einsdorf + * @author Curtis Rueden */ public class LocationServiceTest { @@ -60,6 +62,23 @@ public void testResolve() throws URISyntaxException { assertEquals(uri, loc.resolve(uri.toString()).getURI()); } + @Test + public void testResolveWindowsPath() throws URISyntaxException { + final Context ctx = new Context(LocationService.class); + final LocationService loc = ctx.getService(LocationService.class); + + String pSlash = "C:/Windows/FilePath/image.tif"; + final Location locSlash = loc.resolve(pSlash); + assertTrue(locSlash instanceof FileLocation); + + String pBackslash = pSlash.replace('/', '\\'); + final Location locBackslash = loc.resolve(pBackslash); + assertTrue(locBackslash instanceof FileLocation); + + final Location locSlashURI = loc.resolve(new URI(pSlash)); + assertNull(locSlashURI); + } + @Test public void testFallBack() throws URISyntaxException { final Context ctx = new Context(LocationService.class); From f5230f6fce88c268072fb4a55d33544cbb12d011 Mon Sep 17 00:00:00 2001 From: hinerm Date: Tue, 10 Sep 2024 15:07:30 -0500 Subject: [PATCH 170/185] De-duplicate widget inputs by String comparison When populating potential items for an input widget, we now prefer existing objects of a given input type to potentially convertiable types. Further, for convertibles we now avoid considering them if they share a toString with any other potential input. Candidates are prioritized in order returned by ConvertService.getCompatibleInputs. This mitigates the potential for duplicate entries in input harvesters when multiple input instances are convertible to the same effective output instance. --- .../widget/AbstractInputHarvester.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/scijava/widget/AbstractInputHarvester.java b/src/main/java/org/scijava/widget/AbstractInputHarvester.java index 2c259c400..d1515bd17 100644 --- a/src/main/java/org/scijava/widget/AbstractInputHarvester.java +++ b/src/main/java/org/scijava/widget/AbstractInputHarvester.java @@ -30,9 +30,10 @@ package org.scijava.widget; import java.util.ArrayList; -import java.util.HashSet; +import java.util.Collection; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import org.scijava.AbstractContextual; import org.scijava.convert.ConvertService; @@ -129,9 +130,24 @@ private WidgetModel addInput(final InputPanel inputPanel, /** Asks the object service and convert service for valid choices */ private List getObjects(final Class type) { - Set compatibleInputs = - new HashSet<>(convertService.getCompatibleInputs(type)); - compatibleInputs.addAll(objectService.getObjects(type)); - return new ArrayList<>(compatibleInputs); + // Start with the known, unconverted objects of the desired type + List objects = new ArrayList<>(objectService.getObjects(type)); + + // Get all the known objects that can be converted to the destination type + Collection compatibleInputs = convertService.getCompatibleInputs(type); + + // HACK: Add each convertible object that doesn't share a name with any other object + // Our goal here is to de-duplicate by avoiding similar inputs that could be converted + // to the same effective output (e.g. an ImageDisplay and a Dataset that map to the same + // ImgPlus) + Set knownNames = objects.stream().map(Object::toString).collect(Collectors.toSet()); + for (Object o : compatibleInputs) { + final String s = o.toString(); + if (!knownNames.contains(s)) { + objects.add(o); + knownNames.add(s); + } + } + return objects; } } From 7ac4926d72f3ce3051787629a021d5f3f3adfdf2 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 15 Oct 2024 15:12:32 -0500 Subject: [PATCH 171/185] ShadowMenu: load icon resources more robustly The Types.load method may not use the correct class loader. --- src/main/java/org/scijava/menu/ShadowMenu.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/scijava/menu/ShadowMenu.java b/src/main/java/org/scijava/menu/ShadowMenu.java index f6b6e53db..ce5d8e3cc 100644 --- a/src/main/java/org/scijava/menu/ShadowMenu.java +++ b/src/main/java/org/scijava/menu/ShadowMenu.java @@ -230,9 +230,8 @@ public URL getIconURL() { if (isLeaf()) iconPath = DEFAULT_ICON_PATH; else return null; } - final String className = moduleInfo.getDelegateClassName(); try { - final Class c = Types.load(className, false); + final Class c = moduleInfo.loadDelegateClass(); final URL iconURL = c.getResource(iconPath); if (iconURL == null) { if (log != null) log.error("Could not load icon: " + iconPath); @@ -240,7 +239,8 @@ public URL getIconURL() { return iconURL; } catch (final IllegalArgumentException exc) { - final String message = "Could not load icon for class: " + className; + final String message = "Could not load icon for class: " + + moduleInfo.getDelegateClassName(); if (log.isDebug()) log.debug(message, exc); else log.error(message); return null; From 1b25c5802e42d1061645b3597c18242cfda3b879 Mon Sep 17 00:00:00 2001 From: hinerm Date: Tue, 3 Dec 2024 10:28:10 -0600 Subject: [PATCH 172/185] ShadowMenu: fix compilation error --- src/main/java/org/scijava/menu/ShadowMenu.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/org/scijava/menu/ShadowMenu.java b/src/main/java/org/scijava/menu/ShadowMenu.java index ce5d8e3cc..f97ab4800 100644 --- a/src/main/java/org/scijava/menu/ShadowMenu.java +++ b/src/main/java/org/scijava/menu/ShadowMenu.java @@ -238,6 +238,13 @@ public URL getIconURL() { } return iconURL; } + catch (final ClassNotFoundException exc) { + final String message = "Failed to load class: " + + moduleInfo.getDelegateClassName(); + if (log.isDebug()) log.debug(message, exc); + else log.error(message); + return null; + } catch (final IllegalArgumentException exc) { final String message = "Could not load icon for class: " + moduleInfo.getDelegateClassName(); From dbd6ce5c83b2379d07d530350382b6bf448624bf Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 12 May 2025 16:31:33 -0500 Subject: [PATCH 173/185] Improve native classifier regex * Handle more architecture labels including arm64. * Recognize both macosx and macos as OS prefixes. --- src/main/java/org/scijava/util/FileUtils.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/util/FileUtils.java b/src/main/java/org/scijava/util/FileUtils.java index 73099aacc..f98e76f69 100644 --- a/src/main/java/org/scijava/util/FileUtils.java +++ b/src/main/java/org/scijava/util/FileUtils.java @@ -729,8 +729,9 @@ private static String classifiers() { "sources", "javadoc", "natives?-?\\w*", - "(natives-)?(android|linux|macosx|solaris|windows)-" + - "(aarch64|amd64|arm|armv6|armv6hf|i586|universal|x86|x86_64)", + "(natives-)?(android|linux|macosx|macos|solaris|windows)-" + + "(aarch64|amd64|arm64|armv6hf|armv6|arm|" + + "i386|i486|i586|i686|universal|x86[_-]32|x86[_-]64|x86)", }; final StringBuilder sb = new StringBuilder("("); for (final String classifier : classifiers) { From 4fc2b14f72ac173827764bcfbd756a820a72b87f Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 12 May 2025 16:32:35 -0500 Subject: [PATCH 174/185] Update copyright blurbs for 2025 --- src/it/apt-test/pom.xml | 2 +- src/it/apt-test/setup.bsh | 2 +- .../src/main/java/org/scijava/annotation/its/Annotated.java | 2 +- .../main/java/org/scijava/annotation/its/CustomAnnotation.java | 2 +- src/it/apt-test/verify.bsh | 2 +- src/it/settings.xml | 2 +- src/main/java/org/scijava/AbstractBasicDetails.java | 2 +- src/main/java/org/scijava/AbstractContextual.java | 2 +- src/main/java/org/scijava/AbstractGateway.java | 2 +- src/main/java/org/scijava/AbstractUIDetails.java | 2 +- src/main/java/org/scijava/BasicDetails.java | 2 +- src/main/java/org/scijava/Cancelable.java | 2 +- src/main/java/org/scijava/Context.java | 2 +- src/main/java/org/scijava/Contextual.java | 2 +- src/main/java/org/scijava/Disposable.java | 2 +- src/main/java/org/scijava/Gateway.java | 2 +- src/main/java/org/scijava/Identifiable.java | 2 +- src/main/java/org/scijava/Initializable.java | 2 +- src/main/java/org/scijava/Instantiable.java | 2 +- src/main/java/org/scijava/InstantiableException.java | 2 +- src/main/java/org/scijava/ItemIO.java | 2 +- src/main/java/org/scijava/ItemVisibility.java | 2 +- src/main/java/org/scijava/Locatable.java | 2 +- src/main/java/org/scijava/MenuEntry.java | 2 +- src/main/java/org/scijava/MenuPath.java | 2 +- src/main/java/org/scijava/Named.java | 2 +- src/main/java/org/scijava/NoSuchServiceException.java | 2 +- src/main/java/org/scijava/NullContextException.java | 2 +- src/main/java/org/scijava/Optional.java | 2 +- src/main/java/org/scijava/Prioritized.java | 2 +- src/main/java/org/scijava/Priority.java | 2 +- src/main/java/org/scijava/SciJava.java | 2 +- src/main/java/org/scijava/Typed.java | 2 +- src/main/java/org/scijava/UIDetails.java | 2 +- src/main/java/org/scijava/Validated.java | 2 +- src/main/java/org/scijava/ValidityProblem.java | 2 +- src/main/java/org/scijava/Versioned.java | 2 +- src/main/java/org/scijava/annotations/AbstractIndexWriter.java | 2 +- src/main/java/org/scijava/annotations/AnnotationCombiner.java | 2 +- src/main/java/org/scijava/annotations/AnnotationProcessor.java | 2 +- src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java | 2 +- src/main/java/org/scijava/annotations/DirectoryIndexer.java | 2 +- src/main/java/org/scijava/annotations/EclipseHelper.java | 2 +- src/main/java/org/scijava/annotations/Index.java | 2 +- src/main/java/org/scijava/annotations/IndexItem.java | 2 +- src/main/java/org/scijava/annotations/IndexReader.java | 2 +- src/main/java/org/scijava/annotations/Indexable.java | 2 +- src/main/java/org/scijava/annotations/legacy/LegacyReader.java | 2 +- src/main/java/org/scijava/app/AbstractApp.java | 2 +- src/main/java/org/scijava/app/App.java | 2 +- src/main/java/org/scijava/app/AppService.java | 2 +- src/main/java/org/scijava/app/DefaultAppService.java | 2 +- src/main/java/org/scijava/app/DefaultStatusService.java | 2 +- src/main/java/org/scijava/app/SciJavaApp.java | 2 +- src/main/java/org/scijava/app/StatusService.java | 2 +- src/main/java/org/scijava/app/event/StatusEvent.java | 2 +- src/main/java/org/scijava/cache/CacheService.java | 2 +- src/main/java/org/scijava/cache/DefaultCacheService.java | 2 +- src/main/java/org/scijava/command/Command.java | 2 +- src/main/java/org/scijava/command/CommandInfo.java | 2 +- src/main/java/org/scijava/command/CommandModule.java | 2 +- src/main/java/org/scijava/command/CommandModuleItem.java | 2 +- src/main/java/org/scijava/command/CommandService.java | 2 +- src/main/java/org/scijava/command/ContextCommand.java | 2 +- src/main/java/org/scijava/command/DefaultCommandService.java | 2 +- src/main/java/org/scijava/command/DynamicCommand.java | 2 +- src/main/java/org/scijava/command/DynamicCommandInfo.java | 2 +- src/main/java/org/scijava/command/Inputs.java | 2 +- src/main/java/org/scijava/command/Interactive.java | 2 +- src/main/java/org/scijava/command/InteractiveCommand.java | 2 +- src/main/java/org/scijava/command/ModuleCommand.java | 2 +- src/main/java/org/scijava/command/Previewable.java | 2 +- src/main/java/org/scijava/command/UnimplementedCommand.java | 2 +- src/main/java/org/scijava/command/console/RunArgument.java | 2 +- src/main/java/org/scijava/command/run/CommandCodeRunner.java | 2 +- src/main/java/org/scijava/console/AbstractConsoleArgument.java | 2 +- src/main/java/org/scijava/console/ConsoleArgument.java | 2 +- src/main/java/org/scijava/console/ConsoleService.java | 2 +- src/main/java/org/scijava/console/ConsoleUtils.java | 2 +- src/main/java/org/scijava/console/DefaultConsoleService.java | 2 +- src/main/java/org/scijava/console/MultiOutputStream.java | 2 +- src/main/java/org/scijava/console/MultiPrintStream.java | 2 +- src/main/java/org/scijava/console/OutputEvent.java | 2 +- src/main/java/org/scijava/console/OutputListener.java | 2 +- src/main/java/org/scijava/console/SystemPropertyArgument.java | 2 +- src/main/java/org/scijava/convert/AbstractConvertService.java | 2 +- src/main/java/org/scijava/convert/AbstractConverter.java | 2 +- .../java/org/scijava/convert/AbstractDelegateConverter.java | 2 +- src/main/java/org/scijava/convert/ArrayConverters.java | 2 +- src/main/java/org/scijava/convert/ArrayToStringConverter.java | 2 +- src/main/java/org/scijava/convert/CastingConverter.java | 2 +- src/main/java/org/scijava/convert/ConversionRequest.java | 2 +- src/main/java/org/scijava/convert/ConvertService.java | 2 +- src/main/java/org/scijava/convert/Converter.java | 2 +- src/main/java/org/scijava/convert/DefaultConvertService.java | 2 +- src/main/java/org/scijava/convert/DefaultConverter.java | 2 +- src/main/java/org/scijava/convert/FileListConverters.java | 2 +- src/main/java/org/scijava/convert/FileToPathConverter.java | 2 +- src/main/java/org/scijava/convert/NullConverter.java | 2 +- src/main/java/org/scijava/convert/NumberConverters.java | 2 +- .../java/org/scijava/convert/NumberToBigDecimalConverter.java | 2 +- .../java/org/scijava/convert/NumberToBigIntegerConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToDoubleConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToFloatConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToIntegerConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToLongConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToNumberConverter.java | 2 +- src/main/java/org/scijava/convert/NumberToShortConverter.java | 2 +- src/main/java/org/scijava/convert/PathToFileConverter.java | 2 +- src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java | 2 +- src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java | 2 +- src/main/java/org/scijava/convert/StringToArrayConverter.java | 2 +- src/main/java/org/scijava/convert/StringToNumberConverter.java | 2 +- src/main/java/org/scijava/display/AbstractDisplay.java | 2 +- .../java/org/scijava/display/ActiveDisplayPreprocessor.java | 2 +- src/main/java/org/scijava/display/DefaultDisplay.java | 2 +- src/main/java/org/scijava/display/DefaultDisplayService.java | 2 +- src/main/java/org/scijava/display/DefaultTextDisplay.java | 2 +- src/main/java/org/scijava/display/Display.java | 2 +- src/main/java/org/scijava/display/DisplayPostprocessor.java | 2 +- src/main/java/org/scijava/display/DisplayService.java | 2 +- src/main/java/org/scijava/display/Displayable.java | 2 +- src/main/java/org/scijava/display/TextDisplay.java | 2 +- .../java/org/scijava/display/event/DisplayActivatedEvent.java | 2 +- .../java/org/scijava/display/event/DisplayCreatedEvent.java | 2 +- .../java/org/scijava/display/event/DisplayDeletedEvent.java | 2 +- src/main/java/org/scijava/display/event/DisplayEvent.java | 2 +- .../java/org/scijava/display/event/DisplayUpdatedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/InputEvent.java | 2 +- src/main/java/org/scijava/display/event/input/KyEvent.java | 2 +- .../java/org/scijava/display/event/input/KyPressedEvent.java | 2 +- .../java/org/scijava/display/event/input/KyReleasedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/KyTypedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsButtonEvent.java | 2 +- .../java/org/scijava/display/event/input/MsClickedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsDraggedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsEnteredEvent.java | 2 +- src/main/java/org/scijava/display/event/input/MsEvent.java | 2 +- .../java/org/scijava/display/event/input/MsExitedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/MsMovedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsPressedEvent.java | 2 +- .../java/org/scijava/display/event/input/MsReleasedEvent.java | 2 +- src/main/java/org/scijava/display/event/input/MsWheelEvent.java | 2 +- .../org/scijava/display/event/window/WinActivatedEvent.java | 2 +- .../java/org/scijava/display/event/window/WinClosedEvent.java | 2 +- .../java/org/scijava/display/event/window/WinClosingEvent.java | 2 +- .../org/scijava/display/event/window/WinDeactivatedEvent.java | 2 +- .../org/scijava/display/event/window/WinDeiconifiedEvent.java | 2 +- src/main/java/org/scijava/display/event/window/WinEvent.java | 2 +- .../org/scijava/display/event/window/WinIconifiedEvent.java | 2 +- .../java/org/scijava/display/event/window/WinOpenedEvent.java | 2 +- src/main/java/org/scijava/download/DefaultDownloadService.java | 2 +- src/main/java/org/scijava/download/DiskLocationCache.java | 2 +- src/main/java/org/scijava/download/Download.java | 2 +- src/main/java/org/scijava/download/DownloadService.java | 2 +- src/main/java/org/scijava/download/LocationCache.java | 2 +- src/main/java/org/scijava/download/MultiWriteHandle.java | 2 +- src/main/java/org/scijava/event/ContextCreatedEvent.java | 2 +- src/main/java/org/scijava/event/ContextDisposingEvent.java | 2 +- src/main/java/org/scijava/event/DefaultEventBus.java | 2 +- src/main/java/org/scijava/event/DefaultEventHistory.java | 2 +- src/main/java/org/scijava/event/DefaultEventService.java | 2 +- src/main/java/org/scijava/event/EventDetails.java | 2 +- src/main/java/org/scijava/event/EventHandler.java | 2 +- src/main/java/org/scijava/event/EventHistory.java | 2 +- src/main/java/org/scijava/event/EventHistoryListener.java | 2 +- src/main/java/org/scijava/event/EventService.java | 2 +- src/main/java/org/scijava/event/EventSubscriber.java | 2 +- src/main/java/org/scijava/event/SciJavaEvent.java | 2 +- src/main/java/org/scijava/input/Accelerator.java | 2 +- src/main/java/org/scijava/input/DefaultInputService.java | 2 +- src/main/java/org/scijava/input/InputModifiers.java | 2 +- src/main/java/org/scijava/input/InputService.java | 2 +- src/main/java/org/scijava/input/KeyCode.java | 2 +- src/main/java/org/scijava/input/MouseCursor.java | 2 +- src/main/java/org/scijava/io/AbstractIOPlugin.java | 2 +- src/main/java/org/scijava/io/AbstractTypedIOService.java | 2 +- src/main/java/org/scijava/io/ByteArrayByteBank.java | 2 +- src/main/java/org/scijava/io/ByteBank.java | 2 +- src/main/java/org/scijava/io/DefaultIOService.java | 2 +- src/main/java/org/scijava/io/DefaultRecentFileService.java | 2 +- src/main/java/org/scijava/io/IOPlugin.java | 2 +- src/main/java/org/scijava/io/IOService.java | 2 +- src/main/java/org/scijava/io/RecentFileService.java | 2 +- src/main/java/org/scijava/io/TypedIOService.java | 2 +- src/main/java/org/scijava/io/console/OpenArgument.java | 2 +- src/main/java/org/scijava/io/event/DataOpenedEvent.java | 2 +- src/main/java/org/scijava/io/event/DataSavedEvent.java | 2 +- src/main/java/org/scijava/io/event/IOEvent.java | 2 +- src/main/java/org/scijava/io/handle/AbstractDataHandle.java | 2 +- .../java/org/scijava/io/handle/AbstractHigherOrderHandle.java | 2 +- .../org/scijava/io/handle/AbstractSeekableStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/AbstractStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/BytesHandle.java | 2 +- src/main/java/org/scijava/io/handle/DataHandle.java | 2 +- src/main/java/org/scijava/io/handle/DataHandleInputStream.java | 2 +- src/main/java/org/scijava/io/handle/DataHandleOutputStream.java | 2 +- src/main/java/org/scijava/io/handle/DataHandleService.java | 2 +- src/main/java/org/scijava/io/handle/DataHandles.java | 2 +- .../java/org/scijava/io/handle/DefaultDataHandleService.java | 2 +- src/main/java/org/scijava/io/handle/DummyHandle.java | 2 +- src/main/java/org/scijava/io/handle/FileHandle.java | 2 +- src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java | 2 +- src/main/java/org/scijava/io/handle/ResettableStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/SeekableStreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/StreamHandle.java | 2 +- src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java | 2 +- src/main/java/org/scijava/io/location/AbstractLocation.java | 2 +- .../java/org/scijava/io/location/AbstractLocationResolver.java | 2 +- .../java/org/scijava/io/location/AbstractRemoteLocation.java | 2 +- src/main/java/org/scijava/io/location/BrowsableLocation.java | 2 +- src/main/java/org/scijava/io/location/BytesLocation.java | 2 +- .../java/org/scijava/io/location/DefaultLocationService.java | 2 +- src/main/java/org/scijava/io/location/DummyLocation.java | 2 +- src/main/java/org/scijava/io/location/FileLocation.java | 2 +- src/main/java/org/scijava/io/location/FileLocationResolver.java | 2 +- src/main/java/org/scijava/io/location/Location.java | 2 +- src/main/java/org/scijava/io/location/LocationResolver.java | 2 +- src/main/java/org/scijava/io/location/LocationService.java | 2 +- src/main/java/org/scijava/io/location/RemoteLocation.java | 2 +- src/main/java/org/scijava/io/location/URILocation.java | 2 +- src/main/java/org/scijava/io/location/URLLocation.java | 2 +- src/main/java/org/scijava/io/nio/ByteBufferByteBank.java | 2 +- src/main/java/org/scijava/io/nio/DefaultNIOService.java | 2 +- src/main/java/org/scijava/io/nio/NIOService.java | 2 +- src/main/java/org/scijava/log/AbstractLogService.java | 2 +- src/main/java/org/scijava/log/CallingClassUtils.java | 2 +- src/main/java/org/scijava/log/DefaultLogger.java | 2 +- .../java/org/scijava/log/DefaultUncaughtExceptionHandler.java | 2 +- src/main/java/org/scijava/log/IgnoreAsCallingClass.java | 2 +- src/main/java/org/scijava/log/LogLevel.java | 2 +- src/main/java/org/scijava/log/LogListener.java | 2 +- src/main/java/org/scijava/log/LogMessage.java | 2 +- src/main/java/org/scijava/log/LogService.java | 2 +- src/main/java/org/scijava/log/LogSource.java | 2 +- src/main/java/org/scijava/log/Logged.java | 2 +- src/main/java/org/scijava/log/Logger.java | 2 +- src/main/java/org/scijava/log/StderrLogService.java | 2 +- src/main/java/org/scijava/main/DefaultMainService.java | 2 +- src/main/java/org/scijava/main/MainService.java | 2 +- src/main/java/org/scijava/main/console/MainArgument.java | 2 +- src/main/java/org/scijava/main/run/MainCodeRunner.java | 2 +- src/main/java/org/scijava/menu/AbstractMenuCreator.java | 2 +- src/main/java/org/scijava/menu/DefaultMenuService.java | 2 +- src/main/java/org/scijava/menu/MenuConstants.java | 2 +- src/main/java/org/scijava/menu/MenuCreator.java | 2 +- src/main/java/org/scijava/menu/MenuService.java | 2 +- src/main/java/org/scijava/menu/ShadowMenu.java | 2 +- src/main/java/org/scijava/menu/ShadowMenuIterator.java | 2 +- src/main/java/org/scijava/menu/event/MenuEvent.java | 2 +- src/main/java/org/scijava/menu/event/MenusAddedEvent.java | 2 +- src/main/java/org/scijava/menu/event/MenusRemovedEvent.java | 2 +- src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java | 2 +- src/main/java/org/scijava/module/AbstractModule.java | 2 +- src/main/java/org/scijava/module/AbstractModuleInfo.java | 2 +- src/main/java/org/scijava/module/AbstractModuleItem.java | 2 +- src/main/java/org/scijava/module/DefaultModuleService.java | 2 +- src/main/java/org/scijava/module/DefaultMutableModule.java | 2 +- src/main/java/org/scijava/module/DefaultMutableModuleInfo.java | 2 +- src/main/java/org/scijava/module/DefaultMutableModuleItem.java | 2 +- src/main/java/org/scijava/module/MethodCallException.java | 2 +- src/main/java/org/scijava/module/MethodRef.java | 2 +- src/main/java/org/scijava/module/Module.java | 2 +- src/main/java/org/scijava/module/ModuleCanceledException.java | 2 +- src/main/java/org/scijava/module/ModuleException.java | 2 +- src/main/java/org/scijava/module/ModuleIndex.java | 2 +- src/main/java/org/scijava/module/ModuleInfo.java | 2 +- src/main/java/org/scijava/module/ModuleItem.java | 2 +- src/main/java/org/scijava/module/ModuleRunner.java | 2 +- src/main/java/org/scijava/module/ModuleService.java | 2 +- src/main/java/org/scijava/module/MutableModule.java | 2 +- src/main/java/org/scijava/module/MutableModuleInfo.java | 2 +- src/main/java/org/scijava/module/MutableModuleItem.java | 2 +- src/main/java/org/scijava/module/event/ModuleCanceledEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleErroredEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleExecutedEvent.java | 2 +- .../java/org/scijava/module/event/ModuleExecutingEvent.java | 2 +- .../java/org/scijava/module/event/ModuleExecutionEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleFinishedEvent.java | 2 +- .../java/org/scijava/module/event/ModulePostprocessEvent.java | 2 +- .../java/org/scijava/module/event/ModulePreprocessEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleProcessEvent.java | 2 +- src/main/java/org/scijava/module/event/ModuleStartedEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesAddedEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesListEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesRemovedEvent.java | 2 +- src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java | 2 +- .../org/scijava/module/process/AbstractPostprocessorPlugin.java | 2 +- .../org/scijava/module/process/AbstractPreprocessorPlugin.java | 2 +- .../scijava/module/process/AbstractSingleInputPreprocessor.java | 2 +- .../org/scijava/module/process/CheckInputsPreprocessor.java | 2 +- .../java/org/scijava/module/process/DebugPostprocessor.java | 2 +- src/main/java/org/scijava/module/process/DebugPreprocessor.java | 2 +- .../org/scijava/module/process/DefaultValuePreprocessor.java | 2 +- .../java/org/scijava/module/process/GatewayPreprocessor.java | 2 +- src/main/java/org/scijava/module/process/InitPreprocessor.java | 2 +- .../java/org/scijava/module/process/LoadInputsPreprocessor.java | 2 +- .../java/org/scijava/module/process/LoggerPreprocessor.java | 2 +- .../java/org/scijava/module/process/ModulePostprocessor.java | 2 +- .../java/org/scijava/module/process/ModulePreprocessor.java | 2 +- src/main/java/org/scijava/module/process/ModuleProcessor.java | 2 +- .../java/org/scijava/module/process/PostprocessorPlugin.java | 2 +- .../java/org/scijava/module/process/PreprocessorPlugin.java | 2 +- .../java/org/scijava/module/process/SaveInputsPreprocessor.java | 2 +- .../java/org/scijava/module/process/ServicePreprocessor.java | 2 +- .../java/org/scijava/module/process/ValidityPreprocessor.java | 2 +- src/main/java/org/scijava/module/run/ModuleCodeRunner.java | 2 +- src/main/java/org/scijava/object/DefaultObjectService.java | 2 +- src/main/java/org/scijava/object/LazyObjects.java | 2 +- src/main/java/org/scijava/object/NamedObjectIndex.java | 2 +- src/main/java/org/scijava/object/ObjectIndex.java | 2 +- src/main/java/org/scijava/object/ObjectService.java | 2 +- src/main/java/org/scijava/object/SortedObjectIndex.java | 2 +- src/main/java/org/scijava/object/event/ListEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectCreatedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectDeletedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectModifiedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectsAddedEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectsListEvent.java | 2 +- src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java | 2 +- src/main/java/org/scijava/options/DefaultOptionsService.java | 2 +- src/main/java/org/scijava/options/OptionsPlugin.java | 2 +- src/main/java/org/scijava/options/OptionsService.java | 2 +- src/main/java/org/scijava/options/event/OptionsEvent.java | 2 +- src/main/java/org/scijava/parse/DefaultParseService.java | 2 +- src/main/java/org/scijava/parse/Item.java | 2 +- src/main/java/org/scijava/parse/Items.java | 2 +- src/main/java/org/scijava/parse/ParseService.java | 2 +- src/main/java/org/scijava/platform/AbstractPlatform.java | 2 +- src/main/java/org/scijava/platform/AppEventService.java | 2 +- src/main/java/org/scijava/platform/DefaultAppEventService.java | 2 +- src/main/java/org/scijava/platform/DefaultPlatform.java | 2 +- src/main/java/org/scijava/platform/DefaultPlatformService.java | 2 +- src/main/java/org/scijava/platform/Platform.java | 2 +- src/main/java/org/scijava/platform/PlatformService.java | 2 +- src/main/java/org/scijava/platform/event/AppAboutEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppFocusEvent.java | 2 +- .../java/org/scijava/platform/event/AppMenusCreatedEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java | 2 +- .../java/org/scijava/platform/event/AppPreferencesEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppPrintEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppQuitEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppReOpenEvent.java | 2 +- .../java/org/scijava/platform/event/AppScreenSleepEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppSleepEvent.java | 2 +- .../java/org/scijava/platform/event/AppSystemSleepEvent.java | 2 +- .../java/org/scijava/platform/event/AppUserSessionEvent.java | 2 +- src/main/java/org/scijava/platform/event/AppVisibleEvent.java | 2 +- src/main/java/org/scijava/platform/event/ApplicationEvent.java | 2 +- src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractHandlerService.java | 2 +- src/main/java/org/scijava/plugin/AbstractPTService.java | 2 +- src/main/java/org/scijava/plugin/AbstractRichPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractSingletonService.java | 2 +- src/main/java/org/scijava/plugin/AbstractTypedPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractTypedService.java | 2 +- src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java | 2 +- src/main/java/org/scijava/plugin/AbstractWrapperService.java | 2 +- src/main/java/org/scijava/plugin/Attr.java | 2 +- src/main/java/org/scijava/plugin/DefaultPluginFinder.java | 2 +- src/main/java/org/scijava/plugin/DefaultPluginService.java | 2 +- src/main/java/org/scijava/plugin/HandlerPlugin.java | 2 +- src/main/java/org/scijava/plugin/HandlerService.java | 2 +- src/main/java/org/scijava/plugin/HasPluginInfo.java | 2 +- src/main/java/org/scijava/plugin/Menu.java | 2 +- src/main/java/org/scijava/plugin/PTService.java | 2 +- src/main/java/org/scijava/plugin/Parameter.java | 2 +- src/main/java/org/scijava/plugin/Plugin.java | 2 +- src/main/java/org/scijava/plugin/PluginFinder.java | 2 +- src/main/java/org/scijava/plugin/PluginIndex.java | 2 +- src/main/java/org/scijava/plugin/PluginInfo.java | 2 +- src/main/java/org/scijava/plugin/PluginService.java | 2 +- src/main/java/org/scijava/plugin/RichPlugin.java | 2 +- src/main/java/org/scijava/plugin/SciJavaPlugin.java | 2 +- src/main/java/org/scijava/plugin/SingletonPlugin.java | 2 +- src/main/java/org/scijava/plugin/SingletonService.java | 2 +- src/main/java/org/scijava/plugin/SortablePlugin.java | 2 +- src/main/java/org/scijava/plugin/TypedPlugin.java | 2 +- src/main/java/org/scijava/plugin/TypedService.java | 2 +- src/main/java/org/scijava/plugin/WrapperPlugin.java | 2 +- src/main/java/org/scijava/plugin/WrapperService.java | 2 +- src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java | 2 +- src/main/java/org/scijava/plugin/event/PluginsListEvent.java | 2 +- src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java | 2 +- src/main/java/org/scijava/prefs/AbstractPrefService.java | 2 +- src/main/java/org/scijava/prefs/DefaultPrefService.java | 2 +- src/main/java/org/scijava/prefs/PrefService.java | 2 +- src/main/java/org/scijava/run/AbstractCodeRunner.java | 2 +- src/main/java/org/scijava/run/CodeRunner.java | 2 +- src/main/java/org/scijava/run/DefaultRunService.java | 2 +- src/main/java/org/scijava/run/RunService.java | 2 +- src/main/java/org/scijava/run/console/RunArgument.java | 2 +- src/main/java/org/scijava/script/AbstractAutoCompleter.java | 2 +- src/main/java/org/scijava/script/AbstractScriptContext.java | 2 +- src/main/java/org/scijava/script/AbstractScriptEngine.java | 2 +- src/main/java/org/scijava/script/AbstractScriptHeader.java | 2 +- src/main/java/org/scijava/script/AbstractScriptLanguage.java | 2 +- src/main/java/org/scijava/script/AdaptedScriptEngine.java | 2 +- src/main/java/org/scijava/script/AdaptedScriptLanguage.java | 2 +- src/main/java/org/scijava/script/AutoCompleter.java | 2 +- src/main/java/org/scijava/script/AutoCompletionResult.java | 2 +- src/main/java/org/scijava/script/CodeGenerator.java | 2 +- src/main/java/org/scijava/script/CodeGeneratorJava.java | 2 +- src/main/java/org/scijava/script/DefaultAutoCompleter.java | 2 +- .../java/org/scijava/script/DefaultScriptHeaderService.java | 2 +- src/main/java/org/scijava/script/DefaultScriptInterpreter.java | 2 +- src/main/java/org/scijava/script/DefaultScriptService.java | 2 +- src/main/java/org/scijava/script/InvocationObject.java | 2 +- src/main/java/org/scijava/script/ParameterObject.java | 2 +- src/main/java/org/scijava/script/ScriptCLI.java | 2 +- src/main/java/org/scijava/script/ScriptFinder.java | 2 +- src/main/java/org/scijava/script/ScriptHeader.java | 2 +- src/main/java/org/scijava/script/ScriptHeaderService.java | 2 +- src/main/java/org/scijava/script/ScriptInfo.java | 2 +- src/main/java/org/scijava/script/ScriptInterpreter.java | 2 +- src/main/java/org/scijava/script/ScriptLanguage.java | 2 +- src/main/java/org/scijava/script/ScriptLanguageIndex.java | 2 +- src/main/java/org/scijava/script/ScriptModule.java | 2 +- src/main/java/org/scijava/script/ScriptREPL.java | 2 +- src/main/java/org/scijava/script/ScriptService.java | 2 +- src/main/java/org/scijava/script/console/RunScriptArgument.java | 2 +- src/main/java/org/scijava/script/io/ScriptIOPlugin.java | 2 +- .../scijava/script/process/DefaultScriptProcessorService.java | 2 +- .../org/scijava/script/process/DirectiveScriptProcessor.java | 2 +- .../org/scijava/script/process/ParameterScriptProcessor.java | 2 +- src/main/java/org/scijava/script/process/ScriptCallback.java | 2 +- .../scijava/script/process/ScriptDirectiveScriptProcessor.java | 2 +- src/main/java/org/scijava/script/process/ScriptProcessor.java | 2 +- .../java/org/scijava/script/process/ScriptProcessorService.java | 2 +- .../java/org/scijava/script/process/ShebangScriptProcessor.java | 2 +- src/main/java/org/scijava/script/run/ScriptCodeRunner.java | 2 +- src/main/java/org/scijava/service/AbstractService.java | 2 +- src/main/java/org/scijava/service/SciJavaService.java | 2 +- src/main/java/org/scijava/service/Service.java | 2 +- src/main/java/org/scijava/service/ServiceHelper.java | 2 +- src/main/java/org/scijava/service/ServiceIndex.java | 2 +- .../java/org/scijava/service/event/ServicesLoadedEvent.java | 2 +- src/main/java/org/scijava/startup/DefaultStartupService.java | 2 +- src/main/java/org/scijava/startup/StartupService.java | 2 +- src/main/java/org/scijava/task/DefaultTask.java | 2 +- src/main/java/org/scijava/task/DefaultTaskService.java | 2 +- src/main/java/org/scijava/task/Task.java | 2 +- src/main/java/org/scijava/task/TaskService.java | 2 +- src/main/java/org/scijava/task/event/TaskEvent.java | 2 +- src/main/java/org/scijava/test/TestUtils.java | 2 +- src/main/java/org/scijava/text/AbstractTextFormat.java | 2 +- src/main/java/org/scijava/text/DefaultTextService.java | 2 +- src/main/java/org/scijava/text/TextFormat.java | 2 +- src/main/java/org/scijava/text/TextService.java | 2 +- src/main/java/org/scijava/text/io/DefaultTextIOService.java | 2 +- src/main/java/org/scijava/text/io/TextIOPlugin.java | 2 +- src/main/java/org/scijava/text/io/TextIOService.java | 2 +- src/main/java/org/scijava/thread/DefaultThreadService.java | 2 +- src/main/java/org/scijava/thread/ThreadService.java | 2 +- src/main/java/org/scijava/tool/AbstractTool.java | 2 +- src/main/java/org/scijava/tool/CustomDrawnTool.java | 2 +- src/main/java/org/scijava/tool/DefaultToolService.java | 2 +- src/main/java/org/scijava/tool/DummyTool.java | 2 +- src/main/java/org/scijava/tool/IconDrawer.java | 2 +- src/main/java/org/scijava/tool/IconService.java | 2 +- src/main/java/org/scijava/tool/Tool.java | 2 +- src/main/java/org/scijava/tool/ToolService.java | 2 +- src/main/java/org/scijava/tool/event/ToolActivatedEvent.java | 2 +- src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java | 2 +- src/main/java/org/scijava/tool/event/ToolEvent.java | 2 +- src/main/java/org/scijava/ui/ARGBPlane.java | 2 +- src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java | 2 +- src/main/java/org/scijava/ui/AbstractUIInputWidget.java | 2 +- src/main/java/org/scijava/ui/AbstractUserInterface.java | 2 +- src/main/java/org/scijava/ui/ApplicationFrame.java | 2 +- src/main/java/org/scijava/ui/Arrangeable.java | 2 +- src/main/java/org/scijava/ui/CloseConfirmable.java | 2 +- src/main/java/org/scijava/ui/DefaultUIService.java | 2 +- src/main/java/org/scijava/ui/Desktop.java | 2 +- src/main/java/org/scijava/ui/DialogPrompt.java | 2 +- src/main/java/org/scijava/ui/FileListPreprocessor.java | 2 +- src/main/java/org/scijava/ui/FilePreprocessor.java | 2 +- src/main/java/org/scijava/ui/StatusBar.java | 2 +- src/main/java/org/scijava/ui/SystemClipboard.java | 2 +- src/main/java/org/scijava/ui/ToolBar.java | 2 +- src/main/java/org/scijava/ui/UIPreprocessor.java | 2 +- src/main/java/org/scijava/ui/UIService.java | 2 +- src/main/java/org/scijava/ui/UserInterface.java | 2 +- src/main/java/org/scijava/ui/console/AbstractConsolePane.java | 2 +- src/main/java/org/scijava/ui/console/ConsolePane.java | 2 +- src/main/java/org/scijava/ui/console/HeadlessArgument.java | 2 +- src/main/java/org/scijava/ui/console/ShowUIArgument.java | 2 +- src/main/java/org/scijava/ui/console/UIArgument.java | 2 +- src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java | 2 +- .../java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java | 2 +- src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java | 2 +- src/main/java/org/scijava/ui/dnd/DragAndDropData.java | 2 +- src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/DragAndDropService.java | 2 +- src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/MIMEType.java | 2 +- .../java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java | 2 +- src/main/java/org/scijava/ui/dnd/event/DropEvent.java | 2 +- src/main/java/org/scijava/ui/event/UIEvent.java | 2 +- src/main/java/org/scijava/ui/event/UIShownEvent.java | 2 +- .../java/org/scijava/ui/headless/HeadlessDisplayViewer.java | 2 +- src/main/java/org/scijava/ui/headless/HeadlessUI.java | 2 +- src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java | 2 +- src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java | 2 +- src/main/java/org/scijava/ui/viewer/DisplayPanel.java | 2 +- src/main/java/org/scijava/ui/viewer/DisplayViewer.java | 2 +- src/main/java/org/scijava/ui/viewer/DisplayWindow.java | 2 +- .../org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java | 2 +- src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java | 2 +- src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java | 2 +- src/main/java/org/scijava/util/AbstractPrimitiveArray.java | 2 +- src/main/java/org/scijava/util/AppUtils.java | 2 +- src/main/java/org/scijava/util/ArrayUtils.java | 2 +- src/main/java/org/scijava/util/BoolArray.java | 2 +- src/main/java/org/scijava/util/ByteArray.java | 2 +- src/main/java/org/scijava/util/Bytes.java | 2 +- src/main/java/org/scijava/util/CharArray.java | 2 +- src/main/java/org/scijava/util/CheckSezpoz.java | 2 +- src/main/java/org/scijava/util/ClassUtils.java | 2 +- src/main/java/org/scijava/util/ColorRGB.java | 2 +- src/main/java/org/scijava/util/ColorRGBA.java | 2 +- src/main/java/org/scijava/util/Colors.java | 2 +- src/main/java/org/scijava/util/CombineAnnotations.java | 2 +- src/main/java/org/scijava/util/Combiner.java | 2 +- src/main/java/org/scijava/util/ConversionUtils.java | 2 +- src/main/java/org/scijava/util/DebugUtils.java | 2 +- src/main/java/org/scijava/util/DefaultTreeNode.java | 2 +- src/main/java/org/scijava/util/DigestUtils.java | 2 +- src/main/java/org/scijava/util/DoubleArray.java | 2 +- src/main/java/org/scijava/util/FileUtils.java | 2 +- src/main/java/org/scijava/util/FloatArray.java | 2 +- src/main/java/org/scijava/util/GenericUtils.java | 2 +- src/main/java/org/scijava/util/IntArray.java | 2 +- src/main/java/org/scijava/util/IntCoords.java | 2 +- src/main/java/org/scijava/util/IntRect.java | 2 +- src/main/java/org/scijava/util/IteratorPlus.java | 2 +- src/main/java/org/scijava/util/LastRecentlyUsed.java | 2 +- src/main/java/org/scijava/util/LineOutputStream.java | 2 +- src/main/java/org/scijava/util/ListUtils.java | 2 +- src/main/java/org/scijava/util/LongArray.java | 2 +- src/main/java/org/scijava/util/Manifest.java | 2 +- src/main/java/org/scijava/util/MersenneTwisterFast.java | 2 +- src/main/java/org/scijava/util/MetaInfCombiner.java | 2 +- src/main/java/org/scijava/util/MirrorWebsite.java | 2 +- src/main/java/org/scijava/util/MiscUtils.java | 2 +- src/main/java/org/scijava/util/NumberUtils.java | 2 +- src/main/java/org/scijava/util/ObjectArray.java | 2 +- src/main/java/org/scijava/util/POM.java | 2 +- src/main/java/org/scijava/util/PlatformUtils.java | 2 +- src/main/java/org/scijava/util/Prefs.java | 2 +- src/main/java/org/scijava/util/PrimitiveArray.java | 2 +- src/main/java/org/scijava/util/ProcessUtils.java | 2 +- src/main/java/org/scijava/util/PropertiesHelper.java | 2 +- src/main/java/org/scijava/util/Query.java | 2 +- src/main/java/org/scijava/util/ReadInto.java | 2 +- src/main/java/org/scijava/util/RealCoords.java | 2 +- src/main/java/org/scijava/util/RealRect.java | 2 +- src/main/java/org/scijava/util/ReflectException.java | 2 +- src/main/java/org/scijava/util/ReflectedUniverse.java | 2 +- src/main/java/org/scijava/util/ServiceCombiner.java | 2 +- src/main/java/org/scijava/util/ShortArray.java | 2 +- src/main/java/org/scijava/util/Sizable.java | 2 +- src/main/java/org/scijava/util/SizableArrayList.java | 2 +- src/main/java/org/scijava/util/StringMaker.java | 2 +- src/main/java/org/scijava/util/StringUtils.java | 2 +- src/main/java/org/scijava/util/Timing.java | 2 +- src/main/java/org/scijava/util/TreeNode.java | 2 +- src/main/java/org/scijava/util/TunePlayer.java | 2 +- src/main/java/org/scijava/util/Types.java | 2 +- src/main/java/org/scijava/util/UnitUtils.java | 2 +- src/main/java/org/scijava/util/VersionUtils.java | 2 +- src/main/java/org/scijava/util/XML.java | 2 +- src/main/java/org/scijava/welcome/DefaultWelcomeService.java | 2 +- src/main/java/org/scijava/welcome/WelcomeService.java | 2 +- src/main/java/org/scijava/welcome/event/WelcomeEvent.java | 2 +- src/main/java/org/scijava/widget/AbstractInputHarvester.java | 2 +- src/main/java/org/scijava/widget/AbstractInputPanel.java | 2 +- src/main/java/org/scijava/widget/AbstractInputWidget.java | 2 +- src/main/java/org/scijava/widget/Button.java | 2 +- src/main/java/org/scijava/widget/ButtonWidget.java | 2 +- src/main/java/org/scijava/widget/ChoiceWidget.java | 2 +- src/main/java/org/scijava/widget/ColorWidget.java | 2 +- src/main/java/org/scijava/widget/DateWidget.java | 2 +- src/main/java/org/scijava/widget/DefaultWidgetModel.java | 2 +- src/main/java/org/scijava/widget/DefaultWidgetService.java | 2 +- src/main/java/org/scijava/widget/FileListWidget.java | 2 +- src/main/java/org/scijava/widget/FileWidget.java | 2 +- src/main/java/org/scijava/widget/InputHarvester.java | 2 +- src/main/java/org/scijava/widget/InputPanel.java | 2 +- src/main/java/org/scijava/widget/InputWidget.java | 2 +- src/main/java/org/scijava/widget/MessageWidget.java | 2 +- src/main/java/org/scijava/widget/NumberWidget.java | 2 +- src/main/java/org/scijava/widget/ObjectWidget.java | 2 +- src/main/java/org/scijava/widget/TextWidget.java | 2 +- src/main/java/org/scijava/widget/ToggleWidget.java | 2 +- src/main/java/org/scijava/widget/UIComponent.java | 2 +- src/main/java/org/scijava/widget/WidgetModel.java | 2 +- src/main/java/org/scijava/widget/WidgetService.java | 2 +- src/main/java/org/scijava/widget/WidgetStyle.java | 2 +- src/test/java/org/scijava/ContextCreationTest.java | 2 +- src/test/java/org/scijava/ContextDisposalTest.java | 2 +- src/test/java/org/scijava/ContextInjectionTest.java | 2 +- src/test/java/org/scijava/SciJavaTest.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedA.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedB.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedC.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedD.java | 2 +- src/test/java/org/scijava/annotations/AnnotatedInnerClass.java | 2 +- src/test/java/org/scijava/annotations/Complex.java | 2 +- src/test/java/org/scijava/annotations/DirectoryIndexerTest.java | 2 +- src/test/java/org/scijava/annotations/EclipseHelperTest.java | 2 +- src/test/java/org/scijava/annotations/Fruit.java | 2 +- src/test/java/org/scijava/annotations/LegacyTest.java | 2 +- src/test/java/org/scijava/annotations/Simple.java | 2 +- src/test/java/org/scijava/app/StatusServiceTest.java | 2 +- .../java/org/scijava/command/CommandArrayConverterTest.java | 2 +- src/test/java/org/scijava/command/CommandInfoTest.java | 2 +- src/test/java/org/scijava/command/CommandModuleTest.java | 2 +- src/test/java/org/scijava/command/CommandServiceTest.java | 2 +- src/test/java/org/scijava/command/InputsTest.java | 2 +- src/test/java/org/scijava/command/InvalidCommandTest.java | 2 +- .../java/org/scijava/command/run/CommandCodeRunnerTest.java | 2 +- src/test/java/org/scijava/console/ConsoleServiceTest.java | 2 +- .../java/org/scijava/console/SystemPropertyArgumentTest.java | 2 +- .../java/org/scijava/convert/AbstractNumberConverterTests.java | 2 +- .../java/org/scijava/convert/ArrayToStringConverterTest.java | 2 +- .../scijava/convert/BigIntegerToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToBigIntegerConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToDoubleConverterTest.java | 2 +- src/test/java/org/scijava/convert/ByteToFloatConverterTest.java | 2 +- .../java/org/scijava/convert/ByteToIntegerConverterTest.java | 2 +- src/test/java/org/scijava/convert/ByteToLongConverterTest.java | 2 +- src/test/java/org/scijava/convert/ByteToShortConverterTest.java | 2 +- src/test/java/org/scijava/convert/ConvertServiceTest.java | 2 +- src/test/java/org/scijava/convert/ConverterTest.java | 2 +- src/test/java/org/scijava/convert/DefaultConverterTest.java | 2 +- src/test/java/org/scijava/convert/DelegateConverterTest.java | 2 +- .../org/scijava/convert/DoubleToBigDecimalConverterTest.java | 2 +- src/test/java/org/scijava/convert/FileListConverterTest.java | 2 +- src/test/java/org/scijava/convert/FileToPathConversionTest.java | 2 +- .../org/scijava/convert/FloatToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/FloatToDoubleConverterTest.java | 2 +- .../org/scijava/convert/IntegerToBigDecimalConverterTest.java | 2 +- .../org/scijava/convert/IntegerToBigIntegerConverterTest.java | 2 +- .../java/org/scijava/convert/IntegerToDoubleConverterTest.java | 2 +- .../java/org/scijava/convert/IntegerToLongConverterTest.java | 2 +- .../java/org/scijava/convert/LongToBigDecimalConverterTest.java | 2 +- .../java/org/scijava/convert/LongToBigIntegerConverterTest.java | 2 +- .../org/scijava/convert/ShortToBigDecimalConverterTest.java | 2 +- .../org/scijava/convert/ShortToBigIntegerConverterTest.java | 2 +- .../java/org/scijava/convert/ShortToDoubleConverterTest.java | 2 +- .../java/org/scijava/convert/ShortToFloatConverterTest.java | 2 +- .../java/org/scijava/convert/ShortToIntegerConverterTest.java | 2 +- src/test/java/org/scijava/convert/ShortToLongConverterTest.java | 2 +- .../java/org/scijava/convert/StringToArrayConverterTest.java | 2 +- .../java/org/scijava/convert/StringToNumberConverterTest.java | 2 +- src/test/java/org/scijava/display/DisplayTest.java | 2 +- src/test/java/org/scijava/download/DownloadServiceTest.java | 2 +- src/test/java/org/scijava/event/EventServiceTest.java | 2 +- src/test/java/org/scijava/io/ByteArrayByteBankTest.java | 2 +- src/test/java/org/scijava/io/ByteBankTest.java | 2 +- src/test/java/org/scijava/io/IOServiceTest.java | 2 +- src/test/java/org/scijava/io/TypedIOServiceTest.java | 2 +- src/test/java/org/scijava/io/event/DataEventTest.java | 2 +- src/test/java/org/scijava/io/handle/BytesHandleTest.java | 2 +- .../java/org/scijava/io/handle/DataHandleEdgeCaseTests.java | 2 +- src/test/java/org/scijava/io/handle/DataHandleTest.java | 2 +- src/test/java/org/scijava/io/handle/DataHandlesTest.java | 2 +- src/test/java/org/scijava/io/handle/FileHandleTest.java | 2 +- .../org/scijava/io/handle/ReadBufferDataHandleMockTest.java | 2 +- .../java/org/scijava/io/handle/ReadBufferDataHandleTest.java | 2 +- .../java/org/scijava/io/handle/WriteBufferDataHandleTest.java | 2 +- src/test/java/org/scijava/io/location/BytesLocationTest.java | 2 +- .../java/org/scijava/io/location/FileLocationResolverTest.java | 2 +- src/test/java/org/scijava/io/location/FileLocationTest.java | 2 +- src/test/java/org/scijava/io/location/LocationServiceTest.java | 2 +- src/test/java/org/scijava/io/location/URILocationTest.java | 2 +- src/test/java/org/scijava/io/location/URLLocationTest.java | 2 +- src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java | 2 +- src/test/java/org/scijava/log/CallingClassUtilsTest.java | 2 +- src/test/java/org/scijava/log/DefaultLoggerTest.java | 2 +- src/test/java/org/scijava/log/LogMessageTest.java | 2 +- src/test/java/org/scijava/log/LogServiceTest.java | 2 +- src/test/java/org/scijava/log/LogSourceTest.java | 2 +- src/test/java/org/scijava/log/StderrLogServiceTest.java | 2 +- src/test/java/org/scijava/log/TestLogListener.java | 2 +- src/test/java/org/scijava/main/MainServiceTest.java | 2 +- src/test/java/org/scijava/main/run/MainCodeRunnerTest.java | 2 +- src/test/java/org/scijava/menu/MenuServiceTest.java | 2 +- src/test/java/org/scijava/menu/ShadowMenuTest.java | 2 +- src/test/java/org/scijava/module/ModuleServiceTest.java | 2 +- .../java/org/scijava/module/event/ModuleErroredEventTest.java | 2 +- .../java/org/scijava/module/process/LoggerPreprocessorTest.java | 2 +- src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java | 2 +- src/test/java/org/scijava/object/NamedObjectIndexTest.java | 2 +- src/test/java/org/scijava/object/ObjectIndexTest.java | 2 +- src/test/java/org/scijava/object/ObjectServiceTest.java | 2 +- src/test/java/org/scijava/object/SortedObjectIndexTest.java | 2 +- src/test/java/org/scijava/options/OptionsTest.java | 2 +- src/test/java/org/scijava/parse/ParseServiceTest.java | 2 +- src/test/java/org/scijava/plugin/PluginFinderTest.java | 2 +- src/test/java/org/scijava/plugin/PluginIndexTest.java | 2 +- src/test/java/org/scijava/plugin/PluginInfoTest.java | 2 +- src/test/java/org/scijava/plugin/SingletonServiceTest.java | 2 +- src/test/java/org/scijava/prefs/PrefServiceTest.java | 2 +- src/test/java/org/scijava/run/RunServiceTest.java | 2 +- .../java/org/scijava/script/AbstractScriptLanguageTest.java | 2 +- src/test/java/org/scijava/script/ScriptEngineTest.java | 2 +- src/test/java/org/scijava/script/ScriptFinderTest.java | 2 +- src/test/java/org/scijava/script/ScriptInfoTest.java | 2 +- src/test/java/org/scijava/script/ScriptServiceTest.java | 2 +- .../scijava/script/process/ParameterScriptProcessorTest.java | 2 +- src/test/java/org/scijava/service/ServiceIndexTest.java | 2 +- src/test/java/org/scijava/task/TaskEventTest.java | 2 +- src/test/java/org/scijava/task/TaskServiceTest.java | 2 +- src/test/java/org/scijava/test/AbstractSciJavaTest.java | 2 +- src/test/java/org/scijava/test/TestUtilsTest.java | 2 +- src/test/java/org/scijava/text/TextServiceTest.java | 2 +- src/test/java/org/scijava/thread/ThreadServiceTest.java | 2 +- src/test/java/org/scijava/ui/UIServiceTest.java | 2 +- src/test/java/org/scijava/util/AppUtilsTest.java | 2 +- src/test/java/org/scijava/util/ArrayUtilsTest.java | 2 +- src/test/java/org/scijava/util/BoolArrayTest.java | 2 +- src/test/java/org/scijava/util/ByteArrayTest.java | 2 +- src/test/java/org/scijava/util/CharArrayTest.java | 2 +- src/test/java/org/scijava/util/ClassUtilsTest.java | 2 +- src/test/java/org/scijava/util/ColorRGBTest.java | 2 +- src/test/java/org/scijava/util/ConversionUtilsTest.java | 2 +- src/test/java/org/scijava/util/DigestUtilsTest.java | 2 +- src/test/java/org/scijava/util/DoubleArrayTest.java | 2 +- src/test/java/org/scijava/util/FileUtilsTest.java | 2 +- src/test/java/org/scijava/util/FloatArrayTest.java | 2 +- src/test/java/org/scijava/util/GenericArrayTypesTest.java | 2 +- src/test/java/org/scijava/util/IntArrayTest.java | 2 +- src/test/java/org/scijava/util/LastRecentlyUsedTest.java | 2 +- src/test/java/org/scijava/util/LongArrayTest.java | 2 +- src/test/java/org/scijava/util/NumberUtilsTest.java | 2 +- src/test/java/org/scijava/util/ObjectArrayTest.java | 2 +- src/test/java/org/scijava/util/POMTest.java | 2 +- src/test/java/org/scijava/util/PrimitiveArrayTest.java | 2 +- src/test/java/org/scijava/util/ProcessUtilsTest.java | 2 +- src/test/java/org/scijava/util/PropertiesHelperTest.java | 2 +- src/test/java/org/scijava/util/ShortArrayTest.java | 2 +- src/test/java/org/scijava/util/StringUtilsTest.java | 2 +- src/test/java/org/scijava/util/TypesTest.java | 2 +- src/test/java/org/scijava/util/UnitUtilsTest.java | 2 +- src/test/java/org/scijava/util/VersionUtilsTest.java | 2 +- src/test/java/org/scijava/widget/WidgetStyleTest.java | 2 +- 757 files changed, 757 insertions(+), 757 deletions(-) diff --git a/src/it/apt-test/pom.xml b/src/it/apt-test/pom.xml index 0ce0ce63c..12f8b4d0a 100644 --- a/src/it/apt-test/pom.xml +++ b/src/it/apt-test/pom.xml @@ -3,7 +3,7 @@ #%L SciJava Common shared library for SciJava software. %% - Copyright (C) 2009 - 2024 SciJava developers. + Copyright (C) 2009 - 2025 SciJava developers. %% Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/setup.bsh b/src/it/apt-test/setup.bsh index fed9016f3..2f053786a 100644 --- a/src/it/apt-test/setup.bsh +++ b/src/it/apt-test/setup.bsh @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java b/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java index 86df895da..5301e1794 100644 --- a/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java +++ b/src/it/apt-test/src/main/java/org/scijava/annotation/its/Annotated.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java b/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java index 451e17e42..4643aa288 100644 --- a/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java +++ b/src/it/apt-test/src/main/java/org/scijava/annotation/its/CustomAnnotation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/apt-test/verify.bsh b/src/it/apt-test/verify.bsh index a91b6f012..bc6a12a90 100644 --- a/src/it/apt-test/verify.bsh +++ b/src/it/apt-test/verify.bsh @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/it/settings.xml b/src/it/settings.xml index 69b227865..02cd6280f 100644 --- a/src/it/settings.xml +++ b/src/it/settings.xml @@ -3,7 +3,7 @@ #%L SciJava Common shared library for SciJava software. %% - Copyright (C) 2009 - 2024 SciJava developers. + Copyright (C) 2009 - 2025 SciJava developers. %% Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractBasicDetails.java b/src/main/java/org/scijava/AbstractBasicDetails.java index cea966d7b..f05f40249 100644 --- a/src/main/java/org/scijava/AbstractBasicDetails.java +++ b/src/main/java/org/scijava/AbstractBasicDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractContextual.java b/src/main/java/org/scijava/AbstractContextual.java index 23a9076ba..0c76ae641 100644 --- a/src/main/java/org/scijava/AbstractContextual.java +++ b/src/main/java/org/scijava/AbstractContextual.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractGateway.java b/src/main/java/org/scijava/AbstractGateway.java index d6ee9b0fb..944c2dff0 100644 --- a/src/main/java/org/scijava/AbstractGateway.java +++ b/src/main/java/org/scijava/AbstractGateway.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/AbstractUIDetails.java b/src/main/java/org/scijava/AbstractUIDetails.java index 7fd19bfdd..3590c19e3 100644 --- a/src/main/java/org/scijava/AbstractUIDetails.java +++ b/src/main/java/org/scijava/AbstractUIDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/BasicDetails.java b/src/main/java/org/scijava/BasicDetails.java index de28e93bd..d2288061b 100644 --- a/src/main/java/org/scijava/BasicDetails.java +++ b/src/main/java/org/scijava/BasicDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Cancelable.java b/src/main/java/org/scijava/Cancelable.java index 4b2122560..0c36b0066 100644 --- a/src/main/java/org/scijava/Cancelable.java +++ b/src/main/java/org/scijava/Cancelable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Context.java b/src/main/java/org/scijava/Context.java index 561b53fc5..50014ad17 100644 --- a/src/main/java/org/scijava/Context.java +++ b/src/main/java/org/scijava/Context.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Contextual.java b/src/main/java/org/scijava/Contextual.java index 9b41674da..4d83ca900 100644 --- a/src/main/java/org/scijava/Contextual.java +++ b/src/main/java/org/scijava/Contextual.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Disposable.java b/src/main/java/org/scijava/Disposable.java index 7b3db0a86..f3ac3548b 100644 --- a/src/main/java/org/scijava/Disposable.java +++ b/src/main/java/org/scijava/Disposable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Gateway.java b/src/main/java/org/scijava/Gateway.java index fdb8a624d..9222f058c 100644 --- a/src/main/java/org/scijava/Gateway.java +++ b/src/main/java/org/scijava/Gateway.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Identifiable.java b/src/main/java/org/scijava/Identifiable.java index 5e1063ee9..a1be1c4e7 100644 --- a/src/main/java/org/scijava/Identifiable.java +++ b/src/main/java/org/scijava/Identifiable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Initializable.java b/src/main/java/org/scijava/Initializable.java index 972a192c9..bd7de998f 100644 --- a/src/main/java/org/scijava/Initializable.java +++ b/src/main/java/org/scijava/Initializable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Instantiable.java b/src/main/java/org/scijava/Instantiable.java index f5dbf14dd..7f1d82077 100644 --- a/src/main/java/org/scijava/Instantiable.java +++ b/src/main/java/org/scijava/Instantiable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/InstantiableException.java b/src/main/java/org/scijava/InstantiableException.java index 087f2321c..e2df38650 100644 --- a/src/main/java/org/scijava/InstantiableException.java +++ b/src/main/java/org/scijava/InstantiableException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ItemIO.java b/src/main/java/org/scijava/ItemIO.java index afcfff5be..c4198b74b 100644 --- a/src/main/java/org/scijava/ItemIO.java +++ b/src/main/java/org/scijava/ItemIO.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ItemVisibility.java b/src/main/java/org/scijava/ItemVisibility.java index d1d025569..47b0e9276 100644 --- a/src/main/java/org/scijava/ItemVisibility.java +++ b/src/main/java/org/scijava/ItemVisibility.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Locatable.java b/src/main/java/org/scijava/Locatable.java index 1cba5940a..5184b2552 100644 --- a/src/main/java/org/scijava/Locatable.java +++ b/src/main/java/org/scijava/Locatable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/MenuEntry.java b/src/main/java/org/scijava/MenuEntry.java index 7cecc891c..d436963fc 100644 --- a/src/main/java/org/scijava/MenuEntry.java +++ b/src/main/java/org/scijava/MenuEntry.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/MenuPath.java b/src/main/java/org/scijava/MenuPath.java index c81406db5..941c4a860 100644 --- a/src/main/java/org/scijava/MenuPath.java +++ b/src/main/java/org/scijava/MenuPath.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Named.java b/src/main/java/org/scijava/Named.java index ce2a9c689..bdb669e16 100644 --- a/src/main/java/org/scijava/Named.java +++ b/src/main/java/org/scijava/Named.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/NoSuchServiceException.java b/src/main/java/org/scijava/NoSuchServiceException.java index 412ac0e67..4f25b47d3 100644 --- a/src/main/java/org/scijava/NoSuchServiceException.java +++ b/src/main/java/org/scijava/NoSuchServiceException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/NullContextException.java b/src/main/java/org/scijava/NullContextException.java index 58f5862fb..32eca3f18 100644 --- a/src/main/java/org/scijava/NullContextException.java +++ b/src/main/java/org/scijava/NullContextException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Optional.java b/src/main/java/org/scijava/Optional.java index 04d28e792..34b10025a 100644 --- a/src/main/java/org/scijava/Optional.java +++ b/src/main/java/org/scijava/Optional.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Prioritized.java b/src/main/java/org/scijava/Prioritized.java index 4031ab296..8ecc6c528 100644 --- a/src/main/java/org/scijava/Prioritized.java +++ b/src/main/java/org/scijava/Prioritized.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Priority.java b/src/main/java/org/scijava/Priority.java index 7b579848b..e2fbddfd0 100644 --- a/src/main/java/org/scijava/Priority.java +++ b/src/main/java/org/scijava/Priority.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/SciJava.java b/src/main/java/org/scijava/SciJava.java index a95841ce0..90a3be54c 100644 --- a/src/main/java/org/scijava/SciJava.java +++ b/src/main/java/org/scijava/SciJava.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Typed.java b/src/main/java/org/scijava/Typed.java index 93d9c6339..552d1fd00 100644 --- a/src/main/java/org/scijava/Typed.java +++ b/src/main/java/org/scijava/Typed.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/UIDetails.java b/src/main/java/org/scijava/UIDetails.java index c20e67efb..896c6bb18 100644 --- a/src/main/java/org/scijava/UIDetails.java +++ b/src/main/java/org/scijava/UIDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Validated.java b/src/main/java/org/scijava/Validated.java index 9873e589b..4fabe278a 100644 --- a/src/main/java/org/scijava/Validated.java +++ b/src/main/java/org/scijava/Validated.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ValidityProblem.java b/src/main/java/org/scijava/ValidityProblem.java index 8efd392d4..b95d1e02b 100644 --- a/src/main/java/org/scijava/ValidityProblem.java +++ b/src/main/java/org/scijava/ValidityProblem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/Versioned.java b/src/main/java/org/scijava/Versioned.java index c146f41ed..eb5c0cda5 100644 --- a/src/main/java/org/scijava/Versioned.java +++ b/src/main/java/org/scijava/Versioned.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AbstractIndexWriter.java b/src/main/java/org/scijava/annotations/AbstractIndexWriter.java index 12f29e5fc..730739ca6 100644 --- a/src/main/java/org/scijava/annotations/AbstractIndexWriter.java +++ b/src/main/java/org/scijava/annotations/AbstractIndexWriter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AnnotationCombiner.java b/src/main/java/org/scijava/annotations/AnnotationCombiner.java index 7588b762b..33338727a 100644 --- a/src/main/java/org/scijava/annotations/AnnotationCombiner.java +++ b/src/main/java/org/scijava/annotations/AnnotationCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/AnnotationProcessor.java b/src/main/java/org/scijava/annotations/AnnotationProcessor.java index 8e4e1fc65..e9acebd7c 100644 --- a/src/main/java/org/scijava/annotations/AnnotationProcessor.java +++ b/src/main/java/org/scijava/annotations/AnnotationProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java b/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java index 10682ca6a..98ec12da7 100644 --- a/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java +++ b/src/main/java/org/scijava/annotations/ByteCodeAnalyzer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/DirectoryIndexer.java b/src/main/java/org/scijava/annotations/DirectoryIndexer.java index ab0024069..1f52f9565 100644 --- a/src/main/java/org/scijava/annotations/DirectoryIndexer.java +++ b/src/main/java/org/scijava/annotations/DirectoryIndexer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/EclipseHelper.java b/src/main/java/org/scijava/annotations/EclipseHelper.java index 0d4765e9e..07e690a01 100644 --- a/src/main/java/org/scijava/annotations/EclipseHelper.java +++ b/src/main/java/org/scijava/annotations/EclipseHelper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/Index.java b/src/main/java/org/scijava/annotations/Index.java index a7a760df2..dd56ab83e 100644 --- a/src/main/java/org/scijava/annotations/Index.java +++ b/src/main/java/org/scijava/annotations/Index.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/IndexItem.java b/src/main/java/org/scijava/annotations/IndexItem.java index dcefa9f88..67aab711f 100644 --- a/src/main/java/org/scijava/annotations/IndexItem.java +++ b/src/main/java/org/scijava/annotations/IndexItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/IndexReader.java b/src/main/java/org/scijava/annotations/IndexReader.java index 74dd5c65d..894874238 100644 --- a/src/main/java/org/scijava/annotations/IndexReader.java +++ b/src/main/java/org/scijava/annotations/IndexReader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/Indexable.java b/src/main/java/org/scijava/annotations/Indexable.java index f1c386bcc..deb8f7d65 100644 --- a/src/main/java/org/scijava/annotations/Indexable.java +++ b/src/main/java/org/scijava/annotations/Indexable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/annotations/legacy/LegacyReader.java b/src/main/java/org/scijava/annotations/legacy/LegacyReader.java index ce6619f24..5b3d0d129 100644 --- a/src/main/java/org/scijava/annotations/legacy/LegacyReader.java +++ b/src/main/java/org/scijava/annotations/legacy/LegacyReader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/AbstractApp.java b/src/main/java/org/scijava/app/AbstractApp.java index 96b62626a..eaa37331d 100644 --- a/src/main/java/org/scijava/app/AbstractApp.java +++ b/src/main/java/org/scijava/app/AbstractApp.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/App.java b/src/main/java/org/scijava/app/App.java index a18f8366e..bf4bf0721 100644 --- a/src/main/java/org/scijava/app/App.java +++ b/src/main/java/org/scijava/app/App.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/AppService.java b/src/main/java/org/scijava/app/AppService.java index c6ec110b6..582860a36 100644 --- a/src/main/java/org/scijava/app/AppService.java +++ b/src/main/java/org/scijava/app/AppService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/DefaultAppService.java b/src/main/java/org/scijava/app/DefaultAppService.java index 2906b72bb..8a97162b6 100644 --- a/src/main/java/org/scijava/app/DefaultAppService.java +++ b/src/main/java/org/scijava/app/DefaultAppService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/DefaultStatusService.java b/src/main/java/org/scijava/app/DefaultStatusService.java index f93bbba71..38e3e555d 100644 --- a/src/main/java/org/scijava/app/DefaultStatusService.java +++ b/src/main/java/org/scijava/app/DefaultStatusService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/SciJavaApp.java b/src/main/java/org/scijava/app/SciJavaApp.java index 4af7d69c5..067184141 100644 --- a/src/main/java/org/scijava/app/SciJavaApp.java +++ b/src/main/java/org/scijava/app/SciJavaApp.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/StatusService.java b/src/main/java/org/scijava/app/StatusService.java index 3a28d4a52..7896b9b4a 100644 --- a/src/main/java/org/scijava/app/StatusService.java +++ b/src/main/java/org/scijava/app/StatusService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/app/event/StatusEvent.java b/src/main/java/org/scijava/app/event/StatusEvent.java index cabc032f8..d1c055557 100644 --- a/src/main/java/org/scijava/app/event/StatusEvent.java +++ b/src/main/java/org/scijava/app/event/StatusEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/cache/CacheService.java b/src/main/java/org/scijava/cache/CacheService.java index afc2a4a6e..aaa51c43d 100644 --- a/src/main/java/org/scijava/cache/CacheService.java +++ b/src/main/java/org/scijava/cache/CacheService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/cache/DefaultCacheService.java b/src/main/java/org/scijava/cache/DefaultCacheService.java index 4fddf6734..ffba4ebb4 100644 --- a/src/main/java/org/scijava/cache/DefaultCacheService.java +++ b/src/main/java/org/scijava/cache/DefaultCacheService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Command.java b/src/main/java/org/scijava/command/Command.java index 456736f68..3e99f2d3f 100644 --- a/src/main/java/org/scijava/command/Command.java +++ b/src/main/java/org/scijava/command/Command.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandInfo.java b/src/main/java/org/scijava/command/CommandInfo.java index 78913df7a..f0b2bd34c 100644 --- a/src/main/java/org/scijava/command/CommandInfo.java +++ b/src/main/java/org/scijava/command/CommandInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandModule.java b/src/main/java/org/scijava/command/CommandModule.java index 0d8201e18..bef02fbd5 100644 --- a/src/main/java/org/scijava/command/CommandModule.java +++ b/src/main/java/org/scijava/command/CommandModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandModuleItem.java b/src/main/java/org/scijava/command/CommandModuleItem.java index ec30d678a..b9e602de5 100644 --- a/src/main/java/org/scijava/command/CommandModuleItem.java +++ b/src/main/java/org/scijava/command/CommandModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/CommandService.java b/src/main/java/org/scijava/command/CommandService.java index 6d1495ebb..502113a69 100644 --- a/src/main/java/org/scijava/command/CommandService.java +++ b/src/main/java/org/scijava/command/CommandService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/ContextCommand.java b/src/main/java/org/scijava/command/ContextCommand.java index 3588dffac..ae9e3830e 100644 --- a/src/main/java/org/scijava/command/ContextCommand.java +++ b/src/main/java/org/scijava/command/ContextCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DefaultCommandService.java b/src/main/java/org/scijava/command/DefaultCommandService.java index 00275c0c1..f1d59a2b0 100644 --- a/src/main/java/org/scijava/command/DefaultCommandService.java +++ b/src/main/java/org/scijava/command/DefaultCommandService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DynamicCommand.java b/src/main/java/org/scijava/command/DynamicCommand.java index 8fccd9f20..5d165192d 100644 --- a/src/main/java/org/scijava/command/DynamicCommand.java +++ b/src/main/java/org/scijava/command/DynamicCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/DynamicCommandInfo.java b/src/main/java/org/scijava/command/DynamicCommandInfo.java index 9d85a1235..738521744 100644 --- a/src/main/java/org/scijava/command/DynamicCommandInfo.java +++ b/src/main/java/org/scijava/command/DynamicCommandInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Inputs.java b/src/main/java/org/scijava/command/Inputs.java index 18272bbbb..a97d282f2 100644 --- a/src/main/java/org/scijava/command/Inputs.java +++ b/src/main/java/org/scijava/command/Inputs.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Interactive.java b/src/main/java/org/scijava/command/Interactive.java index b1f3f999d..6f4d93375 100644 --- a/src/main/java/org/scijava/command/Interactive.java +++ b/src/main/java/org/scijava/command/Interactive.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/InteractiveCommand.java b/src/main/java/org/scijava/command/InteractiveCommand.java index 49925091a..1edf9a4b3 100644 --- a/src/main/java/org/scijava/command/InteractiveCommand.java +++ b/src/main/java/org/scijava/command/InteractiveCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/ModuleCommand.java b/src/main/java/org/scijava/command/ModuleCommand.java index ac5b780b7..2a2bb9469 100644 --- a/src/main/java/org/scijava/command/ModuleCommand.java +++ b/src/main/java/org/scijava/command/ModuleCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/Previewable.java b/src/main/java/org/scijava/command/Previewable.java index da9308f5a..330d8472c 100644 --- a/src/main/java/org/scijava/command/Previewable.java +++ b/src/main/java/org/scijava/command/Previewable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/UnimplementedCommand.java b/src/main/java/org/scijava/command/UnimplementedCommand.java index eb8804716..763d324cf 100644 --- a/src/main/java/org/scijava/command/UnimplementedCommand.java +++ b/src/main/java/org/scijava/command/UnimplementedCommand.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/console/RunArgument.java b/src/main/java/org/scijava/command/console/RunArgument.java index 86ffa6df7..e5dac33f2 100644 --- a/src/main/java/org/scijava/command/console/RunArgument.java +++ b/src/main/java/org/scijava/command/console/RunArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/command/run/CommandCodeRunner.java b/src/main/java/org/scijava/command/run/CommandCodeRunner.java index 5b843323e..d823f05f9 100644 --- a/src/main/java/org/scijava/command/run/CommandCodeRunner.java +++ b/src/main/java/org/scijava/command/run/CommandCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/AbstractConsoleArgument.java b/src/main/java/org/scijava/console/AbstractConsoleArgument.java index 811dabf8c..eff1cf185 100644 --- a/src/main/java/org/scijava/console/AbstractConsoleArgument.java +++ b/src/main/java/org/scijava/console/AbstractConsoleArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleArgument.java b/src/main/java/org/scijava/console/ConsoleArgument.java index edfa4ea0c..b51e8a549 100644 --- a/src/main/java/org/scijava/console/ConsoleArgument.java +++ b/src/main/java/org/scijava/console/ConsoleArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleService.java b/src/main/java/org/scijava/console/ConsoleService.java index 23c5b9a24..e869933ed 100644 --- a/src/main/java/org/scijava/console/ConsoleService.java +++ b/src/main/java/org/scijava/console/ConsoleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/ConsoleUtils.java b/src/main/java/org/scijava/console/ConsoleUtils.java index 6314e737e..909aa3ea0 100644 --- a/src/main/java/org/scijava/console/ConsoleUtils.java +++ b/src/main/java/org/scijava/console/ConsoleUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/DefaultConsoleService.java b/src/main/java/org/scijava/console/DefaultConsoleService.java index 535deb088..c129e56d2 100644 --- a/src/main/java/org/scijava/console/DefaultConsoleService.java +++ b/src/main/java/org/scijava/console/DefaultConsoleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/MultiOutputStream.java b/src/main/java/org/scijava/console/MultiOutputStream.java index 043e5b439..1cc9803e9 100644 --- a/src/main/java/org/scijava/console/MultiOutputStream.java +++ b/src/main/java/org/scijava/console/MultiOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/MultiPrintStream.java b/src/main/java/org/scijava/console/MultiPrintStream.java index e1f2a11c2..a194dc24d 100644 --- a/src/main/java/org/scijava/console/MultiPrintStream.java +++ b/src/main/java/org/scijava/console/MultiPrintStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/OutputEvent.java b/src/main/java/org/scijava/console/OutputEvent.java index 762b7f249..dddd58e36 100644 --- a/src/main/java/org/scijava/console/OutputEvent.java +++ b/src/main/java/org/scijava/console/OutputEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/OutputListener.java b/src/main/java/org/scijava/console/OutputListener.java index 640a9dbc7..c86479e10 100644 --- a/src/main/java/org/scijava/console/OutputListener.java +++ b/src/main/java/org/scijava/console/OutputListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/console/SystemPropertyArgument.java b/src/main/java/org/scijava/console/SystemPropertyArgument.java index 40590ccd0..aa2f2ddfd 100644 --- a/src/main/java/org/scijava/console/SystemPropertyArgument.java +++ b/src/main/java/org/scijava/console/SystemPropertyArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractConvertService.java b/src/main/java/org/scijava/convert/AbstractConvertService.java index 0388e601c..18d995afd 100644 --- a/src/main/java/org/scijava/convert/AbstractConvertService.java +++ b/src/main/java/org/scijava/convert/AbstractConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractConverter.java b/src/main/java/org/scijava/convert/AbstractConverter.java index c80d2fbef..a7f252b3c 100644 --- a/src/main/java/org/scijava/convert/AbstractConverter.java +++ b/src/main/java/org/scijava/convert/AbstractConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/AbstractDelegateConverter.java b/src/main/java/org/scijava/convert/AbstractDelegateConverter.java index 909c6f0da..f9b979947 100644 --- a/src/main/java/org/scijava/convert/AbstractDelegateConverter.java +++ b/src/main/java/org/scijava/convert/AbstractDelegateConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ArrayConverters.java b/src/main/java/org/scijava/convert/ArrayConverters.java index ab9cb24a8..18d5f5916 100644 --- a/src/main/java/org/scijava/convert/ArrayConverters.java +++ b/src/main/java/org/scijava/convert/ArrayConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ArrayToStringConverter.java b/src/main/java/org/scijava/convert/ArrayToStringConverter.java index 1cf448747..d141d5454 100644 --- a/src/main/java/org/scijava/convert/ArrayToStringConverter.java +++ b/src/main/java/org/scijava/convert/ArrayToStringConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/CastingConverter.java b/src/main/java/org/scijava/convert/CastingConverter.java index 27915c40d..1e4e80ca6 100644 --- a/src/main/java/org/scijava/convert/CastingConverter.java +++ b/src/main/java/org/scijava/convert/CastingConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ConversionRequest.java b/src/main/java/org/scijava/convert/ConversionRequest.java index 3486e9a5f..65ce220ba 100644 --- a/src/main/java/org/scijava/convert/ConversionRequest.java +++ b/src/main/java/org/scijava/convert/ConversionRequest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/ConvertService.java b/src/main/java/org/scijava/convert/ConvertService.java index 14e65bae2..84e56de9d 100644 --- a/src/main/java/org/scijava/convert/ConvertService.java +++ b/src/main/java/org/scijava/convert/ConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/Converter.java b/src/main/java/org/scijava/convert/Converter.java index 3191be092..5b0544369 100644 --- a/src/main/java/org/scijava/convert/Converter.java +++ b/src/main/java/org/scijava/convert/Converter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/DefaultConvertService.java b/src/main/java/org/scijava/convert/DefaultConvertService.java index 434940368..d14e64dce 100644 --- a/src/main/java/org/scijava/convert/DefaultConvertService.java +++ b/src/main/java/org/scijava/convert/DefaultConvertService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/DefaultConverter.java b/src/main/java/org/scijava/convert/DefaultConverter.java index 15064c8d7..b9f53256d 100644 --- a/src/main/java/org/scijava/convert/DefaultConverter.java +++ b/src/main/java/org/scijava/convert/DefaultConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/FileListConverters.java b/src/main/java/org/scijava/convert/FileListConverters.java index 47a81053c..f4e8e86e7 100644 --- a/src/main/java/org/scijava/convert/FileListConverters.java +++ b/src/main/java/org/scijava/convert/FileListConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/FileToPathConverter.java b/src/main/java/org/scijava/convert/FileToPathConverter.java index 7d091b9e0..9a6960566 100644 --- a/src/main/java/org/scijava/convert/FileToPathConverter.java +++ b/src/main/java/org/scijava/convert/FileToPathConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NullConverter.java b/src/main/java/org/scijava/convert/NullConverter.java index 9719d6afe..b43a5cecf 100644 --- a/src/main/java/org/scijava/convert/NullConverter.java +++ b/src/main/java/org/scijava/convert/NullConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberConverters.java b/src/main/java/org/scijava/convert/NumberConverters.java index 05aa71c7c..2f52ba40d 100644 --- a/src/main/java/org/scijava/convert/NumberConverters.java +++ b/src/main/java/org/scijava/convert/NumberConverters.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java b/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java index 889cf75e9..34b5a22a1 100644 --- a/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java +++ b/src/main/java/org/scijava/convert/NumberToBigDecimalConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java b/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java index 80196b63a..6877d4b6b 100644 --- a/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java +++ b/src/main/java/org/scijava/convert/NumberToBigIntegerConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToDoubleConverter.java b/src/main/java/org/scijava/convert/NumberToDoubleConverter.java index 751badc6b..d32b0a751 100644 --- a/src/main/java/org/scijava/convert/NumberToDoubleConverter.java +++ b/src/main/java/org/scijava/convert/NumberToDoubleConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToFloatConverter.java b/src/main/java/org/scijava/convert/NumberToFloatConverter.java index 19579a857..cc9a6b31f 100644 --- a/src/main/java/org/scijava/convert/NumberToFloatConverter.java +++ b/src/main/java/org/scijava/convert/NumberToFloatConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToIntegerConverter.java b/src/main/java/org/scijava/convert/NumberToIntegerConverter.java index 149962f42..799ac9ac7 100644 --- a/src/main/java/org/scijava/convert/NumberToIntegerConverter.java +++ b/src/main/java/org/scijava/convert/NumberToIntegerConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToLongConverter.java b/src/main/java/org/scijava/convert/NumberToLongConverter.java index 7f7eef462..34df15429 100644 --- a/src/main/java/org/scijava/convert/NumberToLongConverter.java +++ b/src/main/java/org/scijava/convert/NumberToLongConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToNumberConverter.java b/src/main/java/org/scijava/convert/NumberToNumberConverter.java index d3b3102fe..4ad78680d 100644 --- a/src/main/java/org/scijava/convert/NumberToNumberConverter.java +++ b/src/main/java/org/scijava/convert/NumberToNumberConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/NumberToShortConverter.java b/src/main/java/org/scijava/convert/NumberToShortConverter.java index aed496f49..858fdd13b 100644 --- a/src/main/java/org/scijava/convert/NumberToShortConverter.java +++ b/src/main/java/org/scijava/convert/NumberToShortConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PathToFileConverter.java b/src/main/java/org/scijava/convert/PathToFileConverter.java index 6c221f905..1a066296e 100644 --- a/src/main/java/org/scijava/convert/PathToFileConverter.java +++ b/src/main/java/org/scijava/convert/PathToFileConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java index 514077e15..32b048a30 100644 --- a/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java +++ b/src/main/java/org/scijava/convert/PrimitiveArrayUnwrapper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java b/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java index dedcc8092..549527f4e 100644 --- a/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java +++ b/src/main/java/org/scijava/convert/PrimitiveArrayWrapper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/StringToArrayConverter.java b/src/main/java/org/scijava/convert/StringToArrayConverter.java index 18e6a38d6..8b0996095 100644 --- a/src/main/java/org/scijava/convert/StringToArrayConverter.java +++ b/src/main/java/org/scijava/convert/StringToArrayConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/convert/StringToNumberConverter.java b/src/main/java/org/scijava/convert/StringToNumberConverter.java index 817c0c37a..f8f407a87 100644 --- a/src/main/java/org/scijava/convert/StringToNumberConverter.java +++ b/src/main/java/org/scijava/convert/StringToNumberConverter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/AbstractDisplay.java b/src/main/java/org/scijava/display/AbstractDisplay.java index 02a44cd6d..c1fbd2ee0 100644 --- a/src/main/java/org/scijava/display/AbstractDisplay.java +++ b/src/main/java/org/scijava/display/AbstractDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java b/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java index 488cc2249..fd5bc184e 100644 --- a/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java +++ b/src/main/java/org/scijava/display/ActiveDisplayPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultDisplay.java b/src/main/java/org/scijava/display/DefaultDisplay.java index b7058f5e9..e75317060 100644 --- a/src/main/java/org/scijava/display/DefaultDisplay.java +++ b/src/main/java/org/scijava/display/DefaultDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultDisplayService.java b/src/main/java/org/scijava/display/DefaultDisplayService.java index f91dddc14..b125937d4 100644 --- a/src/main/java/org/scijava/display/DefaultDisplayService.java +++ b/src/main/java/org/scijava/display/DefaultDisplayService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DefaultTextDisplay.java b/src/main/java/org/scijava/display/DefaultTextDisplay.java index df16c01cc..ab6044b12 100644 --- a/src/main/java/org/scijava/display/DefaultTextDisplay.java +++ b/src/main/java/org/scijava/display/DefaultTextDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/Display.java b/src/main/java/org/scijava/display/Display.java index 77921d195..4886b3a1e 100644 --- a/src/main/java/org/scijava/display/Display.java +++ b/src/main/java/org/scijava/display/Display.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DisplayPostprocessor.java b/src/main/java/org/scijava/display/DisplayPostprocessor.java index 9a69d7f8e..a97064ce5 100644 --- a/src/main/java/org/scijava/display/DisplayPostprocessor.java +++ b/src/main/java/org/scijava/display/DisplayPostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/DisplayService.java b/src/main/java/org/scijava/display/DisplayService.java index 23acbf0e0..dc2654396 100644 --- a/src/main/java/org/scijava/display/DisplayService.java +++ b/src/main/java/org/scijava/display/DisplayService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/Displayable.java b/src/main/java/org/scijava/display/Displayable.java index ae875c217..4b38e060e 100644 --- a/src/main/java/org/scijava/display/Displayable.java +++ b/src/main/java/org/scijava/display/Displayable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/TextDisplay.java b/src/main/java/org/scijava/display/TextDisplay.java index 29eb39843..f6eddb44f 100644 --- a/src/main/java/org/scijava/display/TextDisplay.java +++ b/src/main/java/org/scijava/display/TextDisplay.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java b/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java index 0c6a12a07..7af76b8b4 100644 --- a/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java b/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java index bd6f77560..eab8406e7 100644 --- a/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java b/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java index c1420e4d5..aeda51f31 100644 --- a/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayDeletedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayEvent.java b/src/main/java/org/scijava/display/event/DisplayEvent.java index 95e90c7cb..22bd5ffeb 100644 --- a/src/main/java/org/scijava/display/event/DisplayEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java b/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java index 1be4cb353..d609a2391 100644 --- a/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java +++ b/src/main/java/org/scijava/display/event/DisplayUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/InputEvent.java b/src/main/java/org/scijava/display/event/input/InputEvent.java index d515f9c0a..877529707 100644 --- a/src/main/java/org/scijava/display/event/input/InputEvent.java +++ b/src/main/java/org/scijava/display/event/input/InputEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyEvent.java b/src/main/java/org/scijava/display/event/input/KyEvent.java index ddc2f3046..3acf2bece 100644 --- a/src/main/java/org/scijava/display/event/input/KyEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyPressedEvent.java b/src/main/java/org/scijava/display/event/input/KyPressedEvent.java index 6cafacc77..2c812389b 100644 --- a/src/main/java/org/scijava/display/event/input/KyPressedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyPressedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java b/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java index acc1bdf9d..2ce597b48 100644 --- a/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyReleasedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/KyTypedEvent.java b/src/main/java/org/scijava/display/event/input/KyTypedEvent.java index 398fe027b..a345748ab 100644 --- a/src/main/java/org/scijava/display/event/input/KyTypedEvent.java +++ b/src/main/java/org/scijava/display/event/input/KyTypedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsButtonEvent.java b/src/main/java/org/scijava/display/event/input/MsButtonEvent.java index ed1d4eae4..2e728f3af 100644 --- a/src/main/java/org/scijava/display/event/input/MsButtonEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsButtonEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsClickedEvent.java b/src/main/java/org/scijava/display/event/input/MsClickedEvent.java index 62f9bd622..8962c1a80 100644 --- a/src/main/java/org/scijava/display/event/input/MsClickedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsClickedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java b/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java index ec6595127..226453319 100644 --- a/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsDraggedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java b/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java index de13c50ee..1ee9e2cf5 100644 --- a/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsEnteredEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsEvent.java b/src/main/java/org/scijava/display/event/input/MsEvent.java index 3836bb65c..5e1d047f0 100644 --- a/src/main/java/org/scijava/display/event/input/MsEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsExitedEvent.java b/src/main/java/org/scijava/display/event/input/MsExitedEvent.java index 28584e4e1..f60eb58b2 100644 --- a/src/main/java/org/scijava/display/event/input/MsExitedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsExitedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsMovedEvent.java b/src/main/java/org/scijava/display/event/input/MsMovedEvent.java index f8be96df2..ba737a960 100644 --- a/src/main/java/org/scijava/display/event/input/MsMovedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsMovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsPressedEvent.java b/src/main/java/org/scijava/display/event/input/MsPressedEvent.java index c45b5991d..19ca38bfd 100644 --- a/src/main/java/org/scijava/display/event/input/MsPressedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsPressedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java b/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java index 2ad017f9c..219e62b73 100644 --- a/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsReleasedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/input/MsWheelEvent.java b/src/main/java/org/scijava/display/event/input/MsWheelEvent.java index 0c723db58..8f0ec7c6b 100644 --- a/src/main/java/org/scijava/display/event/input/MsWheelEvent.java +++ b/src/main/java/org/scijava/display/event/input/MsWheelEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java b/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java index a51e7132b..380cc2185 100644 --- a/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinClosedEvent.java b/src/main/java/org/scijava/display/event/window/WinClosedEvent.java index b54bae090..7e11f2581 100644 --- a/src/main/java/org/scijava/display/event/window/WinClosedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinClosedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinClosingEvent.java b/src/main/java/org/scijava/display/event/window/WinClosingEvent.java index 4bf578d83..f8573f746 100644 --- a/src/main/java/org/scijava/display/event/window/WinClosingEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinClosingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java b/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java index baceef2f0..c1f8f7d03 100644 --- a/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinDeactivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java b/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java index 882058c7a..770c05f30 100644 --- a/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinDeiconifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinEvent.java b/src/main/java/org/scijava/display/event/window/WinEvent.java index 75a4714ea..b691b0a71 100644 --- a/src/main/java/org/scijava/display/event/window/WinEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java b/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java index 731cae148..4486a5630 100644 --- a/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinIconifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java b/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java index 4ac6abb44..e34298e6c 100644 --- a/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java +++ b/src/main/java/org/scijava/display/event/window/WinOpenedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DefaultDownloadService.java b/src/main/java/org/scijava/download/DefaultDownloadService.java index 6775b0bc0..da91dc3e8 100644 --- a/src/main/java/org/scijava/download/DefaultDownloadService.java +++ b/src/main/java/org/scijava/download/DefaultDownloadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DiskLocationCache.java b/src/main/java/org/scijava/download/DiskLocationCache.java index eb9f1f8a1..73471ebed 100644 --- a/src/main/java/org/scijava/download/DiskLocationCache.java +++ b/src/main/java/org/scijava/download/DiskLocationCache.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/Download.java b/src/main/java/org/scijava/download/Download.java index 313bc5840..56d00f71f 100644 --- a/src/main/java/org/scijava/download/Download.java +++ b/src/main/java/org/scijava/download/Download.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/DownloadService.java b/src/main/java/org/scijava/download/DownloadService.java index 7410aa1c5..abc4c8294 100644 --- a/src/main/java/org/scijava/download/DownloadService.java +++ b/src/main/java/org/scijava/download/DownloadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/LocationCache.java b/src/main/java/org/scijava/download/LocationCache.java index 30da5a620..ee49eed26 100644 --- a/src/main/java/org/scijava/download/LocationCache.java +++ b/src/main/java/org/scijava/download/LocationCache.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/download/MultiWriteHandle.java b/src/main/java/org/scijava/download/MultiWriteHandle.java index b6a7c6e1d..4c7d5ef3a 100644 --- a/src/main/java/org/scijava/download/MultiWriteHandle.java +++ b/src/main/java/org/scijava/download/MultiWriteHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/ContextCreatedEvent.java b/src/main/java/org/scijava/event/ContextCreatedEvent.java index 8f6de90ee..2f43d2105 100644 --- a/src/main/java/org/scijava/event/ContextCreatedEvent.java +++ b/src/main/java/org/scijava/event/ContextCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/ContextDisposingEvent.java b/src/main/java/org/scijava/event/ContextDisposingEvent.java index 4f161ce33..472c6b03e 100644 --- a/src/main/java/org/scijava/event/ContextDisposingEvent.java +++ b/src/main/java/org/scijava/event/ContextDisposingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventBus.java b/src/main/java/org/scijava/event/DefaultEventBus.java index 8d3f91745..72e269077 100644 --- a/src/main/java/org/scijava/event/DefaultEventBus.java +++ b/src/main/java/org/scijava/event/DefaultEventBus.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventHistory.java b/src/main/java/org/scijava/event/DefaultEventHistory.java index 0847b9b7f..c0d397cb1 100644 --- a/src/main/java/org/scijava/event/DefaultEventHistory.java +++ b/src/main/java/org/scijava/event/DefaultEventHistory.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/DefaultEventService.java b/src/main/java/org/scijava/event/DefaultEventService.java index 30194744d..d627ce668 100644 --- a/src/main/java/org/scijava/event/DefaultEventService.java +++ b/src/main/java/org/scijava/event/DefaultEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventDetails.java b/src/main/java/org/scijava/event/EventDetails.java index be2bd9494..794e3e3fa 100644 --- a/src/main/java/org/scijava/event/EventDetails.java +++ b/src/main/java/org/scijava/event/EventDetails.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHandler.java b/src/main/java/org/scijava/event/EventHandler.java index 628e9a7a4..56283f452 100644 --- a/src/main/java/org/scijava/event/EventHandler.java +++ b/src/main/java/org/scijava/event/EventHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHistory.java b/src/main/java/org/scijava/event/EventHistory.java index f1b49e309..e54425120 100644 --- a/src/main/java/org/scijava/event/EventHistory.java +++ b/src/main/java/org/scijava/event/EventHistory.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventHistoryListener.java b/src/main/java/org/scijava/event/EventHistoryListener.java index a0da0e664..9beecf79f 100644 --- a/src/main/java/org/scijava/event/EventHistoryListener.java +++ b/src/main/java/org/scijava/event/EventHistoryListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventService.java b/src/main/java/org/scijava/event/EventService.java index 2a7f6d95b..00ef9d7f0 100644 --- a/src/main/java/org/scijava/event/EventService.java +++ b/src/main/java/org/scijava/event/EventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/EventSubscriber.java b/src/main/java/org/scijava/event/EventSubscriber.java index 7bcef12d3..bb05a8f40 100644 --- a/src/main/java/org/scijava/event/EventSubscriber.java +++ b/src/main/java/org/scijava/event/EventSubscriber.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/event/SciJavaEvent.java b/src/main/java/org/scijava/event/SciJavaEvent.java index b4c8343d3..2fcc6876d 100644 --- a/src/main/java/org/scijava/event/SciJavaEvent.java +++ b/src/main/java/org/scijava/event/SciJavaEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/Accelerator.java b/src/main/java/org/scijava/input/Accelerator.java index ffa6ca9ae..c1296cfb6 100644 --- a/src/main/java/org/scijava/input/Accelerator.java +++ b/src/main/java/org/scijava/input/Accelerator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/DefaultInputService.java b/src/main/java/org/scijava/input/DefaultInputService.java index 3f9f9b03b..2b3506c07 100644 --- a/src/main/java/org/scijava/input/DefaultInputService.java +++ b/src/main/java/org/scijava/input/DefaultInputService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/InputModifiers.java b/src/main/java/org/scijava/input/InputModifiers.java index dc1fd6095..21df50b23 100644 --- a/src/main/java/org/scijava/input/InputModifiers.java +++ b/src/main/java/org/scijava/input/InputModifiers.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/InputService.java b/src/main/java/org/scijava/input/InputService.java index 8bb2ea10a..a38c638bc 100644 --- a/src/main/java/org/scijava/input/InputService.java +++ b/src/main/java/org/scijava/input/InputService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/KeyCode.java b/src/main/java/org/scijava/input/KeyCode.java index c7207eeb3..2c2dc7444 100644 --- a/src/main/java/org/scijava/input/KeyCode.java +++ b/src/main/java/org/scijava/input/KeyCode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/input/MouseCursor.java b/src/main/java/org/scijava/input/MouseCursor.java index 1ade50c90..8d6d55991 100644 --- a/src/main/java/org/scijava/input/MouseCursor.java +++ b/src/main/java/org/scijava/input/MouseCursor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/AbstractIOPlugin.java b/src/main/java/org/scijava/io/AbstractIOPlugin.java index 954e77258..7e7782572 100644 --- a/src/main/java/org/scijava/io/AbstractIOPlugin.java +++ b/src/main/java/org/scijava/io/AbstractIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/AbstractTypedIOService.java b/src/main/java/org/scijava/io/AbstractTypedIOService.java index 520441e43..28cd7b96f 100644 --- a/src/main/java/org/scijava/io/AbstractTypedIOService.java +++ b/src/main/java/org/scijava/io/AbstractTypedIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/ByteArrayByteBank.java b/src/main/java/org/scijava/io/ByteArrayByteBank.java index 196ba64c8..277f9abf2 100644 --- a/src/main/java/org/scijava/io/ByteArrayByteBank.java +++ b/src/main/java/org/scijava/io/ByteArrayByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/ByteBank.java b/src/main/java/org/scijava/io/ByteBank.java index 1bb062b54..fa6352140 100644 --- a/src/main/java/org/scijava/io/ByteBank.java +++ b/src/main/java/org/scijava/io/ByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/DefaultIOService.java b/src/main/java/org/scijava/io/DefaultIOService.java index a5199e76e..183dbcd07 100644 --- a/src/main/java/org/scijava/io/DefaultIOService.java +++ b/src/main/java/org/scijava/io/DefaultIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/DefaultRecentFileService.java b/src/main/java/org/scijava/io/DefaultRecentFileService.java index 299f3f387..1e7f0a85f 100644 --- a/src/main/java/org/scijava/io/DefaultRecentFileService.java +++ b/src/main/java/org/scijava/io/DefaultRecentFileService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/IOPlugin.java b/src/main/java/org/scijava/io/IOPlugin.java index 2c12ccd6a..ed42dee25 100644 --- a/src/main/java/org/scijava/io/IOPlugin.java +++ b/src/main/java/org/scijava/io/IOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/IOService.java b/src/main/java/org/scijava/io/IOService.java index 26cd44836..d26c66ce9 100644 --- a/src/main/java/org/scijava/io/IOService.java +++ b/src/main/java/org/scijava/io/IOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/RecentFileService.java b/src/main/java/org/scijava/io/RecentFileService.java index 7c549fe8b..38c6385a1 100644 --- a/src/main/java/org/scijava/io/RecentFileService.java +++ b/src/main/java/org/scijava/io/RecentFileService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/TypedIOService.java b/src/main/java/org/scijava/io/TypedIOService.java index 746311f6a..89fffd060 100644 --- a/src/main/java/org/scijava/io/TypedIOService.java +++ b/src/main/java/org/scijava/io/TypedIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/console/OpenArgument.java b/src/main/java/org/scijava/io/console/OpenArgument.java index efe0fe257..ab7aa259b 100644 --- a/src/main/java/org/scijava/io/console/OpenArgument.java +++ b/src/main/java/org/scijava/io/console/OpenArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/DataOpenedEvent.java b/src/main/java/org/scijava/io/event/DataOpenedEvent.java index a034e574f..b42d9fb0f 100644 --- a/src/main/java/org/scijava/io/event/DataOpenedEvent.java +++ b/src/main/java/org/scijava/io/event/DataOpenedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/DataSavedEvent.java b/src/main/java/org/scijava/io/event/DataSavedEvent.java index d2fb9e03e..74eaa8925 100644 --- a/src/main/java/org/scijava/io/event/DataSavedEvent.java +++ b/src/main/java/org/scijava/io/event/DataSavedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/event/IOEvent.java b/src/main/java/org/scijava/io/event/IOEvent.java index 593cdf721..e254fb0a8 100644 --- a/src/main/java/org/scijava/io/event/IOEvent.java +++ b/src/main/java/org/scijava/io/event/IOEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractDataHandle.java b/src/main/java/org/scijava/io/handle/AbstractDataHandle.java index dcafd62cd..9a8a57973 100644 --- a/src/main/java/org/scijava/io/handle/AbstractDataHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java b/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java index 853bc4098..a27fd185c 100644 --- a/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractHigherOrderHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java b/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java index ac7318347..a28428328 100644 --- a/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractSeekableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java b/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java index 30af9f6a0..9660e9300 100644 --- a/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/AbstractStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/BytesHandle.java b/src/main/java/org/scijava/io/handle/BytesHandle.java index 4b0051372..b4cc82b4f 100644 --- a/src/main/java/org/scijava/io/handle/BytesHandle.java +++ b/src/main/java/org/scijava/io/handle/BytesHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandle.java b/src/main/java/org/scijava/io/handle/DataHandle.java index 61d413382..f5728f2cd 100644 --- a/src/main/java/org/scijava/io/handle/DataHandle.java +++ b/src/main/java/org/scijava/io/handle/DataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleInputStream.java b/src/main/java/org/scijava/io/handle/DataHandleInputStream.java index 7613b17be..e37ef5948 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleInputStream.java +++ b/src/main/java/org/scijava/io/handle/DataHandleInputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java b/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java index 4e8259a8b..510a68e51 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java +++ b/src/main/java/org/scijava/io/handle/DataHandleOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandleService.java b/src/main/java/org/scijava/io/handle/DataHandleService.java index e55cdfd3f..16782658f 100644 --- a/src/main/java/org/scijava/io/handle/DataHandleService.java +++ b/src/main/java/org/scijava/io/handle/DataHandleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DataHandles.java b/src/main/java/org/scijava/io/handle/DataHandles.java index a8976f3fa..abdcc0afb 100644 --- a/src/main/java/org/scijava/io/handle/DataHandles.java +++ b/src/main/java/org/scijava/io/handle/DataHandles.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java b/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java index 66428855f..e820ca6ac 100644 --- a/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java +++ b/src/main/java/org/scijava/io/handle/DefaultDataHandleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/DummyHandle.java b/src/main/java/org/scijava/io/handle/DummyHandle.java index 61fe0bdf5..bb9cd70ac 100644 --- a/src/main/java/org/scijava/io/handle/DummyHandle.java +++ b/src/main/java/org/scijava/io/handle/DummyHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/FileHandle.java b/src/main/java/org/scijava/io/handle/FileHandle.java index 029c0c6b2..dbaedd134 100644 --- a/src/main/java/org/scijava/io/handle/FileHandle.java +++ b/src/main/java/org/scijava/io/handle/FileHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java index 35841320b..af306b73b 100644 --- a/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/ReadBufferDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java b/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java index 6a1022e9a..c202ad53d 100644 --- a/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/ResettableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java b/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java index fa4e1666d..bf517df16 100644 --- a/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java +++ b/src/main/java/org/scijava/io/handle/SeekableStreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/StreamHandle.java b/src/main/java/org/scijava/io/handle/StreamHandle.java index c33eccdab..f134315cb 100644 --- a/src/main/java/org/scijava/io/handle/StreamHandle.java +++ b/src/main/java/org/scijava/io/handle/StreamHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java b/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java index 4f3a7d818..44c8b5064 100644 --- a/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java +++ b/src/main/java/org/scijava/io/handle/WriteBufferDataHandle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractLocation.java b/src/main/java/org/scijava/io/location/AbstractLocation.java index d93e29fa9..045d6fc37 100644 --- a/src/main/java/org/scijava/io/location/AbstractLocation.java +++ b/src/main/java/org/scijava/io/location/AbstractLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractLocationResolver.java b/src/main/java/org/scijava/io/location/AbstractLocationResolver.java index d05ad4c9b..675a4c775 100644 --- a/src/main/java/org/scijava/io/location/AbstractLocationResolver.java +++ b/src/main/java/org/scijava/io/location/AbstractLocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java b/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java index 78e66e53b..2d211157f 100644 --- a/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java +++ b/src/main/java/org/scijava/io/location/AbstractRemoteLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/BrowsableLocation.java b/src/main/java/org/scijava/io/location/BrowsableLocation.java index 68bbf0be3..234d2c88b 100644 --- a/src/main/java/org/scijava/io/location/BrowsableLocation.java +++ b/src/main/java/org/scijava/io/location/BrowsableLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/BytesLocation.java b/src/main/java/org/scijava/io/location/BytesLocation.java index 74bc91843..d16e83c69 100644 --- a/src/main/java/org/scijava/io/location/BytesLocation.java +++ b/src/main/java/org/scijava/io/location/BytesLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/DefaultLocationService.java b/src/main/java/org/scijava/io/location/DefaultLocationService.java index 46dd034ba..d4ea0845a 100644 --- a/src/main/java/org/scijava/io/location/DefaultLocationService.java +++ b/src/main/java/org/scijava/io/location/DefaultLocationService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/DummyLocation.java b/src/main/java/org/scijava/io/location/DummyLocation.java index 1235ff829..f1e2b4f64 100644 --- a/src/main/java/org/scijava/io/location/DummyLocation.java +++ b/src/main/java/org/scijava/io/location/DummyLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/FileLocation.java b/src/main/java/org/scijava/io/location/FileLocation.java index ef8b8950e..195389196 100644 --- a/src/main/java/org/scijava/io/location/FileLocation.java +++ b/src/main/java/org/scijava/io/location/FileLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/FileLocationResolver.java b/src/main/java/org/scijava/io/location/FileLocationResolver.java index 9c02c4a8f..67c57420c 100644 --- a/src/main/java/org/scijava/io/location/FileLocationResolver.java +++ b/src/main/java/org/scijava/io/location/FileLocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/Location.java b/src/main/java/org/scijava/io/location/Location.java index efb45542f..1d2510c54 100644 --- a/src/main/java/org/scijava/io/location/Location.java +++ b/src/main/java/org/scijava/io/location/Location.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/LocationResolver.java b/src/main/java/org/scijava/io/location/LocationResolver.java index dac41d9bd..0f325a002 100644 --- a/src/main/java/org/scijava/io/location/LocationResolver.java +++ b/src/main/java/org/scijava/io/location/LocationResolver.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/LocationService.java b/src/main/java/org/scijava/io/location/LocationService.java index 08aa30759..1af4e1e26 100644 --- a/src/main/java/org/scijava/io/location/LocationService.java +++ b/src/main/java/org/scijava/io/location/LocationService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/RemoteLocation.java b/src/main/java/org/scijava/io/location/RemoteLocation.java index ce5760565..a39282b4f 100644 --- a/src/main/java/org/scijava/io/location/RemoteLocation.java +++ b/src/main/java/org/scijava/io/location/RemoteLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/URILocation.java b/src/main/java/org/scijava/io/location/URILocation.java index 3bc2789aa..0e5165a4a 100644 --- a/src/main/java/org/scijava/io/location/URILocation.java +++ b/src/main/java/org/scijava/io/location/URILocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/location/URLLocation.java b/src/main/java/org/scijava/io/location/URLLocation.java index 37619be4f..73c4781f2 100644 --- a/src/main/java/org/scijava/io/location/URLLocation.java +++ b/src/main/java/org/scijava/io/location/URLLocation.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java b/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java index 92ccd5a1f..99588b672 100644 --- a/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java +++ b/src/main/java/org/scijava/io/nio/ByteBufferByteBank.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/DefaultNIOService.java b/src/main/java/org/scijava/io/nio/DefaultNIOService.java index 655580146..6e0ef72da 100644 --- a/src/main/java/org/scijava/io/nio/DefaultNIOService.java +++ b/src/main/java/org/scijava/io/nio/DefaultNIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/io/nio/NIOService.java b/src/main/java/org/scijava/io/nio/NIOService.java index 4bdb6be3e..ea5c6696c 100644 --- a/src/main/java/org/scijava/io/nio/NIOService.java +++ b/src/main/java/org/scijava/io/nio/NIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/AbstractLogService.java b/src/main/java/org/scijava/log/AbstractLogService.java index de30db3da..1227ea134 100644 --- a/src/main/java/org/scijava/log/AbstractLogService.java +++ b/src/main/java/org/scijava/log/AbstractLogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/CallingClassUtils.java b/src/main/java/org/scijava/log/CallingClassUtils.java index c29516b91..34a52d894 100644 --- a/src/main/java/org/scijava/log/CallingClassUtils.java +++ b/src/main/java/org/scijava/log/CallingClassUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/DefaultLogger.java b/src/main/java/org/scijava/log/DefaultLogger.java index 0cf99f33e..9f148f647 100644 --- a/src/main/java/org/scijava/log/DefaultLogger.java +++ b/src/main/java/org/scijava/log/DefaultLogger.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java b/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java index e59cc2c93..1d3e9704e 100644 --- a/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java +++ b/src/main/java/org/scijava/log/DefaultUncaughtExceptionHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/IgnoreAsCallingClass.java b/src/main/java/org/scijava/log/IgnoreAsCallingClass.java index 0b18fac9f..faa0da4d8 100644 --- a/src/main/java/org/scijava/log/IgnoreAsCallingClass.java +++ b/src/main/java/org/scijava/log/IgnoreAsCallingClass.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogLevel.java b/src/main/java/org/scijava/log/LogLevel.java index 0172ed524..cc36aba55 100644 --- a/src/main/java/org/scijava/log/LogLevel.java +++ b/src/main/java/org/scijava/log/LogLevel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogListener.java b/src/main/java/org/scijava/log/LogListener.java index b2e8dad4b..fabbfa435 100644 --- a/src/main/java/org/scijava/log/LogListener.java +++ b/src/main/java/org/scijava/log/LogListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogMessage.java b/src/main/java/org/scijava/log/LogMessage.java index 4a621b261..fde5af3b9 100644 --- a/src/main/java/org/scijava/log/LogMessage.java +++ b/src/main/java/org/scijava/log/LogMessage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogService.java b/src/main/java/org/scijava/log/LogService.java index 335abb8f6..7d7eac93f 100644 --- a/src/main/java/org/scijava/log/LogService.java +++ b/src/main/java/org/scijava/log/LogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/LogSource.java b/src/main/java/org/scijava/log/LogSource.java index b44c48556..4338e3a8a 100644 --- a/src/main/java/org/scijava/log/LogSource.java +++ b/src/main/java/org/scijava/log/LogSource.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/Logged.java b/src/main/java/org/scijava/log/Logged.java index c12e4fe13..7f44f3f75 100644 --- a/src/main/java/org/scijava/log/Logged.java +++ b/src/main/java/org/scijava/log/Logged.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/Logger.java b/src/main/java/org/scijava/log/Logger.java index 0db237f70..8806a1dde 100644 --- a/src/main/java/org/scijava/log/Logger.java +++ b/src/main/java/org/scijava/log/Logger.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/log/StderrLogService.java b/src/main/java/org/scijava/log/StderrLogService.java index 9801bb746..184f11d52 100644 --- a/src/main/java/org/scijava/log/StderrLogService.java +++ b/src/main/java/org/scijava/log/StderrLogService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/DefaultMainService.java b/src/main/java/org/scijava/main/DefaultMainService.java index 79dea58cf..faffc2546 100644 --- a/src/main/java/org/scijava/main/DefaultMainService.java +++ b/src/main/java/org/scijava/main/DefaultMainService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/MainService.java b/src/main/java/org/scijava/main/MainService.java index d8b190de1..ac21af8f0 100644 --- a/src/main/java/org/scijava/main/MainService.java +++ b/src/main/java/org/scijava/main/MainService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/console/MainArgument.java b/src/main/java/org/scijava/main/console/MainArgument.java index 0125781da..f9139ff6c 100644 --- a/src/main/java/org/scijava/main/console/MainArgument.java +++ b/src/main/java/org/scijava/main/console/MainArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/main/run/MainCodeRunner.java b/src/main/java/org/scijava/main/run/MainCodeRunner.java index 6ff737b2b..627e8ece3 100644 --- a/src/main/java/org/scijava/main/run/MainCodeRunner.java +++ b/src/main/java/org/scijava/main/run/MainCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/AbstractMenuCreator.java b/src/main/java/org/scijava/menu/AbstractMenuCreator.java index d28e3fa73..94dd1f596 100644 --- a/src/main/java/org/scijava/menu/AbstractMenuCreator.java +++ b/src/main/java/org/scijava/menu/AbstractMenuCreator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/DefaultMenuService.java b/src/main/java/org/scijava/menu/DefaultMenuService.java index 73471d5c9..37863c869 100644 --- a/src/main/java/org/scijava/menu/DefaultMenuService.java +++ b/src/main/java/org/scijava/menu/DefaultMenuService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuConstants.java b/src/main/java/org/scijava/menu/MenuConstants.java index 78f71535a..c68b5171c 100644 --- a/src/main/java/org/scijava/menu/MenuConstants.java +++ b/src/main/java/org/scijava/menu/MenuConstants.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuCreator.java b/src/main/java/org/scijava/menu/MenuCreator.java index 20249f21b..571ea192e 100644 --- a/src/main/java/org/scijava/menu/MenuCreator.java +++ b/src/main/java/org/scijava/menu/MenuCreator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/MenuService.java b/src/main/java/org/scijava/menu/MenuService.java index 1023a5fd6..8455284ac 100644 --- a/src/main/java/org/scijava/menu/MenuService.java +++ b/src/main/java/org/scijava/menu/MenuService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/ShadowMenu.java b/src/main/java/org/scijava/menu/ShadowMenu.java index f97ab4800..e0cecb326 100644 --- a/src/main/java/org/scijava/menu/ShadowMenu.java +++ b/src/main/java/org/scijava/menu/ShadowMenu.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/ShadowMenuIterator.java b/src/main/java/org/scijava/menu/ShadowMenuIterator.java index 4ac49edb9..45dfc836e 100644 --- a/src/main/java/org/scijava/menu/ShadowMenuIterator.java +++ b/src/main/java/org/scijava/menu/ShadowMenuIterator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenuEvent.java b/src/main/java/org/scijava/menu/event/MenuEvent.java index c8ef4a79d..c1e81f70e 100644 --- a/src/main/java/org/scijava/menu/event/MenuEvent.java +++ b/src/main/java/org/scijava/menu/event/MenuEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusAddedEvent.java b/src/main/java/org/scijava/menu/event/MenusAddedEvent.java index 299b7f68e..796bd039b 100644 --- a/src/main/java/org/scijava/menu/event/MenusAddedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java b/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java index 205c13229..fe156cde6 100644 --- a/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java b/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java index ea69e3833..01df28f33 100644 --- a/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java +++ b/src/main/java/org/scijava/menu/event/MenusUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModule.java b/src/main/java/org/scijava/module/AbstractModule.java index 4fd0aacf3..e6400f7cc 100644 --- a/src/main/java/org/scijava/module/AbstractModule.java +++ b/src/main/java/org/scijava/module/AbstractModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModuleInfo.java b/src/main/java/org/scijava/module/AbstractModuleInfo.java index 29379b44e..78747cacb 100644 --- a/src/main/java/org/scijava/module/AbstractModuleInfo.java +++ b/src/main/java/org/scijava/module/AbstractModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/AbstractModuleItem.java b/src/main/java/org/scijava/module/AbstractModuleItem.java index f61cfcc54..ad9b863d2 100644 --- a/src/main/java/org/scijava/module/AbstractModuleItem.java +++ b/src/main/java/org/scijava/module/AbstractModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultModuleService.java b/src/main/java/org/scijava/module/DefaultModuleService.java index e4461f236..b6d3fa025 100644 --- a/src/main/java/org/scijava/module/DefaultModuleService.java +++ b/src/main/java/org/scijava/module/DefaultModuleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModule.java b/src/main/java/org/scijava/module/DefaultMutableModule.java index 768d6c663..2d483797a 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModule.java +++ b/src/main/java/org/scijava/module/DefaultMutableModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java b/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java index 859fe0d9b..e41f52465 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java +++ b/src/main/java/org/scijava/module/DefaultMutableModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/DefaultMutableModuleItem.java b/src/main/java/org/scijava/module/DefaultMutableModuleItem.java index 3e3eb139c..956d245d6 100644 --- a/src/main/java/org/scijava/module/DefaultMutableModuleItem.java +++ b/src/main/java/org/scijava/module/DefaultMutableModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MethodCallException.java b/src/main/java/org/scijava/module/MethodCallException.java index eca6e5e5c..5dd89a0d6 100644 --- a/src/main/java/org/scijava/module/MethodCallException.java +++ b/src/main/java/org/scijava/module/MethodCallException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MethodRef.java b/src/main/java/org/scijava/module/MethodRef.java index 758f8d390..8dff15695 100644 --- a/src/main/java/org/scijava/module/MethodRef.java +++ b/src/main/java/org/scijava/module/MethodRef.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/Module.java b/src/main/java/org/scijava/module/Module.java index 16f555a48..a60bd7d3e 100644 --- a/src/main/java/org/scijava/module/Module.java +++ b/src/main/java/org/scijava/module/Module.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleCanceledException.java b/src/main/java/org/scijava/module/ModuleCanceledException.java index c39147745..cd8cb0cf4 100644 --- a/src/main/java/org/scijava/module/ModuleCanceledException.java +++ b/src/main/java/org/scijava/module/ModuleCanceledException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleException.java b/src/main/java/org/scijava/module/ModuleException.java index 0b4339108..c178e6a39 100644 --- a/src/main/java/org/scijava/module/ModuleException.java +++ b/src/main/java/org/scijava/module/ModuleException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleIndex.java b/src/main/java/org/scijava/module/ModuleIndex.java index 30f53e048..0b11c9f52 100644 --- a/src/main/java/org/scijava/module/ModuleIndex.java +++ b/src/main/java/org/scijava/module/ModuleIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleInfo.java b/src/main/java/org/scijava/module/ModuleInfo.java index d95a56335..73e1a59a9 100644 --- a/src/main/java/org/scijava/module/ModuleInfo.java +++ b/src/main/java/org/scijava/module/ModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleItem.java b/src/main/java/org/scijava/module/ModuleItem.java index cec5cb5e2..0007ee040 100644 --- a/src/main/java/org/scijava/module/ModuleItem.java +++ b/src/main/java/org/scijava/module/ModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleRunner.java b/src/main/java/org/scijava/module/ModuleRunner.java index 7de66702f..49879fe71 100644 --- a/src/main/java/org/scijava/module/ModuleRunner.java +++ b/src/main/java/org/scijava/module/ModuleRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/ModuleService.java b/src/main/java/org/scijava/module/ModuleService.java index ad1ae76d3..8b8ed2f51 100644 --- a/src/main/java/org/scijava/module/ModuleService.java +++ b/src/main/java/org/scijava/module/ModuleService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModule.java b/src/main/java/org/scijava/module/MutableModule.java index 487c98f00..87e839206 100644 --- a/src/main/java/org/scijava/module/MutableModule.java +++ b/src/main/java/org/scijava/module/MutableModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModuleInfo.java b/src/main/java/org/scijava/module/MutableModuleInfo.java index 7dd5bffdd..fd3cbbb2d 100644 --- a/src/main/java/org/scijava/module/MutableModuleInfo.java +++ b/src/main/java/org/scijava/module/MutableModuleInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/MutableModuleItem.java b/src/main/java/org/scijava/module/MutableModuleItem.java index 73f952a7e..a3b4ccc09 100644 --- a/src/main/java/org/scijava/module/MutableModuleItem.java +++ b/src/main/java/org/scijava/module/MutableModuleItem.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java b/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java index 4ad43d60d..9016e323a 100644 --- a/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleCanceledEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleErroredEvent.java b/src/main/java/org/scijava/module/event/ModuleErroredEvent.java index ce0fd6924..364772b38 100644 --- a/src/main/java/org/scijava/module/event/ModuleErroredEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleErroredEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleEvent.java b/src/main/java/org/scijava/module/event/ModuleEvent.java index d00c7ca09..96c3ddca3 100644 --- a/src/main/java/org/scijava/module/event/ModuleEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java index eecd5c063..2942ea56d 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java index 2cd97f867..f1fd53f5c 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutingEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java b/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java index c19ba0535..940a9d8e0 100644 --- a/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleExecutionEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java b/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java index 9bc5604b3..692be5b92 100644 --- a/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleFinishedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java b/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java index f92330682..9d42be6ab 100644 --- a/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java +++ b/src/main/java/org/scijava/module/event/ModulePostprocessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java b/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java index 92e1ab81e..760c2c55f 100644 --- a/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java +++ b/src/main/java/org/scijava/module/event/ModulePreprocessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleProcessEvent.java b/src/main/java/org/scijava/module/event/ModuleProcessEvent.java index 3588bc103..b58046091 100644 --- a/src/main/java/org/scijava/module/event/ModuleProcessEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleProcessEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModuleStartedEvent.java b/src/main/java/org/scijava/module/event/ModuleStartedEvent.java index 5da7e5fe7..975c5e8af 100644 --- a/src/main/java/org/scijava/module/event/ModuleStartedEvent.java +++ b/src/main/java/org/scijava/module/event/ModuleStartedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesAddedEvent.java b/src/main/java/org/scijava/module/event/ModulesAddedEvent.java index b32385ae3..aa3b3877c 100644 --- a/src/main/java/org/scijava/module/event/ModulesAddedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesListEvent.java b/src/main/java/org/scijava/module/event/ModulesListEvent.java index 5f6cca8c3..95b2c1c28 100644 --- a/src/main/java/org/scijava/module/event/ModulesListEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java b/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java index f8a9a9780..f60959dbc 100644 --- a/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java b/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java index 075f1f826..a0a14f75d 100644 --- a/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java +++ b/src/main/java/org/scijava/module/event/ModulesUpdatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java b/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java index 575fec9b3..8ac5886d5 100644 --- a/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/AbstractPostprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java b/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java index 53cbac997..4f5f625ca 100644 --- a/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/AbstractPreprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java b/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java index 0e30c3935..b373722ee 100644 --- a/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java +++ b/src/main/java/org/scijava/module/process/AbstractSingleInputPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java b/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java index 545261ffc..fff89a404 100644 --- a/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/CheckInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DebugPostprocessor.java b/src/main/java/org/scijava/module/process/DebugPostprocessor.java index af8bd28c2..2760cea81 100644 --- a/src/main/java/org/scijava/module/process/DebugPostprocessor.java +++ b/src/main/java/org/scijava/module/process/DebugPostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DebugPreprocessor.java b/src/main/java/org/scijava/module/process/DebugPreprocessor.java index 8e33d1088..59db93a4e 100644 --- a/src/main/java/org/scijava/module/process/DebugPreprocessor.java +++ b/src/main/java/org/scijava/module/process/DebugPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java b/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java index 28c951188..b85d7ce60 100644 --- a/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java +++ b/src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/GatewayPreprocessor.java b/src/main/java/org/scijava/module/process/GatewayPreprocessor.java index b59b8c8cf..c080e8100 100644 --- a/src/main/java/org/scijava/module/process/GatewayPreprocessor.java +++ b/src/main/java/org/scijava/module/process/GatewayPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/InitPreprocessor.java b/src/main/java/org/scijava/module/process/InitPreprocessor.java index 89c6af4d7..7cbe03d34 100644 --- a/src/main/java/org/scijava/module/process/InitPreprocessor.java +++ b/src/main/java/org/scijava/module/process/InitPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java b/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java index 228058fac..abf184e9f 100644 --- a/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/LoadInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java index 7f4b5531e..2be46df60 100644 --- a/src/main/java/org/scijava/module/process/LoggerPreprocessor.java +++ b/src/main/java/org/scijava/module/process/LoggerPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModulePostprocessor.java b/src/main/java/org/scijava/module/process/ModulePostprocessor.java index ee9a06864..528c6a815 100644 --- a/src/main/java/org/scijava/module/process/ModulePostprocessor.java +++ b/src/main/java/org/scijava/module/process/ModulePostprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModulePreprocessor.java b/src/main/java/org/scijava/module/process/ModulePreprocessor.java index a90e04b8f..a1b65e315 100644 --- a/src/main/java/org/scijava/module/process/ModulePreprocessor.java +++ b/src/main/java/org/scijava/module/process/ModulePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ModuleProcessor.java b/src/main/java/org/scijava/module/process/ModuleProcessor.java index 67284b0a1..696e06602 100644 --- a/src/main/java/org/scijava/module/process/ModuleProcessor.java +++ b/src/main/java/org/scijava/module/process/ModuleProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/PostprocessorPlugin.java b/src/main/java/org/scijava/module/process/PostprocessorPlugin.java index 21eccd05f..8c0dc970b 100644 --- a/src/main/java/org/scijava/module/process/PostprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/PostprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/PreprocessorPlugin.java b/src/main/java/org/scijava/module/process/PreprocessorPlugin.java index fb8765a20..2a13be6e0 100644 --- a/src/main/java/org/scijava/module/process/PreprocessorPlugin.java +++ b/src/main/java/org/scijava/module/process/PreprocessorPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java b/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java index c92e54bb8..0cabffa55 100644 --- a/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java +++ b/src/main/java/org/scijava/module/process/SaveInputsPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ServicePreprocessor.java b/src/main/java/org/scijava/module/process/ServicePreprocessor.java index 75c66526e..c195ffa93 100644 --- a/src/main/java/org/scijava/module/process/ServicePreprocessor.java +++ b/src/main/java/org/scijava/module/process/ServicePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/process/ValidityPreprocessor.java b/src/main/java/org/scijava/module/process/ValidityPreprocessor.java index 47c523036..78666b9bf 100644 --- a/src/main/java/org/scijava/module/process/ValidityPreprocessor.java +++ b/src/main/java/org/scijava/module/process/ValidityPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/module/run/ModuleCodeRunner.java b/src/main/java/org/scijava/module/run/ModuleCodeRunner.java index 15faa89ce..1e6ee836b 100644 --- a/src/main/java/org/scijava/module/run/ModuleCodeRunner.java +++ b/src/main/java/org/scijava/module/run/ModuleCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/DefaultObjectService.java b/src/main/java/org/scijava/object/DefaultObjectService.java index 7efa98f4b..ccd8218a1 100644 --- a/src/main/java/org/scijava/object/DefaultObjectService.java +++ b/src/main/java/org/scijava/object/DefaultObjectService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/LazyObjects.java b/src/main/java/org/scijava/object/LazyObjects.java index 8d90f18b0..7a2ac555a 100644 --- a/src/main/java/org/scijava/object/LazyObjects.java +++ b/src/main/java/org/scijava/object/LazyObjects.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/NamedObjectIndex.java b/src/main/java/org/scijava/object/NamedObjectIndex.java index a37c1eff1..a05f326f1 100644 --- a/src/main/java/org/scijava/object/NamedObjectIndex.java +++ b/src/main/java/org/scijava/object/NamedObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/ObjectIndex.java b/src/main/java/org/scijava/object/ObjectIndex.java index 3bc0567b0..c8c9df2c5 100644 --- a/src/main/java/org/scijava/object/ObjectIndex.java +++ b/src/main/java/org/scijava/object/ObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/ObjectService.java b/src/main/java/org/scijava/object/ObjectService.java index 7fce98b07..478be8af1 100644 --- a/src/main/java/org/scijava/object/ObjectService.java +++ b/src/main/java/org/scijava/object/ObjectService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/SortedObjectIndex.java b/src/main/java/org/scijava/object/SortedObjectIndex.java index bb233bf26..0ffec7b19 100644 --- a/src/main/java/org/scijava/object/SortedObjectIndex.java +++ b/src/main/java/org/scijava/object/SortedObjectIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ListEvent.java b/src/main/java/org/scijava/object/event/ListEvent.java index 84f8026a8..d13533817 100644 --- a/src/main/java/org/scijava/object/event/ListEvent.java +++ b/src/main/java/org/scijava/object/event/ListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java b/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java index 7e35c68e4..53ad97b26 100644 --- a/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java b/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java index fc5e237b6..1825bbc87 100644 --- a/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectDeletedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectEvent.java b/src/main/java/org/scijava/object/event/ObjectEvent.java index 6730e23d1..e2b5abe73 100644 --- a/src/main/java/org/scijava/object/event/ObjectEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java b/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java index 33b1291d1..e87836338 100644 --- a/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectModifiedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java b/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java index 1ec22cb3a..7487ee5ed 100644 --- a/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsListEvent.java b/src/main/java/org/scijava/object/event/ObjectsListEvent.java index d77e8f3cd..de8aaf9e2 100644 --- a/src/main/java/org/scijava/object/event/ObjectsListEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java b/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java index 938b55b8e..2bf0f49ff 100644 --- a/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java +++ b/src/main/java/org/scijava/object/event/ObjectsRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/DefaultOptionsService.java b/src/main/java/org/scijava/options/DefaultOptionsService.java index 03379d9d8..a7239d833 100644 --- a/src/main/java/org/scijava/options/DefaultOptionsService.java +++ b/src/main/java/org/scijava/options/DefaultOptionsService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/OptionsPlugin.java b/src/main/java/org/scijava/options/OptionsPlugin.java index c86b0f34d..815c640e9 100644 --- a/src/main/java/org/scijava/options/OptionsPlugin.java +++ b/src/main/java/org/scijava/options/OptionsPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/OptionsService.java b/src/main/java/org/scijava/options/OptionsService.java index 69353a5eb..fcb68ed08 100644 --- a/src/main/java/org/scijava/options/OptionsService.java +++ b/src/main/java/org/scijava/options/OptionsService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/options/event/OptionsEvent.java b/src/main/java/org/scijava/options/event/OptionsEvent.java index 42e5cd1b7..20cc74f48 100644 --- a/src/main/java/org/scijava/options/event/OptionsEvent.java +++ b/src/main/java/org/scijava/options/event/OptionsEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/DefaultParseService.java b/src/main/java/org/scijava/parse/DefaultParseService.java index b8d46f0f8..b686d558b 100644 --- a/src/main/java/org/scijava/parse/DefaultParseService.java +++ b/src/main/java/org/scijava/parse/DefaultParseService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/Item.java b/src/main/java/org/scijava/parse/Item.java index 3ef55bcf4..4cba11748 100644 --- a/src/main/java/org/scijava/parse/Item.java +++ b/src/main/java/org/scijava/parse/Item.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/Items.java b/src/main/java/org/scijava/parse/Items.java index 1b9ac7dd1..49dbaf9ad 100644 --- a/src/main/java/org/scijava/parse/Items.java +++ b/src/main/java/org/scijava/parse/Items.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/parse/ParseService.java b/src/main/java/org/scijava/parse/ParseService.java index 19a705bcf..ba20fb813 100644 --- a/src/main/java/org/scijava/parse/ParseService.java +++ b/src/main/java/org/scijava/parse/ParseService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/AbstractPlatform.java b/src/main/java/org/scijava/platform/AbstractPlatform.java index 73710dfc2..f20f49b14 100644 --- a/src/main/java/org/scijava/platform/AbstractPlatform.java +++ b/src/main/java/org/scijava/platform/AbstractPlatform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/AppEventService.java b/src/main/java/org/scijava/platform/AppEventService.java index b10605b52..16b191878 100644 --- a/src/main/java/org/scijava/platform/AppEventService.java +++ b/src/main/java/org/scijava/platform/AppEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultAppEventService.java b/src/main/java/org/scijava/platform/DefaultAppEventService.java index 55b276774..bd0c34424 100644 --- a/src/main/java/org/scijava/platform/DefaultAppEventService.java +++ b/src/main/java/org/scijava/platform/DefaultAppEventService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultPlatform.java b/src/main/java/org/scijava/platform/DefaultPlatform.java index fbd7e67f0..f9d971b58 100644 --- a/src/main/java/org/scijava/platform/DefaultPlatform.java +++ b/src/main/java/org/scijava/platform/DefaultPlatform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/DefaultPlatformService.java b/src/main/java/org/scijava/platform/DefaultPlatformService.java index 5804a11a4..e5effaaf1 100644 --- a/src/main/java/org/scijava/platform/DefaultPlatformService.java +++ b/src/main/java/org/scijava/platform/DefaultPlatformService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/Platform.java b/src/main/java/org/scijava/platform/Platform.java index 948024f61..96e0e6743 100644 --- a/src/main/java/org/scijava/platform/Platform.java +++ b/src/main/java/org/scijava/platform/Platform.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/PlatformService.java b/src/main/java/org/scijava/platform/PlatformService.java index c8e796e7f..68e07fe9f 100644 --- a/src/main/java/org/scijava/platform/PlatformService.java +++ b/src/main/java/org/scijava/platform/PlatformService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppAboutEvent.java b/src/main/java/org/scijava/platform/event/AppAboutEvent.java index b266a20bb..251d253a7 100644 --- a/src/main/java/org/scijava/platform/event/AppAboutEvent.java +++ b/src/main/java/org/scijava/platform/event/AppAboutEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppFocusEvent.java b/src/main/java/org/scijava/platform/event/AppFocusEvent.java index 4f65243fd..8d1278a2f 100644 --- a/src/main/java/org/scijava/platform/event/AppFocusEvent.java +++ b/src/main/java/org/scijava/platform/event/AppFocusEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java b/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java index 94244046e..23b119891 100644 --- a/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java +++ b/src/main/java/org/scijava/platform/event/AppMenusCreatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java b/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java index 6a51cf9da..0a5d85fa7 100644 --- a/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java +++ b/src/main/java/org/scijava/platform/event/AppOpenFilesEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java b/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java index 650200905..c5221df29 100644 --- a/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java +++ b/src/main/java/org/scijava/platform/event/AppPreferencesEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppPrintEvent.java b/src/main/java/org/scijava/platform/event/AppPrintEvent.java index 7325f24cc..0c764a718 100644 --- a/src/main/java/org/scijava/platform/event/AppPrintEvent.java +++ b/src/main/java/org/scijava/platform/event/AppPrintEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppQuitEvent.java b/src/main/java/org/scijava/platform/event/AppQuitEvent.java index 002192a48..c3198e627 100644 --- a/src/main/java/org/scijava/platform/event/AppQuitEvent.java +++ b/src/main/java/org/scijava/platform/event/AppQuitEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppReOpenEvent.java b/src/main/java/org/scijava/platform/event/AppReOpenEvent.java index f5657e7b2..47a252476 100644 --- a/src/main/java/org/scijava/platform/event/AppReOpenEvent.java +++ b/src/main/java/org/scijava/platform/event/AppReOpenEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java b/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java index 678e2e839..c78337b1a 100644 --- a/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppScreenSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppSleepEvent.java b/src/main/java/org/scijava/platform/event/AppSleepEvent.java index c8e102725..eb3b09762 100644 --- a/src/main/java/org/scijava/platform/event/AppSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java b/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java index 5fe8a7286..8e29b17a3 100644 --- a/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java +++ b/src/main/java/org/scijava/platform/event/AppSystemSleepEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java b/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java index bd99e0c74..b5d608118 100644 --- a/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java +++ b/src/main/java/org/scijava/platform/event/AppUserSessionEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/AppVisibleEvent.java b/src/main/java/org/scijava/platform/event/AppVisibleEvent.java index 45a9fb4e2..8a029561d 100644 --- a/src/main/java/org/scijava/platform/event/AppVisibleEvent.java +++ b/src/main/java/org/scijava/platform/event/AppVisibleEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/platform/event/ApplicationEvent.java b/src/main/java/org/scijava/platform/event/ApplicationEvent.java index 0038af03f..4856c0748 100644 --- a/src/main/java/org/scijava/platform/event/ApplicationEvent.java +++ b/src/main/java/org/scijava/platform/event/ApplicationEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java b/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java index b0e475b68..995bde741 100644 --- a/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractHandlerPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractHandlerService.java b/src/main/java/org/scijava/plugin/AbstractHandlerService.java index f2562e9ae..af501d619 100644 --- a/src/main/java/org/scijava/plugin/AbstractHandlerService.java +++ b/src/main/java/org/scijava/plugin/AbstractHandlerService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractPTService.java b/src/main/java/org/scijava/plugin/AbstractPTService.java index 5170d256e..e84ad8c07 100644 --- a/src/main/java/org/scijava/plugin/AbstractPTService.java +++ b/src/main/java/org/scijava/plugin/AbstractPTService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractRichPlugin.java b/src/main/java/org/scijava/plugin/AbstractRichPlugin.java index 5f804afa7..73c37cb3f 100644 --- a/src/main/java/org/scijava/plugin/AbstractRichPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractRichPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractSingletonService.java b/src/main/java/org/scijava/plugin/AbstractSingletonService.java index fe51559aa..497528dc8 100644 --- a/src/main/java/org/scijava/plugin/AbstractSingletonService.java +++ b/src/main/java/org/scijava/plugin/AbstractSingletonService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java b/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java index 40929cf32..46dc75ead 100644 --- a/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractTypedPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractTypedService.java b/src/main/java/org/scijava/plugin/AbstractTypedService.java index 67fe4a669..9929517f2 100644 --- a/src/main/java/org/scijava/plugin/AbstractTypedService.java +++ b/src/main/java/org/scijava/plugin/AbstractTypedService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java b/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java index 525fd50c3..9f0281c74 100644 --- a/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java +++ b/src/main/java/org/scijava/plugin/AbstractWrapperPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/AbstractWrapperService.java b/src/main/java/org/scijava/plugin/AbstractWrapperService.java index c05cb94ad..b60bca1ae 100644 --- a/src/main/java/org/scijava/plugin/AbstractWrapperService.java +++ b/src/main/java/org/scijava/plugin/AbstractWrapperService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Attr.java b/src/main/java/org/scijava/plugin/Attr.java index 4287edcc0..717550439 100644 --- a/src/main/java/org/scijava/plugin/Attr.java +++ b/src/main/java/org/scijava/plugin/Attr.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/DefaultPluginFinder.java b/src/main/java/org/scijava/plugin/DefaultPluginFinder.java index 0b16c9d58..e2eb4949c 100644 --- a/src/main/java/org/scijava/plugin/DefaultPluginFinder.java +++ b/src/main/java/org/scijava/plugin/DefaultPluginFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/DefaultPluginService.java b/src/main/java/org/scijava/plugin/DefaultPluginService.java index c904ffb73..8193d8d5e 100644 --- a/src/main/java/org/scijava/plugin/DefaultPluginService.java +++ b/src/main/java/org/scijava/plugin/DefaultPluginService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HandlerPlugin.java b/src/main/java/org/scijava/plugin/HandlerPlugin.java index f2fe8aaf8..33f179bfb 100644 --- a/src/main/java/org/scijava/plugin/HandlerPlugin.java +++ b/src/main/java/org/scijava/plugin/HandlerPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HandlerService.java b/src/main/java/org/scijava/plugin/HandlerService.java index 168f977d1..65a3374b8 100644 --- a/src/main/java/org/scijava/plugin/HandlerService.java +++ b/src/main/java/org/scijava/plugin/HandlerService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/HasPluginInfo.java b/src/main/java/org/scijava/plugin/HasPluginInfo.java index 3f6cfaf1e..ee65fb550 100644 --- a/src/main/java/org/scijava/plugin/HasPluginInfo.java +++ b/src/main/java/org/scijava/plugin/HasPluginInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Menu.java b/src/main/java/org/scijava/plugin/Menu.java index d25e7fc0a..a0b504779 100644 --- a/src/main/java/org/scijava/plugin/Menu.java +++ b/src/main/java/org/scijava/plugin/Menu.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PTService.java b/src/main/java/org/scijava/plugin/PTService.java index 191c8064a..8157261cf 100644 --- a/src/main/java/org/scijava/plugin/PTService.java +++ b/src/main/java/org/scijava/plugin/PTService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Parameter.java b/src/main/java/org/scijava/plugin/Parameter.java index 1ed64c82d..c21d89fbc 100644 --- a/src/main/java/org/scijava/plugin/Parameter.java +++ b/src/main/java/org/scijava/plugin/Parameter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/Plugin.java b/src/main/java/org/scijava/plugin/Plugin.java index 5a8fbc5cb..5e64f9411 100644 --- a/src/main/java/org/scijava/plugin/Plugin.java +++ b/src/main/java/org/scijava/plugin/Plugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginFinder.java b/src/main/java/org/scijava/plugin/PluginFinder.java index 450af2428..3539c7861 100644 --- a/src/main/java/org/scijava/plugin/PluginFinder.java +++ b/src/main/java/org/scijava/plugin/PluginFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginIndex.java b/src/main/java/org/scijava/plugin/PluginIndex.java index b1ae59bd4..73153bcb9 100644 --- a/src/main/java/org/scijava/plugin/PluginIndex.java +++ b/src/main/java/org/scijava/plugin/PluginIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginInfo.java b/src/main/java/org/scijava/plugin/PluginInfo.java index dc127f074..8e4a4ce85 100644 --- a/src/main/java/org/scijava/plugin/PluginInfo.java +++ b/src/main/java/org/scijava/plugin/PluginInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/PluginService.java b/src/main/java/org/scijava/plugin/PluginService.java index e85bf76db..dc579969a 100644 --- a/src/main/java/org/scijava/plugin/PluginService.java +++ b/src/main/java/org/scijava/plugin/PluginService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/RichPlugin.java b/src/main/java/org/scijava/plugin/RichPlugin.java index 8f5eb862b..aa5c1d546 100644 --- a/src/main/java/org/scijava/plugin/RichPlugin.java +++ b/src/main/java/org/scijava/plugin/RichPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SciJavaPlugin.java b/src/main/java/org/scijava/plugin/SciJavaPlugin.java index b7bc4c919..4bef823d5 100644 --- a/src/main/java/org/scijava/plugin/SciJavaPlugin.java +++ b/src/main/java/org/scijava/plugin/SciJavaPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SingletonPlugin.java b/src/main/java/org/scijava/plugin/SingletonPlugin.java index 79de0e2e0..87e3afba9 100644 --- a/src/main/java/org/scijava/plugin/SingletonPlugin.java +++ b/src/main/java/org/scijava/plugin/SingletonPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SingletonService.java b/src/main/java/org/scijava/plugin/SingletonService.java index 3ba80f8ca..9171d8f8d 100644 --- a/src/main/java/org/scijava/plugin/SingletonService.java +++ b/src/main/java/org/scijava/plugin/SingletonService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/SortablePlugin.java b/src/main/java/org/scijava/plugin/SortablePlugin.java index 257afa423..5b29d8a12 100644 --- a/src/main/java/org/scijava/plugin/SortablePlugin.java +++ b/src/main/java/org/scijava/plugin/SortablePlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/TypedPlugin.java b/src/main/java/org/scijava/plugin/TypedPlugin.java index a3f6033ca..c6d04b019 100644 --- a/src/main/java/org/scijava/plugin/TypedPlugin.java +++ b/src/main/java/org/scijava/plugin/TypedPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/TypedService.java b/src/main/java/org/scijava/plugin/TypedService.java index 868144629..a49b329bb 100644 --- a/src/main/java/org/scijava/plugin/TypedService.java +++ b/src/main/java/org/scijava/plugin/TypedService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/WrapperPlugin.java b/src/main/java/org/scijava/plugin/WrapperPlugin.java index 2cf9a517c..62efbea8c 100644 --- a/src/main/java/org/scijava/plugin/WrapperPlugin.java +++ b/src/main/java/org/scijava/plugin/WrapperPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/WrapperService.java b/src/main/java/org/scijava/plugin/WrapperService.java index 3225df43b..593a4f797 100644 --- a/src/main/java/org/scijava/plugin/WrapperService.java +++ b/src/main/java/org/scijava/plugin/WrapperService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java b/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java index 6a1fe60fe..0caad3bfb 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsAddedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsListEvent.java b/src/main/java/org/scijava/plugin/event/PluginsListEvent.java index 0f28602fc..edaf3dbb1 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsListEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsListEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java b/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java index 978a4e2de..1709f484c 100644 --- a/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java +++ b/src/main/java/org/scijava/plugin/event/PluginsRemovedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/AbstractPrefService.java b/src/main/java/org/scijava/prefs/AbstractPrefService.java index 7c1b98cba..1bf55eb1a 100644 --- a/src/main/java/org/scijava/prefs/AbstractPrefService.java +++ b/src/main/java/org/scijava/prefs/AbstractPrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/DefaultPrefService.java b/src/main/java/org/scijava/prefs/DefaultPrefService.java index f174db6c0..78efeae4a 100644 --- a/src/main/java/org/scijava/prefs/DefaultPrefService.java +++ b/src/main/java/org/scijava/prefs/DefaultPrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/prefs/PrefService.java b/src/main/java/org/scijava/prefs/PrefService.java index 30c91aa6e..d2e285d0d 100644 --- a/src/main/java/org/scijava/prefs/PrefService.java +++ b/src/main/java/org/scijava/prefs/PrefService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/AbstractCodeRunner.java b/src/main/java/org/scijava/run/AbstractCodeRunner.java index 5d02b3634..e60bc4f64 100644 --- a/src/main/java/org/scijava/run/AbstractCodeRunner.java +++ b/src/main/java/org/scijava/run/AbstractCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/CodeRunner.java b/src/main/java/org/scijava/run/CodeRunner.java index d1def7ea2..9bef19655 100644 --- a/src/main/java/org/scijava/run/CodeRunner.java +++ b/src/main/java/org/scijava/run/CodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/DefaultRunService.java b/src/main/java/org/scijava/run/DefaultRunService.java index 883f52e10..ef8bee6e3 100644 --- a/src/main/java/org/scijava/run/DefaultRunService.java +++ b/src/main/java/org/scijava/run/DefaultRunService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/RunService.java b/src/main/java/org/scijava/run/RunService.java index 3fd6cb61e..0c030b383 100644 --- a/src/main/java/org/scijava/run/RunService.java +++ b/src/main/java/org/scijava/run/RunService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/run/console/RunArgument.java b/src/main/java/org/scijava/run/console/RunArgument.java index 373da220d..ce84a31cf 100644 --- a/src/main/java/org/scijava/run/console/RunArgument.java +++ b/src/main/java/org/scijava/run/console/RunArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractAutoCompleter.java b/src/main/java/org/scijava/script/AbstractAutoCompleter.java index effad4d7f..b5b784448 100644 --- a/src/main/java/org/scijava/script/AbstractAutoCompleter.java +++ b/src/main/java/org/scijava/script/AbstractAutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptContext.java b/src/main/java/org/scijava/script/AbstractScriptContext.java index bc2290a23..30ccac002 100644 --- a/src/main/java/org/scijava/script/AbstractScriptContext.java +++ b/src/main/java/org/scijava/script/AbstractScriptContext.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptEngine.java b/src/main/java/org/scijava/script/AbstractScriptEngine.java index b62aa5c2f..6875cd203 100644 --- a/src/main/java/org/scijava/script/AbstractScriptEngine.java +++ b/src/main/java/org/scijava/script/AbstractScriptEngine.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptHeader.java b/src/main/java/org/scijava/script/AbstractScriptHeader.java index 03306775e..131ebe7bb 100644 --- a/src/main/java/org/scijava/script/AbstractScriptHeader.java +++ b/src/main/java/org/scijava/script/AbstractScriptHeader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AbstractScriptLanguage.java b/src/main/java/org/scijava/script/AbstractScriptLanguage.java index f99cba338..1aa04fbba 100644 --- a/src/main/java/org/scijava/script/AbstractScriptLanguage.java +++ b/src/main/java/org/scijava/script/AbstractScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AdaptedScriptEngine.java b/src/main/java/org/scijava/script/AdaptedScriptEngine.java index 3144c16af..3c7acd8ef 100644 --- a/src/main/java/org/scijava/script/AdaptedScriptEngine.java +++ b/src/main/java/org/scijava/script/AdaptedScriptEngine.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java index 084256755..449068235 100644 --- a/src/main/java/org/scijava/script/AdaptedScriptLanguage.java +++ b/src/main/java/org/scijava/script/AdaptedScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AutoCompleter.java b/src/main/java/org/scijava/script/AutoCompleter.java index 190dddd80..632e7498b 100644 --- a/src/main/java/org/scijava/script/AutoCompleter.java +++ b/src/main/java/org/scijava/script/AutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/AutoCompletionResult.java b/src/main/java/org/scijava/script/AutoCompletionResult.java index 5d65a3f36..d3eecd426 100644 --- a/src/main/java/org/scijava/script/AutoCompletionResult.java +++ b/src/main/java/org/scijava/script/AutoCompletionResult.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/CodeGenerator.java b/src/main/java/org/scijava/script/CodeGenerator.java index ae578fb40..fa2e6d624 100644 --- a/src/main/java/org/scijava/script/CodeGenerator.java +++ b/src/main/java/org/scijava/script/CodeGenerator.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/CodeGeneratorJava.java b/src/main/java/org/scijava/script/CodeGeneratorJava.java index 69a038be1..61135865c 100644 --- a/src/main/java/org/scijava/script/CodeGeneratorJava.java +++ b/src/main/java/org/scijava/script/CodeGeneratorJava.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultAutoCompleter.java b/src/main/java/org/scijava/script/DefaultAutoCompleter.java index 18ebb0dcb..ef3890a16 100644 --- a/src/main/java/org/scijava/script/DefaultAutoCompleter.java +++ b/src/main/java/org/scijava/script/DefaultAutoCompleter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptHeaderService.java b/src/main/java/org/scijava/script/DefaultScriptHeaderService.java index fd34edbd6..3593d98da 100644 --- a/src/main/java/org/scijava/script/DefaultScriptHeaderService.java +++ b/src/main/java/org/scijava/script/DefaultScriptHeaderService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java index 664ccc300..b0e569824 100644 --- a/src/main/java/org/scijava/script/DefaultScriptInterpreter.java +++ b/src/main/java/org/scijava/script/DefaultScriptInterpreter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/DefaultScriptService.java b/src/main/java/org/scijava/script/DefaultScriptService.java index f8bd5e952..ba308b947 100644 --- a/src/main/java/org/scijava/script/DefaultScriptService.java +++ b/src/main/java/org/scijava/script/DefaultScriptService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/InvocationObject.java b/src/main/java/org/scijava/script/InvocationObject.java index 1e768a057..6ec2e5260 100644 --- a/src/main/java/org/scijava/script/InvocationObject.java +++ b/src/main/java/org/scijava/script/InvocationObject.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ParameterObject.java b/src/main/java/org/scijava/script/ParameterObject.java index df2374beb..f6d2ada7d 100644 --- a/src/main/java/org/scijava/script/ParameterObject.java +++ b/src/main/java/org/scijava/script/ParameterObject.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptCLI.java b/src/main/java/org/scijava/script/ScriptCLI.java index db53036a3..f04d344b5 100644 --- a/src/main/java/org/scijava/script/ScriptCLI.java +++ b/src/main/java/org/scijava/script/ScriptCLI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptFinder.java b/src/main/java/org/scijava/script/ScriptFinder.java index 55aad7ed5..27a7aa7b7 100644 --- a/src/main/java/org/scijava/script/ScriptFinder.java +++ b/src/main/java/org/scijava/script/ScriptFinder.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptHeader.java b/src/main/java/org/scijava/script/ScriptHeader.java index fbaff7497..c1a3d3269 100644 --- a/src/main/java/org/scijava/script/ScriptHeader.java +++ b/src/main/java/org/scijava/script/ScriptHeader.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptHeaderService.java b/src/main/java/org/scijava/script/ScriptHeaderService.java index c1e167ade..c697d90f2 100644 --- a/src/main/java/org/scijava/script/ScriptHeaderService.java +++ b/src/main/java/org/scijava/script/ScriptHeaderService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptInfo.java b/src/main/java/org/scijava/script/ScriptInfo.java index f643e0a54..a6c00d5c6 100644 --- a/src/main/java/org/scijava/script/ScriptInfo.java +++ b/src/main/java/org/scijava/script/ScriptInfo.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptInterpreter.java b/src/main/java/org/scijava/script/ScriptInterpreter.java index 491847136..8faebc3c3 100644 --- a/src/main/java/org/scijava/script/ScriptInterpreter.java +++ b/src/main/java/org/scijava/script/ScriptInterpreter.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptLanguage.java b/src/main/java/org/scijava/script/ScriptLanguage.java index f841f32c1..4a5446292 100644 --- a/src/main/java/org/scijava/script/ScriptLanguage.java +++ b/src/main/java/org/scijava/script/ScriptLanguage.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptLanguageIndex.java b/src/main/java/org/scijava/script/ScriptLanguageIndex.java index fe138cd28..ddab0a36e 100644 --- a/src/main/java/org/scijava/script/ScriptLanguageIndex.java +++ b/src/main/java/org/scijava/script/ScriptLanguageIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptModule.java b/src/main/java/org/scijava/script/ScriptModule.java index dedf744f4..b686b52a9 100644 --- a/src/main/java/org/scijava/script/ScriptModule.java +++ b/src/main/java/org/scijava/script/ScriptModule.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptREPL.java b/src/main/java/org/scijava/script/ScriptREPL.java index 2a93a92c1..9c1b838dd 100644 --- a/src/main/java/org/scijava/script/ScriptREPL.java +++ b/src/main/java/org/scijava/script/ScriptREPL.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/ScriptService.java b/src/main/java/org/scijava/script/ScriptService.java index c1a61044d..6d1d5f5b5 100644 --- a/src/main/java/org/scijava/script/ScriptService.java +++ b/src/main/java/org/scijava/script/ScriptService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/console/RunScriptArgument.java b/src/main/java/org/scijava/script/console/RunScriptArgument.java index b78065ee2..df7335169 100644 --- a/src/main/java/org/scijava/script/console/RunScriptArgument.java +++ b/src/main/java/org/scijava/script/console/RunScriptArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/io/ScriptIOPlugin.java b/src/main/java/org/scijava/script/io/ScriptIOPlugin.java index b6b30209f..dec94b517 100644 --- a/src/main/java/org/scijava/script/io/ScriptIOPlugin.java +++ b/src/main/java/org/scijava/script/io/ScriptIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java b/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java index ded8f418d..99fd73812 100644 --- a/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java +++ b/src/main/java/org/scijava/script/process/DefaultScriptProcessorService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java b/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java index 4dfa5ff38..4b1fe8c34 100644 --- a/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/DirectiveScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java b/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java index 2e0dfd703..d3988e9ef 100644 --- a/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ParameterScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptCallback.java b/src/main/java/org/scijava/script/process/ScriptCallback.java index 445dd157e..eaedad35c 100644 --- a/src/main/java/org/scijava/script/process/ScriptCallback.java +++ b/src/main/java/org/scijava/script/process/ScriptCallback.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java b/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java index fffc58568..40b905ede 100644 --- a/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ScriptDirectiveScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptProcessor.java b/src/main/java/org/scijava/script/process/ScriptProcessor.java index 415f51826..edeec681b 100644 --- a/src/main/java/org/scijava/script/process/ScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ScriptProcessorService.java b/src/main/java/org/scijava/script/process/ScriptProcessorService.java index 811ab47d4..a73b4ebb7 100644 --- a/src/main/java/org/scijava/script/process/ScriptProcessorService.java +++ b/src/main/java/org/scijava/script/process/ScriptProcessorService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java b/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java index f7edef985..6e3991590 100644 --- a/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java +++ b/src/main/java/org/scijava/script/process/ShebangScriptProcessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/script/run/ScriptCodeRunner.java b/src/main/java/org/scijava/script/run/ScriptCodeRunner.java index 8d4a4a61c..d016431ee 100644 --- a/src/main/java/org/scijava/script/run/ScriptCodeRunner.java +++ b/src/main/java/org/scijava/script/run/ScriptCodeRunner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/AbstractService.java b/src/main/java/org/scijava/service/AbstractService.java index 841c8c468..ce04e97e7 100644 --- a/src/main/java/org/scijava/service/AbstractService.java +++ b/src/main/java/org/scijava/service/AbstractService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/SciJavaService.java b/src/main/java/org/scijava/service/SciJavaService.java index 869ce3269..eb311bd80 100644 --- a/src/main/java/org/scijava/service/SciJavaService.java +++ b/src/main/java/org/scijava/service/SciJavaService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/Service.java b/src/main/java/org/scijava/service/Service.java index 392a6dc08..13f2c1081 100644 --- a/src/main/java/org/scijava/service/Service.java +++ b/src/main/java/org/scijava/service/Service.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/ServiceHelper.java b/src/main/java/org/scijava/service/ServiceHelper.java index d7ad8003e..3b06233ca 100644 --- a/src/main/java/org/scijava/service/ServiceHelper.java +++ b/src/main/java/org/scijava/service/ServiceHelper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/ServiceIndex.java b/src/main/java/org/scijava/service/ServiceIndex.java index 962952d3e..f926883a0 100644 --- a/src/main/java/org/scijava/service/ServiceIndex.java +++ b/src/main/java/org/scijava/service/ServiceIndex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java b/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java index 2b9e9a119..fe0109129 100644 --- a/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java +++ b/src/main/java/org/scijava/service/event/ServicesLoadedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/startup/DefaultStartupService.java b/src/main/java/org/scijava/startup/DefaultStartupService.java index 356437eb4..8131b6bc2 100644 --- a/src/main/java/org/scijava/startup/DefaultStartupService.java +++ b/src/main/java/org/scijava/startup/DefaultStartupService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/startup/StartupService.java b/src/main/java/org/scijava/startup/StartupService.java index 6a47f97d1..35e747b39 100644 --- a/src/main/java/org/scijava/startup/StartupService.java +++ b/src/main/java/org/scijava/startup/StartupService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/DefaultTask.java b/src/main/java/org/scijava/task/DefaultTask.java index a275c3505..048f7b773 100644 --- a/src/main/java/org/scijava/task/DefaultTask.java +++ b/src/main/java/org/scijava/task/DefaultTask.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/DefaultTaskService.java b/src/main/java/org/scijava/task/DefaultTaskService.java index 5ad770f25..147fd0eec 100644 --- a/src/main/java/org/scijava/task/DefaultTaskService.java +++ b/src/main/java/org/scijava/task/DefaultTaskService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/Task.java b/src/main/java/org/scijava/task/Task.java index a91cdcf6b..1e8004e53 100644 --- a/src/main/java/org/scijava/task/Task.java +++ b/src/main/java/org/scijava/task/Task.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/TaskService.java b/src/main/java/org/scijava/task/TaskService.java index 5bf0cb2f8..dfe5c0ffd 100644 --- a/src/main/java/org/scijava/task/TaskService.java +++ b/src/main/java/org/scijava/task/TaskService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/task/event/TaskEvent.java b/src/main/java/org/scijava/task/event/TaskEvent.java index 4173c3bc5..83a5d662c 100644 --- a/src/main/java/org/scijava/task/event/TaskEvent.java +++ b/src/main/java/org/scijava/task/event/TaskEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/test/TestUtils.java b/src/main/java/org/scijava/test/TestUtils.java index 692b4fd25..c375f6994 100644 --- a/src/main/java/org/scijava/test/TestUtils.java +++ b/src/main/java/org/scijava/test/TestUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/AbstractTextFormat.java b/src/main/java/org/scijava/text/AbstractTextFormat.java index 3bb2edc9e..766cb0874 100644 --- a/src/main/java/org/scijava/text/AbstractTextFormat.java +++ b/src/main/java/org/scijava/text/AbstractTextFormat.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/DefaultTextService.java b/src/main/java/org/scijava/text/DefaultTextService.java index a81ed7c0e..211fd25f2 100644 --- a/src/main/java/org/scijava/text/DefaultTextService.java +++ b/src/main/java/org/scijava/text/DefaultTextService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/TextFormat.java b/src/main/java/org/scijava/text/TextFormat.java index 05ec572c7..2ef04da75 100644 --- a/src/main/java/org/scijava/text/TextFormat.java +++ b/src/main/java/org/scijava/text/TextFormat.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/TextService.java b/src/main/java/org/scijava/text/TextService.java index 75bae744a..5149b2a38 100644 --- a/src/main/java/org/scijava/text/TextService.java +++ b/src/main/java/org/scijava/text/TextService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/DefaultTextIOService.java b/src/main/java/org/scijava/text/io/DefaultTextIOService.java index d27ec4657..21937f384 100644 --- a/src/main/java/org/scijava/text/io/DefaultTextIOService.java +++ b/src/main/java/org/scijava/text/io/DefaultTextIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/TextIOPlugin.java b/src/main/java/org/scijava/text/io/TextIOPlugin.java index 16e9ba34f..3e3d20efd 100644 --- a/src/main/java/org/scijava/text/io/TextIOPlugin.java +++ b/src/main/java/org/scijava/text/io/TextIOPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/text/io/TextIOService.java b/src/main/java/org/scijava/text/io/TextIOService.java index a218aec0f..ed48ab424 100644 --- a/src/main/java/org/scijava/text/io/TextIOService.java +++ b/src/main/java/org/scijava/text/io/TextIOService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/thread/DefaultThreadService.java b/src/main/java/org/scijava/thread/DefaultThreadService.java index 6f48f9e34..f34c38a6a 100644 --- a/src/main/java/org/scijava/thread/DefaultThreadService.java +++ b/src/main/java/org/scijava/thread/DefaultThreadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/thread/ThreadService.java b/src/main/java/org/scijava/thread/ThreadService.java index aeec0d1ba..b809a9a4b 100644 --- a/src/main/java/org/scijava/thread/ThreadService.java +++ b/src/main/java/org/scijava/thread/ThreadService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/AbstractTool.java b/src/main/java/org/scijava/tool/AbstractTool.java index 4ec4bd878..e83ada645 100644 --- a/src/main/java/org/scijava/tool/AbstractTool.java +++ b/src/main/java/org/scijava/tool/AbstractTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/CustomDrawnTool.java b/src/main/java/org/scijava/tool/CustomDrawnTool.java index 10aafc9db..4222b14b0 100644 --- a/src/main/java/org/scijava/tool/CustomDrawnTool.java +++ b/src/main/java/org/scijava/tool/CustomDrawnTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/DefaultToolService.java b/src/main/java/org/scijava/tool/DefaultToolService.java index e59976a8f..d7d653399 100644 --- a/src/main/java/org/scijava/tool/DefaultToolService.java +++ b/src/main/java/org/scijava/tool/DefaultToolService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/DummyTool.java b/src/main/java/org/scijava/tool/DummyTool.java index 6dc220279..c2e858e00 100644 --- a/src/main/java/org/scijava/tool/DummyTool.java +++ b/src/main/java/org/scijava/tool/DummyTool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/IconDrawer.java b/src/main/java/org/scijava/tool/IconDrawer.java index 2493b7880..ff4b83a40 100644 --- a/src/main/java/org/scijava/tool/IconDrawer.java +++ b/src/main/java/org/scijava/tool/IconDrawer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/IconService.java b/src/main/java/org/scijava/tool/IconService.java index 0d6349818..02be9b223 100644 --- a/src/main/java/org/scijava/tool/IconService.java +++ b/src/main/java/org/scijava/tool/IconService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/Tool.java b/src/main/java/org/scijava/tool/Tool.java index 31adad6d6..c2a0d00f0 100644 --- a/src/main/java/org/scijava/tool/Tool.java +++ b/src/main/java/org/scijava/tool/Tool.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/ToolService.java b/src/main/java/org/scijava/tool/ToolService.java index 8fe2855f9..020a3e891 100644 --- a/src/main/java/org/scijava/tool/ToolService.java +++ b/src/main/java/org/scijava/tool/ToolService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java b/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java index e2eabdf0d..6df9190ef 100644 --- a/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolActivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java b/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java index 5b668aa23..78569c9ea 100644 --- a/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolDeactivatedEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/tool/event/ToolEvent.java b/src/main/java/org/scijava/tool/event/ToolEvent.java index 553fd83e1..85aed4d60 100644 --- a/src/main/java/org/scijava/tool/event/ToolEvent.java +++ b/src/main/java/org/scijava/tool/event/ToolEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ARGBPlane.java b/src/main/java/org/scijava/ui/ARGBPlane.java index b30d9df8f..ff21f7bd7 100644 --- a/src/main/java/org/scijava/ui/ARGBPlane.java +++ b/src/main/java/org/scijava/ui/ARGBPlane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java b/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java index b29383470..a31e09d59 100644 --- a/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java +++ b/src/main/java/org/scijava/ui/AbstractInputHarvesterPlugin.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractUIInputWidget.java b/src/main/java/org/scijava/ui/AbstractUIInputWidget.java index 606864da0..32d324ef1 100644 --- a/src/main/java/org/scijava/ui/AbstractUIInputWidget.java +++ b/src/main/java/org/scijava/ui/AbstractUIInputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/AbstractUserInterface.java b/src/main/java/org/scijava/ui/AbstractUserInterface.java index a3894158b..d1b91e527 100644 --- a/src/main/java/org/scijava/ui/AbstractUserInterface.java +++ b/src/main/java/org/scijava/ui/AbstractUserInterface.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ApplicationFrame.java b/src/main/java/org/scijava/ui/ApplicationFrame.java index 98a2ce24d..57fc6083f 100644 --- a/src/main/java/org/scijava/ui/ApplicationFrame.java +++ b/src/main/java/org/scijava/ui/ApplicationFrame.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/Arrangeable.java b/src/main/java/org/scijava/ui/Arrangeable.java index 19c8cd3a3..2385868c5 100644 --- a/src/main/java/org/scijava/ui/Arrangeable.java +++ b/src/main/java/org/scijava/ui/Arrangeable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/CloseConfirmable.java b/src/main/java/org/scijava/ui/CloseConfirmable.java index 729a15ed5..331f50861 100644 --- a/src/main/java/org/scijava/ui/CloseConfirmable.java +++ b/src/main/java/org/scijava/ui/CloseConfirmable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/DefaultUIService.java b/src/main/java/org/scijava/ui/DefaultUIService.java index ff5663f91..5d4d7299d 100644 --- a/src/main/java/org/scijava/ui/DefaultUIService.java +++ b/src/main/java/org/scijava/ui/DefaultUIService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/Desktop.java b/src/main/java/org/scijava/ui/Desktop.java index e851e6634..11aa766f4 100644 --- a/src/main/java/org/scijava/ui/Desktop.java +++ b/src/main/java/org/scijava/ui/Desktop.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/DialogPrompt.java b/src/main/java/org/scijava/ui/DialogPrompt.java index 7a14960e2..fc59a3c05 100644 --- a/src/main/java/org/scijava/ui/DialogPrompt.java +++ b/src/main/java/org/scijava/ui/DialogPrompt.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/FileListPreprocessor.java b/src/main/java/org/scijava/ui/FileListPreprocessor.java index 1f3227731..c18810629 100644 --- a/src/main/java/org/scijava/ui/FileListPreprocessor.java +++ b/src/main/java/org/scijava/ui/FileListPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/FilePreprocessor.java b/src/main/java/org/scijava/ui/FilePreprocessor.java index 2076665ec..909e84c06 100644 --- a/src/main/java/org/scijava/ui/FilePreprocessor.java +++ b/src/main/java/org/scijava/ui/FilePreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/StatusBar.java b/src/main/java/org/scijava/ui/StatusBar.java index 1d2c39232..19ad8acb8 100644 --- a/src/main/java/org/scijava/ui/StatusBar.java +++ b/src/main/java/org/scijava/ui/StatusBar.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/SystemClipboard.java b/src/main/java/org/scijava/ui/SystemClipboard.java index 1a362d55e..d897285e7 100644 --- a/src/main/java/org/scijava/ui/SystemClipboard.java +++ b/src/main/java/org/scijava/ui/SystemClipboard.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/ToolBar.java b/src/main/java/org/scijava/ui/ToolBar.java index c7e4de97b..b14ceb0fa 100644 --- a/src/main/java/org/scijava/ui/ToolBar.java +++ b/src/main/java/org/scijava/ui/ToolBar.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UIPreprocessor.java b/src/main/java/org/scijava/ui/UIPreprocessor.java index eb7780a4f..36fd91147 100644 --- a/src/main/java/org/scijava/ui/UIPreprocessor.java +++ b/src/main/java/org/scijava/ui/UIPreprocessor.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UIService.java b/src/main/java/org/scijava/ui/UIService.java index 0f3958698..84f4b23ef 100644 --- a/src/main/java/org/scijava/ui/UIService.java +++ b/src/main/java/org/scijava/ui/UIService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/UserInterface.java b/src/main/java/org/scijava/ui/UserInterface.java index f4c6d0c70..5133008eb 100644 --- a/src/main/java/org/scijava/ui/UserInterface.java +++ b/src/main/java/org/scijava/ui/UserInterface.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/AbstractConsolePane.java b/src/main/java/org/scijava/ui/console/AbstractConsolePane.java index b9de2570f..abe9177e7 100644 --- a/src/main/java/org/scijava/ui/console/AbstractConsolePane.java +++ b/src/main/java/org/scijava/ui/console/AbstractConsolePane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/ConsolePane.java b/src/main/java/org/scijava/ui/console/ConsolePane.java index 3db7788d4..c2214bd61 100644 --- a/src/main/java/org/scijava/ui/console/ConsolePane.java +++ b/src/main/java/org/scijava/ui/console/ConsolePane.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/HeadlessArgument.java b/src/main/java/org/scijava/ui/console/HeadlessArgument.java index 601b3d3ed..ab4eea39e 100644 --- a/src/main/java/org/scijava/ui/console/HeadlessArgument.java +++ b/src/main/java/org/scijava/ui/console/HeadlessArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/ShowUIArgument.java b/src/main/java/org/scijava/ui/console/ShowUIArgument.java index 3c4cd4a7a..b07e618e9 100644 --- a/src/main/java/org/scijava/ui/console/ShowUIArgument.java +++ b/src/main/java/org/scijava/ui/console/ShowUIArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/console/UIArgument.java b/src/main/java/org/scijava/ui/console/UIArgument.java index 40ee7986f..1622d1e0d 100644 --- a/src/main/java/org/scijava/ui/console/UIArgument.java +++ b/src/main/java/org/scijava/ui/console/UIArgument.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java index dfc445dca..fe0b3da6a 100644 --- a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java index 53b24aae6..cb25e57ce 100644 --- a/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/AbstractDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java index fc7f00803..1c278a394 100644 --- a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java index 5a15efe09..e18db980b 100644 --- a/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java +++ b/src/main/java/org/scijava/ui/dnd/DefaultDragAndDropService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropData.java b/src/main/java/org/scijava/ui/dnd/DragAndDropData.java index 8cc4e082f..4dd73dbd0 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropData.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropData.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java index 0377f1f03..1b793784c 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/DragAndDropService.java b/src/main/java/org/scijava/ui/dnd/DragAndDropService.java index 2319a5c41..f1de3ddb9 100644 --- a/src/main/java/org/scijava/ui/dnd/DragAndDropService.java +++ b/src/main/java/org/scijava/ui/dnd/DragAndDropService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java index 336c94e20..62684957f 100644 --- a/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/FileDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java index 42c2490c4..64febfa13 100644 --- a/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/ListDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/MIMEType.java b/src/main/java/org/scijava/ui/dnd/MIMEType.java index db21cac88..4d7f01307 100644 --- a/src/main/java/org/scijava/ui/dnd/MIMEType.java +++ b/src/main/java/org/scijava/ui/dnd/MIMEType.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java b/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java index a5e0cb5b6..5298fc946 100644 --- a/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java +++ b/src/main/java/org/scijava/ui/dnd/ScriptFileDragAndDropHandler.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java index aa8f3c624..83b15db9e 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragAndDropEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java index b221fdadc..5c93dff04 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragEnterEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java index 268b9b0c9..0576666e8 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragExitEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java b/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java index fd93d52eb..df28afbb5 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DragOverEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/dnd/event/DropEvent.java b/src/main/java/org/scijava/ui/dnd/event/DropEvent.java index a4a6ac4fe..d1000d5d3 100644 --- a/src/main/java/org/scijava/ui/dnd/event/DropEvent.java +++ b/src/main/java/org/scijava/ui/dnd/event/DropEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/event/UIEvent.java b/src/main/java/org/scijava/ui/event/UIEvent.java index 92f876cd3..8a0892f1a 100644 --- a/src/main/java/org/scijava/ui/event/UIEvent.java +++ b/src/main/java/org/scijava/ui/event/UIEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/event/UIShownEvent.java b/src/main/java/org/scijava/ui/event/UIShownEvent.java index c5e1fb2e3..957efb500 100644 --- a/src/main/java/org/scijava/ui/event/UIShownEvent.java +++ b/src/main/java/org/scijava/ui/event/UIShownEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java b/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java index 2dfa036da..af6b6c902 100644 --- a/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java +++ b/src/main/java/org/scijava/ui/headless/HeadlessDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headless/HeadlessUI.java b/src/main/java/org/scijava/ui/headless/HeadlessUI.java index 63cb32d5c..654b42e7f 100644 --- a/src/main/java/org/scijava/ui/headless/HeadlessUI.java +++ b/src/main/java/org/scijava/ui/headless/HeadlessUI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java b/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java index d3f48f2fc..3c55c9cd2 100644 --- a/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java +++ b/src/main/java/org/scijava/ui/headlessUI/HeadlessUI.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java index e705cbbb7..3bda15d67 100644 --- a/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/AbstractDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayPanel.java b/src/main/java/org/scijava/ui/viewer/DisplayPanel.java index c51213d04..691b42687 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayPanel.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayViewer.java b/src/main/java/org/scijava/ui/viewer/DisplayViewer.java index de99dfc95..eb439e8f6 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/DisplayWindow.java b/src/main/java/org/scijava/ui/viewer/DisplayWindow.java index 2a45a3427..14654e681 100644 --- a/src/main/java/org/scijava/ui/viewer/DisplayWindow.java +++ b/src/main/java/org/scijava/ui/viewer/DisplayWindow.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java index a737da1f5..b53271ee6 100644 --- a/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/text/AbstractTextDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java b/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java index 9ca4ae5be..cd53bdc2d 100644 --- a/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java +++ b/src/main/java/org/scijava/ui/viewer/text/TextDisplayPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java b/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java index fe8343711..8799c7ec7 100644 --- a/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java +++ b/src/main/java/org/scijava/ui/viewer/text/TextDisplayViewer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/AbstractPrimitiveArray.java b/src/main/java/org/scijava/util/AbstractPrimitiveArray.java index 6c1a720b2..def8f4eb9 100644 --- a/src/main/java/org/scijava/util/AbstractPrimitiveArray.java +++ b/src/main/java/org/scijava/util/AbstractPrimitiveArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/AppUtils.java b/src/main/java/org/scijava/util/AppUtils.java index 4dd310c6a..b65cce633 100644 --- a/src/main/java/org/scijava/util/AppUtils.java +++ b/src/main/java/org/scijava/util/AppUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ArrayUtils.java b/src/main/java/org/scijava/util/ArrayUtils.java index db6efcdbf..f2059c2c7 100644 --- a/src/main/java/org/scijava/util/ArrayUtils.java +++ b/src/main/java/org/scijava/util/ArrayUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/BoolArray.java b/src/main/java/org/scijava/util/BoolArray.java index 3ea2bee18..32ff8e8b4 100644 --- a/src/main/java/org/scijava/util/BoolArray.java +++ b/src/main/java/org/scijava/util/BoolArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ByteArray.java b/src/main/java/org/scijava/util/ByteArray.java index f5eda9f65..4d7a72d28 100644 --- a/src/main/java/org/scijava/util/ByteArray.java +++ b/src/main/java/org/scijava/util/ByteArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Bytes.java b/src/main/java/org/scijava/util/Bytes.java index 759383d73..45f8c70af 100644 --- a/src/main/java/org/scijava/util/Bytes.java +++ b/src/main/java/org/scijava/util/Bytes.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CharArray.java b/src/main/java/org/scijava/util/CharArray.java index cdfa1de15..099db97ec 100644 --- a/src/main/java/org/scijava/util/CharArray.java +++ b/src/main/java/org/scijava/util/CharArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CheckSezpoz.java b/src/main/java/org/scijava/util/CheckSezpoz.java index 235db46fd..fa9be7491 100644 --- a/src/main/java/org/scijava/util/CheckSezpoz.java +++ b/src/main/java/org/scijava/util/CheckSezpoz.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ClassUtils.java b/src/main/java/org/scijava/util/ClassUtils.java index 8569b4bd6..09961183e 100644 --- a/src/main/java/org/scijava/util/ClassUtils.java +++ b/src/main/java/org/scijava/util/ClassUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ColorRGB.java b/src/main/java/org/scijava/util/ColorRGB.java index cfc211e04..305fbbbe0 100644 --- a/src/main/java/org/scijava/util/ColorRGB.java +++ b/src/main/java/org/scijava/util/ColorRGB.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ColorRGBA.java b/src/main/java/org/scijava/util/ColorRGBA.java index e78221623..4bab90ddc 100644 --- a/src/main/java/org/scijava/util/ColorRGBA.java +++ b/src/main/java/org/scijava/util/ColorRGBA.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Colors.java b/src/main/java/org/scijava/util/Colors.java index 2f616b838..60fa3dc8c 100644 --- a/src/main/java/org/scijava/util/Colors.java +++ b/src/main/java/org/scijava/util/Colors.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/CombineAnnotations.java b/src/main/java/org/scijava/util/CombineAnnotations.java index dddf6046d..11ed3f879 100644 --- a/src/main/java/org/scijava/util/CombineAnnotations.java +++ b/src/main/java/org/scijava/util/CombineAnnotations.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Combiner.java b/src/main/java/org/scijava/util/Combiner.java index 7b107d0fb..ce758eed0 100644 --- a/src/main/java/org/scijava/util/Combiner.java +++ b/src/main/java/org/scijava/util/Combiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ConversionUtils.java b/src/main/java/org/scijava/util/ConversionUtils.java index 7a01ba31f..b902d2335 100644 --- a/src/main/java/org/scijava/util/ConversionUtils.java +++ b/src/main/java/org/scijava/util/ConversionUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DebugUtils.java b/src/main/java/org/scijava/util/DebugUtils.java index 78f84c6fa..e7ce7cb53 100644 --- a/src/main/java/org/scijava/util/DebugUtils.java +++ b/src/main/java/org/scijava/util/DebugUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DefaultTreeNode.java b/src/main/java/org/scijava/util/DefaultTreeNode.java index e16bf02e5..8c9290a78 100644 --- a/src/main/java/org/scijava/util/DefaultTreeNode.java +++ b/src/main/java/org/scijava/util/DefaultTreeNode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DigestUtils.java b/src/main/java/org/scijava/util/DigestUtils.java index c63b035fb..172f54a9a 100644 --- a/src/main/java/org/scijava/util/DigestUtils.java +++ b/src/main/java/org/scijava/util/DigestUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/DoubleArray.java b/src/main/java/org/scijava/util/DoubleArray.java index 71aaaece8..a75b9b266 100644 --- a/src/main/java/org/scijava/util/DoubleArray.java +++ b/src/main/java/org/scijava/util/DoubleArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/FileUtils.java b/src/main/java/org/scijava/util/FileUtils.java index f98e76f69..a233d7fd5 100644 --- a/src/main/java/org/scijava/util/FileUtils.java +++ b/src/main/java/org/scijava/util/FileUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/FloatArray.java b/src/main/java/org/scijava/util/FloatArray.java index 3c3bd00ce..1911dcd7a 100644 --- a/src/main/java/org/scijava/util/FloatArray.java +++ b/src/main/java/org/scijava/util/FloatArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/GenericUtils.java b/src/main/java/org/scijava/util/GenericUtils.java index d470580e3..f73fc78f6 100644 --- a/src/main/java/org/scijava/util/GenericUtils.java +++ b/src/main/java/org/scijava/util/GenericUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntArray.java b/src/main/java/org/scijava/util/IntArray.java index 32f2f027d..4916ca205 100644 --- a/src/main/java/org/scijava/util/IntArray.java +++ b/src/main/java/org/scijava/util/IntArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntCoords.java b/src/main/java/org/scijava/util/IntCoords.java index 23d3bc238..8110aa996 100644 --- a/src/main/java/org/scijava/util/IntCoords.java +++ b/src/main/java/org/scijava/util/IntCoords.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IntRect.java b/src/main/java/org/scijava/util/IntRect.java index 4c224be75..be12b1035 100644 --- a/src/main/java/org/scijava/util/IntRect.java +++ b/src/main/java/org/scijava/util/IntRect.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/IteratorPlus.java b/src/main/java/org/scijava/util/IteratorPlus.java index da2c28dad..5a28e023d 100644 --- a/src/main/java/org/scijava/util/IteratorPlus.java +++ b/src/main/java/org/scijava/util/IteratorPlus.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LastRecentlyUsed.java b/src/main/java/org/scijava/util/LastRecentlyUsed.java index 0714ce49c..83afb110f 100644 --- a/src/main/java/org/scijava/util/LastRecentlyUsed.java +++ b/src/main/java/org/scijava/util/LastRecentlyUsed.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LineOutputStream.java b/src/main/java/org/scijava/util/LineOutputStream.java index c3d95997d..2f4ad2d19 100644 --- a/src/main/java/org/scijava/util/LineOutputStream.java +++ b/src/main/java/org/scijava/util/LineOutputStream.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ListUtils.java b/src/main/java/org/scijava/util/ListUtils.java index 79c857461..e423fa616 100644 --- a/src/main/java/org/scijava/util/ListUtils.java +++ b/src/main/java/org/scijava/util/ListUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/LongArray.java b/src/main/java/org/scijava/util/LongArray.java index ee9a4a453..351580338 100644 --- a/src/main/java/org/scijava/util/LongArray.java +++ b/src/main/java/org/scijava/util/LongArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Manifest.java b/src/main/java/org/scijava/util/Manifest.java index e5f7fab67..6e4cd5dd3 100644 --- a/src/main/java/org/scijava/util/Manifest.java +++ b/src/main/java/org/scijava/util/Manifest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MersenneTwisterFast.java b/src/main/java/org/scijava/util/MersenneTwisterFast.java index 089299ee0..9bad0ab73 100644 --- a/src/main/java/org/scijava/util/MersenneTwisterFast.java +++ b/src/main/java/org/scijava/util/MersenneTwisterFast.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MetaInfCombiner.java b/src/main/java/org/scijava/util/MetaInfCombiner.java index 4cb22cb05..63582c0cc 100644 --- a/src/main/java/org/scijava/util/MetaInfCombiner.java +++ b/src/main/java/org/scijava/util/MetaInfCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MirrorWebsite.java b/src/main/java/org/scijava/util/MirrorWebsite.java index 4bd72155a..ec807ab8e 100644 --- a/src/main/java/org/scijava/util/MirrorWebsite.java +++ b/src/main/java/org/scijava/util/MirrorWebsite.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/MiscUtils.java b/src/main/java/org/scijava/util/MiscUtils.java index 667e7560a..4476e9a4b 100644 --- a/src/main/java/org/scijava/util/MiscUtils.java +++ b/src/main/java/org/scijava/util/MiscUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/NumberUtils.java b/src/main/java/org/scijava/util/NumberUtils.java index 77137ecbe..11a228345 100644 --- a/src/main/java/org/scijava/util/NumberUtils.java +++ b/src/main/java/org/scijava/util/NumberUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ObjectArray.java b/src/main/java/org/scijava/util/ObjectArray.java index 486313d8c..aa12acc08 100644 --- a/src/main/java/org/scijava/util/ObjectArray.java +++ b/src/main/java/org/scijava/util/ObjectArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/POM.java b/src/main/java/org/scijava/util/POM.java index afd4771a0..54c0434ab 100644 --- a/src/main/java/org/scijava/util/POM.java +++ b/src/main/java/org/scijava/util/POM.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/PlatformUtils.java b/src/main/java/org/scijava/util/PlatformUtils.java index 8e67ec1a3..215759cac 100644 --- a/src/main/java/org/scijava/util/PlatformUtils.java +++ b/src/main/java/org/scijava/util/PlatformUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Prefs.java b/src/main/java/org/scijava/util/Prefs.java index 4044f6762..72f63bac7 100644 --- a/src/main/java/org/scijava/util/Prefs.java +++ b/src/main/java/org/scijava/util/Prefs.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/PrimitiveArray.java b/src/main/java/org/scijava/util/PrimitiveArray.java index 35a6c7498..51ac3f30a 100644 --- a/src/main/java/org/scijava/util/PrimitiveArray.java +++ b/src/main/java/org/scijava/util/PrimitiveArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ProcessUtils.java b/src/main/java/org/scijava/util/ProcessUtils.java index 9f97a24d0..3b23b3c1c 100644 --- a/src/main/java/org/scijava/util/ProcessUtils.java +++ b/src/main/java/org/scijava/util/ProcessUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/PropertiesHelper.java b/src/main/java/org/scijava/util/PropertiesHelper.java index f56189d8c..bfbac09e2 100644 --- a/src/main/java/org/scijava/util/PropertiesHelper.java +++ b/src/main/java/org/scijava/util/PropertiesHelper.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Query.java b/src/main/java/org/scijava/util/Query.java index 39914f518..008b84efa 100644 --- a/src/main/java/org/scijava/util/Query.java +++ b/src/main/java/org/scijava/util/Query.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReadInto.java b/src/main/java/org/scijava/util/ReadInto.java index 3aafebae3..559b87304 100644 --- a/src/main/java/org/scijava/util/ReadInto.java +++ b/src/main/java/org/scijava/util/ReadInto.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/RealCoords.java b/src/main/java/org/scijava/util/RealCoords.java index 7b49819fe..97e61e00c 100644 --- a/src/main/java/org/scijava/util/RealCoords.java +++ b/src/main/java/org/scijava/util/RealCoords.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/RealRect.java b/src/main/java/org/scijava/util/RealRect.java index b149ba1d5..4f355cd73 100644 --- a/src/main/java/org/scijava/util/RealRect.java +++ b/src/main/java/org/scijava/util/RealRect.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReflectException.java b/src/main/java/org/scijava/util/ReflectException.java index aa3e18849..3402b78f9 100644 --- a/src/main/java/org/scijava/util/ReflectException.java +++ b/src/main/java/org/scijava/util/ReflectException.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ReflectedUniverse.java b/src/main/java/org/scijava/util/ReflectedUniverse.java index 54ce3cd65..fd7aa908a 100644 --- a/src/main/java/org/scijava/util/ReflectedUniverse.java +++ b/src/main/java/org/scijava/util/ReflectedUniverse.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ServiceCombiner.java b/src/main/java/org/scijava/util/ServiceCombiner.java index 2a069ef5c..ea9bd034c 100644 --- a/src/main/java/org/scijava/util/ServiceCombiner.java +++ b/src/main/java/org/scijava/util/ServiceCombiner.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/ShortArray.java b/src/main/java/org/scijava/util/ShortArray.java index 1f903b532..354d31031 100644 --- a/src/main/java/org/scijava/util/ShortArray.java +++ b/src/main/java/org/scijava/util/ShortArray.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Sizable.java b/src/main/java/org/scijava/util/Sizable.java index 9c9d34a7a..a1a8d82eb 100644 --- a/src/main/java/org/scijava/util/Sizable.java +++ b/src/main/java/org/scijava/util/Sizable.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/SizableArrayList.java b/src/main/java/org/scijava/util/SizableArrayList.java index 89fa00b66..11eb6bdc0 100644 --- a/src/main/java/org/scijava/util/SizableArrayList.java +++ b/src/main/java/org/scijava/util/SizableArrayList.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/StringMaker.java b/src/main/java/org/scijava/util/StringMaker.java index 3b2d1839c..809b1a5c9 100644 --- a/src/main/java/org/scijava/util/StringMaker.java +++ b/src/main/java/org/scijava/util/StringMaker.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/StringUtils.java b/src/main/java/org/scijava/util/StringUtils.java index 5d72f80bd..90b2e9756 100644 --- a/src/main/java/org/scijava/util/StringUtils.java +++ b/src/main/java/org/scijava/util/StringUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Timing.java b/src/main/java/org/scijava/util/Timing.java index aec5a6d1e..8a4dcfe39 100644 --- a/src/main/java/org/scijava/util/Timing.java +++ b/src/main/java/org/scijava/util/Timing.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/TreeNode.java b/src/main/java/org/scijava/util/TreeNode.java index a827556f9..20af64acc 100644 --- a/src/main/java/org/scijava/util/TreeNode.java +++ b/src/main/java/org/scijava/util/TreeNode.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/TunePlayer.java b/src/main/java/org/scijava/util/TunePlayer.java index d14fd40b4..a36fa353d 100644 --- a/src/main/java/org/scijava/util/TunePlayer.java +++ b/src/main/java/org/scijava/util/TunePlayer.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/Types.java b/src/main/java/org/scijava/util/Types.java index d112b2114..a75ef8311 100644 --- a/src/main/java/org/scijava/util/Types.java +++ b/src/main/java/org/scijava/util/Types.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/UnitUtils.java b/src/main/java/org/scijava/util/UnitUtils.java index d93471c25..445f16046 100644 --- a/src/main/java/org/scijava/util/UnitUtils.java +++ b/src/main/java/org/scijava/util/UnitUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/VersionUtils.java b/src/main/java/org/scijava/util/VersionUtils.java index b5306c1de..ea012b9a1 100644 --- a/src/main/java/org/scijava/util/VersionUtils.java +++ b/src/main/java/org/scijava/util/VersionUtils.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/util/XML.java b/src/main/java/org/scijava/util/XML.java index 732b0ee0c..5a3f0a049 100644 --- a/src/main/java/org/scijava/util/XML.java +++ b/src/main/java/org/scijava/util/XML.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/DefaultWelcomeService.java b/src/main/java/org/scijava/welcome/DefaultWelcomeService.java index 817fc44f1..b9af9fd48 100644 --- a/src/main/java/org/scijava/welcome/DefaultWelcomeService.java +++ b/src/main/java/org/scijava/welcome/DefaultWelcomeService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/WelcomeService.java b/src/main/java/org/scijava/welcome/WelcomeService.java index a2819123f..ac690f3bc 100644 --- a/src/main/java/org/scijava/welcome/WelcomeService.java +++ b/src/main/java/org/scijava/welcome/WelcomeService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/welcome/event/WelcomeEvent.java b/src/main/java/org/scijava/welcome/event/WelcomeEvent.java index f6f046b81..2f38dc848 100644 --- a/src/main/java/org/scijava/welcome/event/WelcomeEvent.java +++ b/src/main/java/org/scijava/welcome/event/WelcomeEvent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputHarvester.java b/src/main/java/org/scijava/widget/AbstractInputHarvester.java index d1515bd17..1eaea1045 100644 --- a/src/main/java/org/scijava/widget/AbstractInputHarvester.java +++ b/src/main/java/org/scijava/widget/AbstractInputHarvester.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputPanel.java b/src/main/java/org/scijava/widget/AbstractInputPanel.java index e2accd1af..5b6637b19 100644 --- a/src/main/java/org/scijava/widget/AbstractInputPanel.java +++ b/src/main/java/org/scijava/widget/AbstractInputPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/AbstractInputWidget.java b/src/main/java/org/scijava/widget/AbstractInputWidget.java index 420fb43ae..bedf6d594 100644 --- a/src/main/java/org/scijava/widget/AbstractInputWidget.java +++ b/src/main/java/org/scijava/widget/AbstractInputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/Button.java b/src/main/java/org/scijava/widget/Button.java index 174c30d2c..0768762a2 100644 --- a/src/main/java/org/scijava/widget/Button.java +++ b/src/main/java/org/scijava/widget/Button.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ButtonWidget.java b/src/main/java/org/scijava/widget/ButtonWidget.java index 8b43645a4..a56b33065 100644 --- a/src/main/java/org/scijava/widget/ButtonWidget.java +++ b/src/main/java/org/scijava/widget/ButtonWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ChoiceWidget.java b/src/main/java/org/scijava/widget/ChoiceWidget.java index 202a6e346..25ff52afe 100644 --- a/src/main/java/org/scijava/widget/ChoiceWidget.java +++ b/src/main/java/org/scijava/widget/ChoiceWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ColorWidget.java b/src/main/java/org/scijava/widget/ColorWidget.java index fdbe7a7f5..427f64922 100644 --- a/src/main/java/org/scijava/widget/ColorWidget.java +++ b/src/main/java/org/scijava/widget/ColorWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DateWidget.java b/src/main/java/org/scijava/widget/DateWidget.java index 5a849f966..4cc60c0b5 100644 --- a/src/main/java/org/scijava/widget/DateWidget.java +++ b/src/main/java/org/scijava/widget/DateWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DefaultWidgetModel.java b/src/main/java/org/scijava/widget/DefaultWidgetModel.java index b1ed1cd47..7bea4bc8c 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetModel.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetModel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/DefaultWidgetService.java b/src/main/java/org/scijava/widget/DefaultWidgetService.java index 380746ad7..6f35b2efa 100644 --- a/src/main/java/org/scijava/widget/DefaultWidgetService.java +++ b/src/main/java/org/scijava/widget/DefaultWidgetService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/FileListWidget.java b/src/main/java/org/scijava/widget/FileListWidget.java index 87401b27f..fc310519b 100644 --- a/src/main/java/org/scijava/widget/FileListWidget.java +++ b/src/main/java/org/scijava/widget/FileListWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/FileWidget.java b/src/main/java/org/scijava/widget/FileWidget.java index e72d41c37..5567cb967 100644 --- a/src/main/java/org/scijava/widget/FileWidget.java +++ b/src/main/java/org/scijava/widget/FileWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputHarvester.java b/src/main/java/org/scijava/widget/InputHarvester.java index 30735f457..fe27f5480 100644 --- a/src/main/java/org/scijava/widget/InputHarvester.java +++ b/src/main/java/org/scijava/widget/InputHarvester.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputPanel.java b/src/main/java/org/scijava/widget/InputPanel.java index 6e1396e0f..f937027bc 100644 --- a/src/main/java/org/scijava/widget/InputPanel.java +++ b/src/main/java/org/scijava/widget/InputPanel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/InputWidget.java b/src/main/java/org/scijava/widget/InputWidget.java index 6499314bc..221c3770b 100644 --- a/src/main/java/org/scijava/widget/InputWidget.java +++ b/src/main/java/org/scijava/widget/InputWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/MessageWidget.java b/src/main/java/org/scijava/widget/MessageWidget.java index f096f4116..20347c3b2 100644 --- a/src/main/java/org/scijava/widget/MessageWidget.java +++ b/src/main/java/org/scijava/widget/MessageWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/NumberWidget.java b/src/main/java/org/scijava/widget/NumberWidget.java index 67d4c1030..79bfa46cd 100644 --- a/src/main/java/org/scijava/widget/NumberWidget.java +++ b/src/main/java/org/scijava/widget/NumberWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ObjectWidget.java b/src/main/java/org/scijava/widget/ObjectWidget.java index 5c8b2ed81..27c9560c6 100644 --- a/src/main/java/org/scijava/widget/ObjectWidget.java +++ b/src/main/java/org/scijava/widget/ObjectWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/TextWidget.java b/src/main/java/org/scijava/widget/TextWidget.java index 4f555d8c1..716750d69 100644 --- a/src/main/java/org/scijava/widget/TextWidget.java +++ b/src/main/java/org/scijava/widget/TextWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/ToggleWidget.java b/src/main/java/org/scijava/widget/ToggleWidget.java index 336e75cd1..8a56a9662 100644 --- a/src/main/java/org/scijava/widget/ToggleWidget.java +++ b/src/main/java/org/scijava/widget/ToggleWidget.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/UIComponent.java b/src/main/java/org/scijava/widget/UIComponent.java index 20dd35301..2b7f56e0a 100644 --- a/src/main/java/org/scijava/widget/UIComponent.java +++ b/src/main/java/org/scijava/widget/UIComponent.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetModel.java b/src/main/java/org/scijava/widget/WidgetModel.java index 9f0f1b634..a2ee20dcd 100644 --- a/src/main/java/org/scijava/widget/WidgetModel.java +++ b/src/main/java/org/scijava/widget/WidgetModel.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetService.java b/src/main/java/org/scijava/widget/WidgetService.java index 047657acb..01857a29c 100644 --- a/src/main/java/org/scijava/widget/WidgetService.java +++ b/src/main/java/org/scijava/widget/WidgetService.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/java/org/scijava/widget/WidgetStyle.java b/src/main/java/org/scijava/widget/WidgetStyle.java index d9c186b0c..65491717d 100644 --- a/src/main/java/org/scijava/widget/WidgetStyle.java +++ b/src/main/java/org/scijava/widget/WidgetStyle.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextCreationTest.java b/src/test/java/org/scijava/ContextCreationTest.java index 614e4a019..9b5769ef3 100644 --- a/src/test/java/org/scijava/ContextCreationTest.java +++ b/src/test/java/org/scijava/ContextCreationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextDisposalTest.java b/src/test/java/org/scijava/ContextDisposalTest.java index e3834d3a2..4f66ab6f9 100644 --- a/src/test/java/org/scijava/ContextDisposalTest.java +++ b/src/test/java/org/scijava/ContextDisposalTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ContextInjectionTest.java b/src/test/java/org/scijava/ContextInjectionTest.java index b5f948041..df3c46ece 100644 --- a/src/test/java/org/scijava/ContextInjectionTest.java +++ b/src/test/java/org/scijava/ContextInjectionTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/SciJavaTest.java b/src/test/java/org/scijava/SciJavaTest.java index 1279f8861..9daf637c6 100644 --- a/src/test/java/org/scijava/SciJavaTest.java +++ b/src/test/java/org/scijava/SciJavaTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedA.java b/src/test/java/org/scijava/annotations/AnnotatedA.java index 799eea92f..4c9977496 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedA.java +++ b/src/test/java/org/scijava/annotations/AnnotatedA.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedB.java b/src/test/java/org/scijava/annotations/AnnotatedB.java index a14106e1d..46ccb442c 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedB.java +++ b/src/test/java/org/scijava/annotations/AnnotatedB.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedC.java b/src/test/java/org/scijava/annotations/AnnotatedC.java index 589a49e5f..777b949f4 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedC.java +++ b/src/test/java/org/scijava/annotations/AnnotatedC.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedD.java b/src/test/java/org/scijava/annotations/AnnotatedD.java index f6e23eac6..d898df6d7 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedD.java +++ b/src/test/java/org/scijava/annotations/AnnotatedD.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java b/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java index 6f46d5864..96ed33157 100644 --- a/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java +++ b/src/test/java/org/scijava/annotations/AnnotatedInnerClass.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Complex.java b/src/test/java/org/scijava/annotations/Complex.java index b0c7d879e..f7cb7e0ec 100644 --- a/src/test/java/org/scijava/annotations/Complex.java +++ b/src/test/java/org/scijava/annotations/Complex.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java b/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java index 81a96747d..8a6d243e4 100644 --- a/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java +++ b/src/test/java/org/scijava/annotations/DirectoryIndexerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/EclipseHelperTest.java b/src/test/java/org/scijava/annotations/EclipseHelperTest.java index 24daca561..6bd63ace5 100644 --- a/src/test/java/org/scijava/annotations/EclipseHelperTest.java +++ b/src/test/java/org/scijava/annotations/EclipseHelperTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Fruit.java b/src/test/java/org/scijava/annotations/Fruit.java index cf484cb20..9ffb333cd 100644 --- a/src/test/java/org/scijava/annotations/Fruit.java +++ b/src/test/java/org/scijava/annotations/Fruit.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/LegacyTest.java b/src/test/java/org/scijava/annotations/LegacyTest.java index a9aaf12a8..6bf5d5d13 100644 --- a/src/test/java/org/scijava/annotations/LegacyTest.java +++ b/src/test/java/org/scijava/annotations/LegacyTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/annotations/Simple.java b/src/test/java/org/scijava/annotations/Simple.java index 193803c00..90b426367 100644 --- a/src/test/java/org/scijava/annotations/Simple.java +++ b/src/test/java/org/scijava/annotations/Simple.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/app/StatusServiceTest.java b/src/test/java/org/scijava/app/StatusServiceTest.java index 1e2eed9d3..1209d4049 100644 --- a/src/test/java/org/scijava/app/StatusServiceTest.java +++ b/src/test/java/org/scijava/app/StatusServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandArrayConverterTest.java b/src/test/java/org/scijava/command/CommandArrayConverterTest.java index b2a34200e..8531a3dfa 100644 --- a/src/test/java/org/scijava/command/CommandArrayConverterTest.java +++ b/src/test/java/org/scijava/command/CommandArrayConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandInfoTest.java b/src/test/java/org/scijava/command/CommandInfoTest.java index 492945766..6f1cf1128 100644 --- a/src/test/java/org/scijava/command/CommandInfoTest.java +++ b/src/test/java/org/scijava/command/CommandInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandModuleTest.java b/src/test/java/org/scijava/command/CommandModuleTest.java index cfa70fe45..9fb32074f 100644 --- a/src/test/java/org/scijava/command/CommandModuleTest.java +++ b/src/test/java/org/scijava/command/CommandModuleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/CommandServiceTest.java b/src/test/java/org/scijava/command/CommandServiceTest.java index fb1fda971..ef34da9a4 100644 --- a/src/test/java/org/scijava/command/CommandServiceTest.java +++ b/src/test/java/org/scijava/command/CommandServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/InputsTest.java b/src/test/java/org/scijava/command/InputsTest.java index db55f9c3e..3cdc8c35b 100644 --- a/src/test/java/org/scijava/command/InputsTest.java +++ b/src/test/java/org/scijava/command/InputsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/InvalidCommandTest.java b/src/test/java/org/scijava/command/InvalidCommandTest.java index 2687d056a..e3f64b268 100644 --- a/src/test/java/org/scijava/command/InvalidCommandTest.java +++ b/src/test/java/org/scijava/command/InvalidCommandTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java b/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java index 6e488c1f7..466df6426 100644 --- a/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java +++ b/src/test/java/org/scijava/command/run/CommandCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/console/ConsoleServiceTest.java b/src/test/java/org/scijava/console/ConsoleServiceTest.java index cb4728630..8a2760e85 100644 --- a/src/test/java/org/scijava/console/ConsoleServiceTest.java +++ b/src/test/java/org/scijava/console/ConsoleServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java b/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java index b073e504c..a45c7823e 100644 --- a/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java +++ b/src/test/java/org/scijava/console/SystemPropertyArgumentTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java b/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java index 7b899bd4f..8e7aac26b 100644 --- a/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java +++ b/src/test/java/org/scijava/convert/AbstractNumberConverterTests.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java index a1a1bb10a..0d1f7ef28 100644 --- a/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java +++ b/src/test/java/org/scijava/convert/ArrayToStringConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java index 0535224eb..228ff9e3b 100644 --- a/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/BigIntegerToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java index d63cb3743..638b0caf0 100644 --- a/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java index e179deff1..381b2f5ac 100644 --- a/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java b/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java index 472e42702..43d2c62ef 100644 --- a/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java b/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java index 7674190ca..286f358a5 100644 --- a/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToFloatConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java b/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java index 1d1747098..f4607db21 100644 --- a/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToLongConverterTest.java b/src/test/java/org/scijava/convert/ByteToLongConverterTest.java index 53f552f1c..38ffd40aa 100644 --- a/src/test/java/org/scijava/convert/ByteToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ByteToShortConverterTest.java b/src/test/java/org/scijava/convert/ByteToShortConverterTest.java index b2fd5281b..c1e542e12 100644 --- a/src/test/java/org/scijava/convert/ByteToShortConverterTest.java +++ b/src/test/java/org/scijava/convert/ByteToShortConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ConvertServiceTest.java b/src/test/java/org/scijava/convert/ConvertServiceTest.java index 96dbe1bdf..80fe29337 100644 --- a/src/test/java/org/scijava/convert/ConvertServiceTest.java +++ b/src/test/java/org/scijava/convert/ConvertServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ConverterTest.java b/src/test/java/org/scijava/convert/ConverterTest.java index ddb0f6c9f..cf9564346 100644 --- a/src/test/java/org/scijava/convert/ConverterTest.java +++ b/src/test/java/org/scijava/convert/ConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DefaultConverterTest.java b/src/test/java/org/scijava/convert/DefaultConverterTest.java index b1c810d83..af04d34ad 100644 --- a/src/test/java/org/scijava/convert/DefaultConverterTest.java +++ b/src/test/java/org/scijava/convert/DefaultConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DelegateConverterTest.java b/src/test/java/org/scijava/convert/DelegateConverterTest.java index b506e9e2d..ec1f4187c 100644 --- a/src/test/java/org/scijava/convert/DelegateConverterTest.java +++ b/src/test/java/org/scijava/convert/DelegateConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java index aa85644ab..ff6714dba 100644 --- a/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/DoubleToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FileListConverterTest.java b/src/test/java/org/scijava/convert/FileListConverterTest.java index 71afaa2dc..f5b40b2e4 100644 --- a/src/test/java/org/scijava/convert/FileListConverterTest.java +++ b/src/test/java/org/scijava/convert/FileListConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FileToPathConversionTest.java b/src/test/java/org/scijava/convert/FileToPathConversionTest.java index ef8829e07..7fd087514 100644 --- a/src/test/java/org/scijava/convert/FileToPathConversionTest.java +++ b/src/test/java/org/scijava/convert/FileToPathConversionTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java index 546a649c0..7d49b6878 100644 --- a/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/FloatToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java b/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java index 5aaf070cc..45c5c4dfb 100644 --- a/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/FloatToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java index 48d54b3d6..4c375dcb8 100644 --- a/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java index e1430131c..79c89bcb1 100644 --- a/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java b/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java index 3581c5c48..0e1106536 100644 --- a/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java b/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java index 5aa0f3b9c..5611b7f26 100644 --- a/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/IntegerToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java index 56e6da876..436730ee2 100644 --- a/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/LongToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java index 57527734a..ec8a1c3ca 100644 --- a/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/LongToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java b/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java index fd65d1a31..642008214 100644 --- a/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToBigDecimalConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java b/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java index 7ff413922..bb39f8c50 100644 --- a/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToBigIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java b/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java index 0a71d5092..336001970 100644 --- a/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToDoubleConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java b/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java index cc93bd4c3..d893478ca 100644 --- a/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToFloatConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java b/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java index 11c514c59..df9c62daf 100644 --- a/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToIntegerConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/ShortToLongConverterTest.java b/src/test/java/org/scijava/convert/ShortToLongConverterTest.java index f396697fd..a5803241a 100644 --- a/src/test/java/org/scijava/convert/ShortToLongConverterTest.java +++ b/src/test/java/org/scijava/convert/ShortToLongConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java index 35b45f19b..c68ddd568 100644 --- a/src/test/java/org/scijava/convert/StringToArrayConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToArrayConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java index 779850213..34ed9d260 100644 --- a/src/test/java/org/scijava/convert/StringToNumberConverterTest.java +++ b/src/test/java/org/scijava/convert/StringToNumberConverterTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/display/DisplayTest.java b/src/test/java/org/scijava/display/DisplayTest.java index 07cf2967f..3d6f65de2 100644 --- a/src/test/java/org/scijava/display/DisplayTest.java +++ b/src/test/java/org/scijava/display/DisplayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/download/DownloadServiceTest.java b/src/test/java/org/scijava/download/DownloadServiceTest.java index 390f06f68..a9bb2a421 100644 --- a/src/test/java/org/scijava/download/DownloadServiceTest.java +++ b/src/test/java/org/scijava/download/DownloadServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/event/EventServiceTest.java b/src/test/java/org/scijava/event/EventServiceTest.java index 2d0215f41..de8c2b028 100644 --- a/src/test/java/org/scijava/event/EventServiceTest.java +++ b/src/test/java/org/scijava/event/EventServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/ByteArrayByteBankTest.java b/src/test/java/org/scijava/io/ByteArrayByteBankTest.java index 1f184071a..e57db1f3e 100644 --- a/src/test/java/org/scijava/io/ByteArrayByteBankTest.java +++ b/src/test/java/org/scijava/io/ByteArrayByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/ByteBankTest.java b/src/test/java/org/scijava/io/ByteBankTest.java index fdc00f86c..fd1ff0b6a 100644 --- a/src/test/java/org/scijava/io/ByteBankTest.java +++ b/src/test/java/org/scijava/io/ByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/IOServiceTest.java b/src/test/java/org/scijava/io/IOServiceTest.java index ecfed72ad..bae4be289 100644 --- a/src/test/java/org/scijava/io/IOServiceTest.java +++ b/src/test/java/org/scijava/io/IOServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/TypedIOServiceTest.java b/src/test/java/org/scijava/io/TypedIOServiceTest.java index 734924839..d59cb9014 100644 --- a/src/test/java/org/scijava/io/TypedIOServiceTest.java +++ b/src/test/java/org/scijava/io/TypedIOServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/event/DataEventTest.java b/src/test/java/org/scijava/io/event/DataEventTest.java index 5a56f2fcd..0c4e8e7ea 100644 --- a/src/test/java/org/scijava/io/event/DataEventTest.java +++ b/src/test/java/org/scijava/io/event/DataEventTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/BytesHandleTest.java b/src/test/java/org/scijava/io/handle/BytesHandleTest.java index 4b2d05db0..a996b4fa2 100644 --- a/src/test/java/org/scijava/io/handle/BytesHandleTest.java +++ b/src/test/java/org/scijava/io/handle/BytesHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java b/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java index deba27821..bac3ee2f2 100644 --- a/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java +++ b/src/test/java/org/scijava/io/handle/DataHandleEdgeCaseTests.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandleTest.java b/src/test/java/org/scijava/io/handle/DataHandleTest.java index b12a7592b..8e84c4087 100644 --- a/src/test/java/org/scijava/io/handle/DataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/DataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/DataHandlesTest.java b/src/test/java/org/scijava/io/handle/DataHandlesTest.java index 09ff0e012..5e0a95359 100644 --- a/src/test/java/org/scijava/io/handle/DataHandlesTest.java +++ b/src/test/java/org/scijava/io/handle/DataHandlesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/FileHandleTest.java b/src/test/java/org/scijava/io/handle/FileHandleTest.java index 551769c30..6caa0c7e3 100644 --- a/src/test/java/org/scijava/io/handle/FileHandleTest.java +++ b/src/test/java/org/scijava/io/handle/FileHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java index 20a637f3e..3337d4a82 100644 --- a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java +++ b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleMockTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java index 8196c9128..5e0fce0df 100644 --- a/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/ReadBufferDataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java b/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java index 813a5ab46..dd0c158f4 100644 --- a/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java +++ b/src/test/java/org/scijava/io/handle/WriteBufferDataHandleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/BytesLocationTest.java b/src/test/java/org/scijava/io/location/BytesLocationTest.java index 1217c23ff..4dbcd46a4 100644 --- a/src/test/java/org/scijava/io/location/BytesLocationTest.java +++ b/src/test/java/org/scijava/io/location/BytesLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/FileLocationResolverTest.java b/src/test/java/org/scijava/io/location/FileLocationResolverTest.java index 62ec48db0..0b71e739f 100644 --- a/src/test/java/org/scijava/io/location/FileLocationResolverTest.java +++ b/src/test/java/org/scijava/io/location/FileLocationResolverTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/FileLocationTest.java b/src/test/java/org/scijava/io/location/FileLocationTest.java index 3ce55ea53..b9d189f0f 100644 --- a/src/test/java/org/scijava/io/location/FileLocationTest.java +++ b/src/test/java/org/scijava/io/location/FileLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/LocationServiceTest.java b/src/test/java/org/scijava/io/location/LocationServiceTest.java index fb917a694..5889dae32 100644 --- a/src/test/java/org/scijava/io/location/LocationServiceTest.java +++ b/src/test/java/org/scijava/io/location/LocationServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/URILocationTest.java b/src/test/java/org/scijava/io/location/URILocationTest.java index 9df45d181..49ff094ab 100644 --- a/src/test/java/org/scijava/io/location/URILocationTest.java +++ b/src/test/java/org/scijava/io/location/URILocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/location/URLLocationTest.java b/src/test/java/org/scijava/io/location/URLLocationTest.java index 0075c79dd..f053a1fab 100644 --- a/src/test/java/org/scijava/io/location/URLLocationTest.java +++ b/src/test/java/org/scijava/io/location/URLLocationTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java b/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java index 8685dc322..76fdf7e21 100644 --- a/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java +++ b/src/test/java/org/scijava/io/nio/ByteBufferByteBankTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/CallingClassUtilsTest.java b/src/test/java/org/scijava/log/CallingClassUtilsTest.java index a88c970a1..8817580ee 100644 --- a/src/test/java/org/scijava/log/CallingClassUtilsTest.java +++ b/src/test/java/org/scijava/log/CallingClassUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/DefaultLoggerTest.java b/src/test/java/org/scijava/log/DefaultLoggerTest.java index 14cc55b77..5c2f29805 100644 --- a/src/test/java/org/scijava/log/DefaultLoggerTest.java +++ b/src/test/java/org/scijava/log/DefaultLoggerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogMessageTest.java b/src/test/java/org/scijava/log/LogMessageTest.java index f08f6ec18..0699ddc37 100644 --- a/src/test/java/org/scijava/log/LogMessageTest.java +++ b/src/test/java/org/scijava/log/LogMessageTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogServiceTest.java b/src/test/java/org/scijava/log/LogServiceTest.java index 2d3d3b46f..78a128073 100644 --- a/src/test/java/org/scijava/log/LogServiceTest.java +++ b/src/test/java/org/scijava/log/LogServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/LogSourceTest.java b/src/test/java/org/scijava/log/LogSourceTest.java index c5dda19d7..e6d7883a7 100644 --- a/src/test/java/org/scijava/log/LogSourceTest.java +++ b/src/test/java/org/scijava/log/LogSourceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/StderrLogServiceTest.java b/src/test/java/org/scijava/log/StderrLogServiceTest.java index 95429dd25..42db64727 100644 --- a/src/test/java/org/scijava/log/StderrLogServiceTest.java +++ b/src/test/java/org/scijava/log/StderrLogServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/log/TestLogListener.java b/src/test/java/org/scijava/log/TestLogListener.java index e7f2bce82..94ed38813 100644 --- a/src/test/java/org/scijava/log/TestLogListener.java +++ b/src/test/java/org/scijava/log/TestLogListener.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/main/MainServiceTest.java b/src/test/java/org/scijava/main/MainServiceTest.java index b5d09ac31..e87501a7b 100644 --- a/src/test/java/org/scijava/main/MainServiceTest.java +++ b/src/test/java/org/scijava/main/MainServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java b/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java index ea049cf18..20c0997fe 100644 --- a/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java +++ b/src/test/java/org/scijava/main/run/MainCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/menu/MenuServiceTest.java b/src/test/java/org/scijava/menu/MenuServiceTest.java index aad47bb73..a3b2f203f 100644 --- a/src/test/java/org/scijava/menu/MenuServiceTest.java +++ b/src/test/java/org/scijava/menu/MenuServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/menu/ShadowMenuTest.java b/src/test/java/org/scijava/menu/ShadowMenuTest.java index 2c9660b2d..5eb75a2cb 100644 --- a/src/test/java/org/scijava/menu/ShadowMenuTest.java +++ b/src/test/java/org/scijava/menu/ShadowMenuTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/ModuleServiceTest.java b/src/test/java/org/scijava/module/ModuleServiceTest.java index e8844f086..cdaf44a84 100644 --- a/src/test/java/org/scijava/module/ModuleServiceTest.java +++ b/src/test/java/org/scijava/module/ModuleServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java index 4524254df..def867107 100644 --- a/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java +++ b/src/test/java/org/scijava/module/event/ModuleErroredEventTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java b/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java index 16e5e7e6d..7698f30b9 100644 --- a/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java +++ b/src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java b/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java index 9a2dcc0c4..719ed815f 100644 --- a/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java +++ b/src/test/java/org/scijava/module/run/ModuleCodeRunnerTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/NamedObjectIndexTest.java b/src/test/java/org/scijava/object/NamedObjectIndexTest.java index 4a76b6962..7ceef8e27 100644 --- a/src/test/java/org/scijava/object/NamedObjectIndexTest.java +++ b/src/test/java/org/scijava/object/NamedObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/ObjectIndexTest.java b/src/test/java/org/scijava/object/ObjectIndexTest.java index 62c2e4071..95f0c9dc8 100644 --- a/src/test/java/org/scijava/object/ObjectIndexTest.java +++ b/src/test/java/org/scijava/object/ObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/ObjectServiceTest.java b/src/test/java/org/scijava/object/ObjectServiceTest.java index bdb18ce5d..c8f27051e 100644 --- a/src/test/java/org/scijava/object/ObjectServiceTest.java +++ b/src/test/java/org/scijava/object/ObjectServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/object/SortedObjectIndexTest.java b/src/test/java/org/scijava/object/SortedObjectIndexTest.java index ad5e0e14c..3a3c31e97 100644 --- a/src/test/java/org/scijava/object/SortedObjectIndexTest.java +++ b/src/test/java/org/scijava/object/SortedObjectIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/options/OptionsTest.java b/src/test/java/org/scijava/options/OptionsTest.java index 78b4e182a..da1b4a51a 100644 --- a/src/test/java/org/scijava/options/OptionsTest.java +++ b/src/test/java/org/scijava/options/OptionsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/parse/ParseServiceTest.java b/src/test/java/org/scijava/parse/ParseServiceTest.java index 5a7cdb164..ffe1ee60d 100644 --- a/src/test/java/org/scijava/parse/ParseServiceTest.java +++ b/src/test/java/org/scijava/parse/ParseServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginFinderTest.java b/src/test/java/org/scijava/plugin/PluginFinderTest.java index a5562f3bb..7c83b3b57 100644 --- a/src/test/java/org/scijava/plugin/PluginFinderTest.java +++ b/src/test/java/org/scijava/plugin/PluginFinderTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginIndexTest.java b/src/test/java/org/scijava/plugin/PluginIndexTest.java index 7453aba96..76a076493 100644 --- a/src/test/java/org/scijava/plugin/PluginIndexTest.java +++ b/src/test/java/org/scijava/plugin/PluginIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/PluginInfoTest.java b/src/test/java/org/scijava/plugin/PluginInfoTest.java index eb8507f43..ae9098a0d 100644 --- a/src/test/java/org/scijava/plugin/PluginInfoTest.java +++ b/src/test/java/org/scijava/plugin/PluginInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/plugin/SingletonServiceTest.java b/src/test/java/org/scijava/plugin/SingletonServiceTest.java index 18242910f..1ef3e82de 100644 --- a/src/test/java/org/scijava/plugin/SingletonServiceTest.java +++ b/src/test/java/org/scijava/plugin/SingletonServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/prefs/PrefServiceTest.java b/src/test/java/org/scijava/prefs/PrefServiceTest.java index 63249b4e5..7a8535ed0 100644 --- a/src/test/java/org/scijava/prefs/PrefServiceTest.java +++ b/src/test/java/org/scijava/prefs/PrefServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/run/RunServiceTest.java b/src/test/java/org/scijava/run/RunServiceTest.java index ae3506c8c..71e2213d9 100644 --- a/src/test/java/org/scijava/run/RunServiceTest.java +++ b/src/test/java/org/scijava/run/RunServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java b/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java index 192232351..8ad3ef941 100644 --- a/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java +++ b/src/test/java/org/scijava/script/AbstractScriptLanguageTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptEngineTest.java b/src/test/java/org/scijava/script/ScriptEngineTest.java index 3df84bf5a..f8fac4dc9 100644 --- a/src/test/java/org/scijava/script/ScriptEngineTest.java +++ b/src/test/java/org/scijava/script/ScriptEngineTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptFinderTest.java b/src/test/java/org/scijava/script/ScriptFinderTest.java index dce377a2d..74fdc4583 100644 --- a/src/test/java/org/scijava/script/ScriptFinderTest.java +++ b/src/test/java/org/scijava/script/ScriptFinderTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptInfoTest.java b/src/test/java/org/scijava/script/ScriptInfoTest.java index 47951dd75..eb53d3d2d 100644 --- a/src/test/java/org/scijava/script/ScriptInfoTest.java +++ b/src/test/java/org/scijava/script/ScriptInfoTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/ScriptServiceTest.java b/src/test/java/org/scijava/script/ScriptServiceTest.java index 1cf9ae9ff..404550f5d 100644 --- a/src/test/java/org/scijava/script/ScriptServiceTest.java +++ b/src/test/java/org/scijava/script/ScriptServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java b/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java index 578cfe617..8e9c5b653 100644 --- a/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java +++ b/src/test/java/org/scijava/script/process/ParameterScriptProcessorTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/service/ServiceIndexTest.java b/src/test/java/org/scijava/service/ServiceIndexTest.java index 2629c8195..ea3f6cc8c 100644 --- a/src/test/java/org/scijava/service/ServiceIndexTest.java +++ b/src/test/java/org/scijava/service/ServiceIndexTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/task/TaskEventTest.java b/src/test/java/org/scijava/task/TaskEventTest.java index eb939fbf0..82d98f85f 100644 --- a/src/test/java/org/scijava/task/TaskEventTest.java +++ b/src/test/java/org/scijava/task/TaskEventTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/task/TaskServiceTest.java b/src/test/java/org/scijava/task/TaskServiceTest.java index a8c99505f..00b320b0a 100644 --- a/src/test/java/org/scijava/task/TaskServiceTest.java +++ b/src/test/java/org/scijava/task/TaskServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/test/AbstractSciJavaTest.java b/src/test/java/org/scijava/test/AbstractSciJavaTest.java index 5f8dab9a0..3b859e001 100644 --- a/src/test/java/org/scijava/test/AbstractSciJavaTest.java +++ b/src/test/java/org/scijava/test/AbstractSciJavaTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/test/TestUtilsTest.java b/src/test/java/org/scijava/test/TestUtilsTest.java index 3bba34708..69beb2bd2 100644 --- a/src/test/java/org/scijava/test/TestUtilsTest.java +++ b/src/test/java/org/scijava/test/TestUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/text/TextServiceTest.java b/src/test/java/org/scijava/text/TextServiceTest.java index e969da2aa..fd16a40f3 100644 --- a/src/test/java/org/scijava/text/TextServiceTest.java +++ b/src/test/java/org/scijava/text/TextServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/thread/ThreadServiceTest.java b/src/test/java/org/scijava/thread/ThreadServiceTest.java index 83e5dd336..29ce7b4dd 100644 --- a/src/test/java/org/scijava/thread/ThreadServiceTest.java +++ b/src/test/java/org/scijava/thread/ThreadServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/ui/UIServiceTest.java b/src/test/java/org/scijava/ui/UIServiceTest.java index 7a53b6e58..9aba1641c 100644 --- a/src/test/java/org/scijava/ui/UIServiceTest.java +++ b/src/test/java/org/scijava/ui/UIServiceTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/AppUtilsTest.java b/src/test/java/org/scijava/util/AppUtilsTest.java index 2bce17e08..a67e4b758 100644 --- a/src/test/java/org/scijava/util/AppUtilsTest.java +++ b/src/test/java/org/scijava/util/AppUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ArrayUtilsTest.java b/src/test/java/org/scijava/util/ArrayUtilsTest.java index 15e953adc..2ce778bb9 100644 --- a/src/test/java/org/scijava/util/ArrayUtilsTest.java +++ b/src/test/java/org/scijava/util/ArrayUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/BoolArrayTest.java b/src/test/java/org/scijava/util/BoolArrayTest.java index 2da00516f..9b8239e68 100644 --- a/src/test/java/org/scijava/util/BoolArrayTest.java +++ b/src/test/java/org/scijava/util/BoolArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ByteArrayTest.java b/src/test/java/org/scijava/util/ByteArrayTest.java index ab862f915..0e8108951 100644 --- a/src/test/java/org/scijava/util/ByteArrayTest.java +++ b/src/test/java/org/scijava/util/ByteArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/CharArrayTest.java b/src/test/java/org/scijava/util/CharArrayTest.java index 9aa855f27..9d4403e75 100644 --- a/src/test/java/org/scijava/util/CharArrayTest.java +++ b/src/test/java/org/scijava/util/CharArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ClassUtilsTest.java b/src/test/java/org/scijava/util/ClassUtilsTest.java index 0e8e022f1..1e3f809d4 100644 --- a/src/test/java/org/scijava/util/ClassUtilsTest.java +++ b/src/test/java/org/scijava/util/ClassUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ColorRGBTest.java b/src/test/java/org/scijava/util/ColorRGBTest.java index d09e01721..8f5225b58 100644 --- a/src/test/java/org/scijava/util/ColorRGBTest.java +++ b/src/test/java/org/scijava/util/ColorRGBTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ConversionUtilsTest.java b/src/test/java/org/scijava/util/ConversionUtilsTest.java index 3daac3f50..f19b7f8e4 100644 --- a/src/test/java/org/scijava/util/ConversionUtilsTest.java +++ b/src/test/java/org/scijava/util/ConversionUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/DigestUtilsTest.java b/src/test/java/org/scijava/util/DigestUtilsTest.java index 0b1e15f24..c9b37378b 100644 --- a/src/test/java/org/scijava/util/DigestUtilsTest.java +++ b/src/test/java/org/scijava/util/DigestUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/DoubleArrayTest.java b/src/test/java/org/scijava/util/DoubleArrayTest.java index 6d382c09c..385b8ee31 100644 --- a/src/test/java/org/scijava/util/DoubleArrayTest.java +++ b/src/test/java/org/scijava/util/DoubleArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/FileUtilsTest.java b/src/test/java/org/scijava/util/FileUtilsTest.java index dd240f593..0bbc6645e 100644 --- a/src/test/java/org/scijava/util/FileUtilsTest.java +++ b/src/test/java/org/scijava/util/FileUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/FloatArrayTest.java b/src/test/java/org/scijava/util/FloatArrayTest.java index a76c12349..9a8516ac9 100644 --- a/src/test/java/org/scijava/util/FloatArrayTest.java +++ b/src/test/java/org/scijava/util/FloatArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/GenericArrayTypesTest.java b/src/test/java/org/scijava/util/GenericArrayTypesTest.java index fee6a2504..5c6e06e9d 100644 --- a/src/test/java/org/scijava/util/GenericArrayTypesTest.java +++ b/src/test/java/org/scijava/util/GenericArrayTypesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/IntArrayTest.java b/src/test/java/org/scijava/util/IntArrayTest.java index 7536716d3..b28b46390 100644 --- a/src/test/java/org/scijava/util/IntArrayTest.java +++ b/src/test/java/org/scijava/util/IntArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/LastRecentlyUsedTest.java b/src/test/java/org/scijava/util/LastRecentlyUsedTest.java index 8eeb5c5db..10d11e427 100644 --- a/src/test/java/org/scijava/util/LastRecentlyUsedTest.java +++ b/src/test/java/org/scijava/util/LastRecentlyUsedTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/LongArrayTest.java b/src/test/java/org/scijava/util/LongArrayTest.java index a18997343..c0a384b7a 100644 --- a/src/test/java/org/scijava/util/LongArrayTest.java +++ b/src/test/java/org/scijava/util/LongArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/NumberUtilsTest.java b/src/test/java/org/scijava/util/NumberUtilsTest.java index 5ce6b3780..28cef6cea 100644 --- a/src/test/java/org/scijava/util/NumberUtilsTest.java +++ b/src/test/java/org/scijava/util/NumberUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ObjectArrayTest.java b/src/test/java/org/scijava/util/ObjectArrayTest.java index 1c96cec41..8bcdf73ee 100644 --- a/src/test/java/org/scijava/util/ObjectArrayTest.java +++ b/src/test/java/org/scijava/util/ObjectArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/POMTest.java b/src/test/java/org/scijava/util/POMTest.java index 86a800515..2ca1ea072 100644 --- a/src/test/java/org/scijava/util/POMTest.java +++ b/src/test/java/org/scijava/util/POMTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/PrimitiveArrayTest.java b/src/test/java/org/scijava/util/PrimitiveArrayTest.java index 0fde7de05..64a74492b 100644 --- a/src/test/java/org/scijava/util/PrimitiveArrayTest.java +++ b/src/test/java/org/scijava/util/PrimitiveArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ProcessUtilsTest.java b/src/test/java/org/scijava/util/ProcessUtilsTest.java index dc529b96b..ce3346a2c 100644 --- a/src/test/java/org/scijava/util/ProcessUtilsTest.java +++ b/src/test/java/org/scijava/util/ProcessUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/PropertiesHelperTest.java b/src/test/java/org/scijava/util/PropertiesHelperTest.java index 35202c9f5..3e3cc57fb 100644 --- a/src/test/java/org/scijava/util/PropertiesHelperTest.java +++ b/src/test/java/org/scijava/util/PropertiesHelperTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/ShortArrayTest.java b/src/test/java/org/scijava/util/ShortArrayTest.java index 3626aa063..005718285 100644 --- a/src/test/java/org/scijava/util/ShortArrayTest.java +++ b/src/test/java/org/scijava/util/ShortArrayTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/StringUtilsTest.java b/src/test/java/org/scijava/util/StringUtilsTest.java index 86555e910..95b0cd431 100644 --- a/src/test/java/org/scijava/util/StringUtilsTest.java +++ b/src/test/java/org/scijava/util/StringUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/TypesTest.java b/src/test/java/org/scijava/util/TypesTest.java index 3ffa1edea..d3529cb0c 100644 --- a/src/test/java/org/scijava/util/TypesTest.java +++ b/src/test/java/org/scijava/util/TypesTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/UnitUtilsTest.java b/src/test/java/org/scijava/util/UnitUtilsTest.java index 96f54eae7..e253a0319 100644 --- a/src/test/java/org/scijava/util/UnitUtilsTest.java +++ b/src/test/java/org/scijava/util/UnitUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/util/VersionUtilsTest.java b/src/test/java/org/scijava/util/VersionUtilsTest.java index 35554427b..f56be8426 100644 --- a/src/test/java/org/scijava/util/VersionUtilsTest.java +++ b/src/test/java/org/scijava/util/VersionUtilsTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/java/org/scijava/widget/WidgetStyleTest.java b/src/test/java/org/scijava/widget/WidgetStyleTest.java index 2391ecb8a..0043dba69 100644 --- a/src/test/java/org/scijava/widget/WidgetStyleTest.java +++ b/src/test/java/org/scijava/widget/WidgetStyleTest.java @@ -2,7 +2,7 @@ * #%L * SciJava Common shared library for SciJava software. * %% - * Copyright (C) 2009 - 2024 SciJava developers. + * Copyright (C) 2009 - 2025 SciJava developers. * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: From 321668723c01e551f2e56204d5fb6fbe83d6d77e Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 12 May 2025 16:33:10 -0500 Subject: [PATCH 175/185] POM: update parent to pom-scijava 40.0.0 --- LICENSE.txt | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index e37abf5e1..142f26652 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 - 2024, SciJava developers. +Copyright (c) 2009 - 2025, SciJava developers. All rights reserved. Redistribution and use in source and binary forms, with or without modification, diff --git a/pom.xml b/pom.xml index 4e188fa32..58b55bf01 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 37.0.0 + 40.0.0 From 8f8a277df6b6d14fa42b9cc451dbe2cf266c4e53 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Mon, 12 May 2025 16:42:53 -0500 Subject: [PATCH 176/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 58b55bf01..7462349d6 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.99.1-SNAPSHOT + 2.99.2-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 29255db02499ebc6b70c1066562b48696beb2913 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 27 May 2025 19:49:02 -0500 Subject: [PATCH 177/185] Be less noisy about overlapping script languages We really only need to know about these things in debug mode. --- src/main/java/org/scijava/script/ScriptLanguageIndex.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/script/ScriptLanguageIndex.java b/src/main/java/org/scijava/script/ScriptLanguageIndex.java index ddab0a36e..f3680e18b 100644 --- a/src/main/java/org/scijava/script/ScriptLanguageIndex.java +++ b/src/main/java/org/scijava/script/ScriptLanguageIndex.java @@ -146,8 +146,8 @@ private boolean put(final String type, final Map map, // Conflicting value; behavior depends on mode. if (gently) { // Do not overwrite the previous value. - if (log != null && log.isWarn()) { - log.warn(overwriteMessage(false, type, key, value, existing)); + if (log != null && log.isDebug()) { + log.debug(overwriteMessage(false, type, key, value, existing)); } return false; } From c720bf0ef6b67ec2d54758a7162f7b2e41fa0c41 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 27 May 2025 22:11:29 -0500 Subject: [PATCH 178/185] Bump to next development cycle Signed-off-by: Curtis Rueden --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7462349d6..7270aa62e 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.99.2-SNAPSHOT + 2.99.3-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by downstream projects in the SciJava ecosystem, such as ImageJ and SCIFIO. From 6679961e0d6a900e22e86b096b634f478529a2b2 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 23 Sep 2025 16:05:50 -0500 Subject: [PATCH 179/185] Slightly improve the scary missing object message Instead of "A ___ is required but none exists", we now use the slightly less scary "A(n) ___ is required but none is available." --- .../org/scijava/widget/AbstractInputHarvester.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/widget/AbstractInputHarvester.java b/src/main/java/org/scijava/widget/AbstractInputHarvester.java index 1eaea1045..5b9e59ec5 100644 --- a/src/main/java/org/scijava/widget/AbstractInputHarvester.java +++ b/src/main/java/org/scijava/widget/AbstractInputHarvester.java @@ -30,6 +30,7 @@ package org.scijava.widget; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Set; @@ -120,8 +121,15 @@ private WidgetModel addInput(final InputPanel inputPanel, } if (item.isRequired()) { - throw new ModuleException("A " + type.getSimpleName() + - " is required but none exist."); + final List vowelSoundPrefixes = Arrays.asList( + "a", "e", "i", "o", "u", "honor", "honour", "hour", "xml" + ); + final String typeName = type.getSimpleName(); + final String article = vowelSoundPrefixes.stream().anyMatch( + prefix -> typeName.toLowerCase().startsWith(prefix) + ) ? "An" : "A"; + throw new ModuleException(article + " " + typeName + + " is required but none is available."); } // item is not required; we can skip it From dbf2a7aab578c0b6ff37a2a5827e4021ba2be1c1 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 4 Nov 2025 12:53:39 -0600 Subject: [PATCH 180/185] Make KeyCode hex codes consistently low-case --- src/main/java/org/scijava/input/KeyCode.java | 148 +++++++++---------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/src/main/java/org/scijava/input/KeyCode.java b/src/main/java/org/scijava/input/KeyCode.java index 2c2dc7444..234353ca3 100644 --- a/src/main/java/org/scijava/input/KeyCode.java +++ b/src/main/java/org/scijava/input/KeyCode.java @@ -52,7 +52,7 @@ public enum KeyCode { CANCEL(0x03), /** Clear. */ - CLEAR(0x0C), + CLEAR(0x0c), /** Shift (left or right). */ SHIFT(0x10), @@ -70,7 +70,7 @@ public enum KeyCode { CAPS_LOCK(0x14), /** Escape. */ - ESCAPE(0x1B), + ESCAPE(0x1b), /** Space (' '). */ SPACE(0x20), @@ -100,16 +100,16 @@ public enum KeyCode { DOWN(0x28), /** Comma (','). */ - COMMA(0x2C), + COMMA(0x2c), /** Minus ('-'). */ - MINUS(0x2D), + MINUS(0x2d), /** Period ('.'). */ - PERIOD(0x2E), + PERIOD(0x2e), /** Forward slash ('/'). */ - SLASH(0x2F), + SLASH(0x2f), /** Zero ('0', non-numpad). */ NUM0(0x30), @@ -142,10 +142,10 @@ public enum KeyCode { NUM9(0x39), /** Semicolon (';'). */ - SEMICOLON(0x3B), + SEMICOLON(0x3b), /** Equals ('='). */ - EQUALS(0x3D), + EQUALS(0x3d), /** The letter A. */ A(0x41), @@ -175,22 +175,22 @@ public enum KeyCode { I(0x49), /** The letter J. */ - J(0x4A), + J(0x4a), /** The letter K. */ - K(0x4B), + K(0x4b), /** The letter L. */ - L(0x4C), + L(0x4c), /** The letter M. */ - M(0x4D), + M(0x4d), /** The letter N. */ - N(0x4E), + N(0x4e), /** The letter O. */ - O(0x4F), + O(0x4f), /** The letter P. */ P(0x50), @@ -223,16 +223,16 @@ public enum KeyCode { Y(0x59), /** The letter Z. */ - Z(0x5A), + Z(0x5a), /** Left bracket ('['). */ - OPEN_BRACKET(0x5B), + OPEN_BRACKET(0x5b), /** Backslash ('\\'). */ - BACK_SLASH(0x5C), + BACK_SLASH(0x5c), /** Right bracket (']'). */ - CLOSE_BRACKET(0x5D), + CLOSE_BRACKET(0x5d), /** Zero ('0') on numeric keypad. */ NUMPAD_0(0x60), @@ -265,24 +265,24 @@ public enum KeyCode { NUMPAD_9(0x69), /** Asterisk ('*') on numeric keypad. */ - NUMPAD_ASTERISK(0x6A), + NUMPAD_ASTERISK(0x6a), /** Plus ('+') on numeric keypad. */ - NUMPAD_PLUS(0x6B), + NUMPAD_PLUS(0x6b), - NUMPAD_SEPARATOR(0x6C), + NUMPAD_SEPARATOR(0x6c), /** Minus ('-') on numeric keypad. */ - NUMPAD_MINUS(0x6D), + NUMPAD_MINUS(0x6d), /** Period ('.') on numeric keypad. */ - NUMPAD_PERIOD(0x6E), + NUMPAD_PERIOD(0x6e), /** Slash ('/') on numeric keypad. */ - NUMPAD_SLASH(0x6F), + NUMPAD_SLASH(0x6f), /** Delete (non-numpad). */ - DELETE(0x7F), + DELETE(0x7f), /** Num Lock. */ NUM_LOCK(0x90), @@ -321,76 +321,76 @@ public enum KeyCode { F10(0x79), /** F11. */ - F11(0x7A), + F11(0x7a), /** F12. */ - F12(0x7B), + F12(0x7b), /** F13. */ - F13(0xF000), + F13(0xf000), /** F14. */ - F14(0xF001), + F14(0xf001), /** F15. */ - F15(0xF002), + F15(0xf002), /** F16. */ - F16(0xF003), + F16(0xf003), /** F17. */ - F17(0xF004), + F17(0xf004), /** F18 */ - F18(0xF005), + F18(0xf005), /** F19. */ - F19(0xF006), + F19(0xf006), /** F20. */ - F20(0xF007), + F20(0xf007), /** F21. */ - F21(0xF008), + F21(0xf008), /** F22. */ - F22(0xF009), + F22(0xf009), /** F23. */ - F23(0xF00A), + F23(0xf00a), /** F24. */ - F24(0xF00B), + F24(0xf00b), /** Print Screen. */ - PRINTSCREEN(0x9A), + PRINTSCREEN(0x9a), /** Insert. */ - INSERT(0x9B), + INSERT(0x9b), /** Help. */ - HELP(0x9C), + HELP(0x9c), /** Meta. */ - META(0x9D), + META(0x9d), /** Backquote ('`'). */ - BACK_QUOTE(0xC0), + BACK_QUOTE(0xc0), /** Single quote ('\''). */ - QUOTE(0xDE), + QUOTE(0xde), /** Up arrow on numeric keypad. */ - KP_UP(0xE0), + KP_UP(0xe0), /** Down arrow on numeric keypad. */ - KP_DOWN(0xE1), + KP_DOWN(0xe1), /** Left arrow on numeric keypad. */ - KP_LEFT(0xE2), + KP_LEFT(0xe2), /** Right arrow on numeric keypad. */ - KP_RIGHT(0xE3), + KP_RIGHT(0xe3), /** TODO. */ DEAD_GRAVE(0x80), @@ -492,51 +492,51 @@ public enum KeyCode { PLUS(0x0209), /** Right parenthesis (')'). */ - RIGHT_PARENTHESIS(0x020A), + RIGHT_PARENTHESIS(0x020a), /** Underscore ('_'). */ - UNDERSCORE(0x020B), + UNDERSCORE(0x020b), /** Windows key (both left and right). */ - WINDOWS(0x020C), + WINDOWS(0x020c), /** Windows Context Menu key. */ - CONTEXT_MENU(0x020D), + CONTEXT_MENU(0x020d), FINAL(0x0018), /** Convert function key. */ - CONVERT(0x001C), + CONVERT(0x001c), /** Don't Convert function key. */ - NONCONVERT(0x001D), + NONCONVERT(0x001d), /** Accept or Commit function key. */ - ACCEPT(0x001E), + ACCEPT(0x001e), - MODECHANGE(0x001F), + MODECHANGE(0x001f), KANA(0x0015), KANJI(0x0019), /** Alphanumeric function key. */ - ALPHANUMERIC(0x00F0), + ALPHANUMERIC(0x00f0), /** Katakana function key. */ - KATAKANA(0x00F1), + KATAKANA(0x00f1), /** Hiragana function key. */ - HIRAGANA(0x00F2), + HIRAGANA(0x00f2), /** Full-Width Characters function key. */ - FULL_WIDTH(0x00F3), + FULL_WIDTH(0x00f3), /** Half-Width Characters function key. */ - HALF_WIDTH(0x00F4), + HALF_WIDTH(0x00f4), /** Roman Characters function key. */ - ROMAN_CHARACTERS(0x00F5), + ROMAN_CHARACTERS(0x00f5), /** All Candidates function key. */ ALL_CANDIDATES(0x0100), @@ -563,37 +563,37 @@ public enum KeyCode { INPUT_METHOD_ON_OFF(0x0107), /** Cut (Sun keyboard). */ - CUT(0xFFD1), + CUT(0xffd1), /** Copy (Sun keyboard). */ - COPY(0xFFCD), + COPY(0xffcd), /** Paste (Sun keyboard). */ - PASTE(0xFFCF), + PASTE(0xffcf), /** Undo (Sun keyboard). */ - UNDO(0xFFCB), + UNDO(0xffcb), /** Again (Sun keyboard). */ - AGAIN(0xFFC9), + AGAIN(0xffc9), /** Find (Sun keyboard). */ - FIND(0xFFD0), + FIND(0xffd0), /** Props (Sun keyboard). */ - PROPS(0xFFCA), + PROPS(0xffca), /** Stop (Sun keyboard). */ - STOP(0xFFC8), + STOP(0xffc8), /** Compose function key. */ - COMPOSE(0xFF20), + COMPOSE(0xff20), /** AltGraph function key. */ - ALT_GRAPH(0xFF7E), + ALT_GRAPH(0xff7e), /** Begin key. */ - BEGIN(0xFF58), + BEGIN(0xff58), /** Unknown code. */ UNDEFINED(0x0); From a012ce1027f0aab78f464c759b5eed2c04b73283 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 4 Nov 2025 12:53:58 -0600 Subject: [PATCH 181/185] Add KeyCode.get(char) method Previously, passing a char to KeyCode would call KeyCode.get(int), which does not do what one might expect. For example, calling KeyCode.get('a') would convert the 'a' character to integer/ASCII code 97, which corresponds to KeyCode.NUMPAD_0! This commit introduces a function that behaves as one would expect KeyCode.get(char) to behave: mapping the actual character value to the key code constant associated with it. So now, KeyCode.get('a') returns KeyCode.A as one might expect. Unfortunately, not all codes have clean character values, and not all characters map unambiguously to key codes; e.g.: * Both 'a' and 'A' map to KeyCode.A * '0' maps to KeyCode.NUM0, not KeyCode.NUMPAD_0 * '/' maps to KeyCode.SLASH, not KeyCode.NUMPAD_SLASH But it's still a big step forward in abiding by PoLA. --- src/main/java/org/scijava/input/KeyCode.java | 81 +++++++++++++++++ .../java/org/scijava/input/KeyCodeTest.java | 89 +++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 src/test/java/org/scijava/input/KeyCodeTest.java diff --git a/src/main/java/org/scijava/input/KeyCode.java b/src/main/java/org/scijava/input/KeyCode.java index 234353ca3..0a6d20e0c 100644 --- a/src/main/java/org/scijava/input/KeyCode.java +++ b/src/main/java/org/scijava/input/KeyCode.java @@ -632,6 +632,87 @@ public static KeyCode get(final int code) { return keyCode; } + /** + * Gets the KeyCode corresponding to the given character, + * or {@link #UNDEFINED} if no such code. + */ + public static KeyCode get(final char c) { + switch (c) { + case '\n': case '\r': return ENTER; + case '\b': return BACK_SPACE; + case '\t': return TAB; + case 0x1b: return ESCAPE; + case ' ': return SPACE; + case ',': return COMMA; + case '-': return MINUS; + case '.': return PERIOD; + case '/': return SLASH; + case '0': return NUM0; + case '1': return NUM1; + case '2': return NUM2; + case '3': return NUM3; + case '4': return NUM4; + case '5': return NUM5; + case '6': return NUM6; + case '7': return NUM7; + case '8': return NUM8; + case '9': return NUM9; + case ';': return SEMICOLON; + case '=': return EQUALS; + case 'a': case 'A': return A; + case 'b': case 'B': return B; + case 'c': case 'C': return C; + case 'd': case 'D': return D; + case 'e': case 'E': return E; + case 'f': case 'F': return F; + case 'g': case 'G': return G; + case 'h': case 'H': return H; + case 'i': case 'I': return I; + case 'j': case 'J': return J; + case 'k': case 'K': return K; + case 'l': case 'L': return L; + case 'm': case 'M': return M; + case 'n': case 'N': return N; + case 'o': case 'O': return O; + case 'p': case 'P': return P; + case 'q': case 'Q': return Q; + case 'r': case 'R': return R; + case 's': case 'S': return S; + case 't': case 'T': return T; + case 'u': case 'U': return U; + case 'v': case 'V': return V; + case 'w': case 'W': return W; + case 'x': case 'X': return X; + case 'y': case 'Y': return Y; + case 'z': case 'Z': return Z; + case '[': return OPEN_BRACKET; + case '\\': return BACK_SLASH; + case ']': return CLOSE_BRACKET; + case '`': return BACK_QUOTE; + case '\'': return QUOTE; + case '&': return AMPERSAND; + case '*': return ASTERISK; + case '"': return QUOTEDBL; + case '<': return LESS; + case '>': return GREATER; + case '{': return BRACELEFT; + case '}': return BRACERIGHT; + case '@': return AT; + case ':': return COLON; + case '^': return CIRCUMFLEX; + case '$': return DOLLAR; + case '€': return EURO_SIGN; + case '!': return EXCLAMATION_MARK; + case 161: return INVERTED_EXCLAMATION_MARK; + case '(': return LEFT_PARENTHESIS; + case '#': return NUMBER_SIGN; + case '+': return PLUS; + case ')': return RIGHT_PARENTHESIS; + case '_': return UNDERSCORE; + } + return UNDEFINED; + } + /** * Gets the KeyCode with the given name, or {@link #UNDEFINED} if no such * code. diff --git a/src/test/java/org/scijava/input/KeyCodeTest.java b/src/test/java/org/scijava/input/KeyCodeTest.java new file mode 100644 index 000000000..3b08ed552 --- /dev/null +++ b/src/test/java/org/scijava/input/KeyCodeTest.java @@ -0,0 +1,89 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2025 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.input; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertSame; + +import org.junit.Test; +import org.scijava.plugin.PluginInfo; + +/** + * Tests {@link KeyCode}. + * + * @author Curtis Rueden + */ +public class KeyCodeTest { + + @Test + public void testGetInt() { + assertEquals(KeyCode.ENTER, KeyCode.get(0x0a)); + assertEquals(KeyCode.PLUS, KeyCode.get(0x0209)); + assertEquals(KeyCode.NUM0, KeyCode.get(0x30)); + assertEquals(KeyCode.NUMPAD_0, KeyCode.get(0x60)); + assertEquals(KeyCode.A, KeyCode.get(0x41)); + assertEquals(KeyCode.Z, KeyCode.get(0x5a)); + + assertEquals(KeyCode.UNDEFINED, KeyCode.get(0xaaaa)); + assertEquals(KeyCode.UNDEFINED, KeyCode.get(0xffff)); + } + + @Test + public void testGetChar() { + assertEquals(KeyCode.ENTER, KeyCode.get('\n')); + assertEquals(KeyCode.ENTER, KeyCode.get('\r')); + assertEquals(KeyCode.PLUS, KeyCode.get('+')); + assertEquals(KeyCode.NUM0, KeyCode.get('0')); + assertEquals(KeyCode.A, KeyCode.get('a')); + assertEquals(KeyCode.A, KeyCode.get('A')); + assertEquals(KeyCode.Z, KeyCode.get('z')); + assertEquals(KeyCode.Z, KeyCode.get('Z')); + + assertEquals(KeyCode.UNDEFINED, KeyCode.get('\0')); + + // The following should maybe be considered a bug. + assertEquals(KeyCode.UNDEFINED, KeyCode.get('|')); + } + + @Test + public void testGetString() { + assertEquals(KeyCode.PLUS, KeyCode.get("PLUS")); + assertEquals(KeyCode.NUM0, KeyCode.get("NUM0")); + assertEquals(KeyCode.NUMPAD_0, KeyCode.get("NUMPAD_0")); + assertEquals(KeyCode.A, KeyCode.get("A")); + assertEquals(KeyCode.Z, KeyCode.get("Z")); + + assertEquals(KeyCode.UNDEFINED, KeyCode.get("UNDEFINED")); + assertEquals(KeyCode.UNDEFINED, KeyCode.get("")); + assertEquals(KeyCode.UNDEFINED, KeyCode.get("aa")); + assertEquals(KeyCode.UNDEFINED, KeyCode.get("asdf")); + } +} From b6df2fcb96e520d2b10e6f271acb735e36f0636f Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 4 Nov 2025 13:19:10 -0600 Subject: [PATCH 182/185] Let KeyCode.get(String) fall back to get(char) This makes KeyCode.get(String) behave less surprisingly: e.g., KeyCode.get("a") now returns KeyCode.A instead of KeyCode.UNDEFINED. --- src/main/java/org/scijava/input/KeyCode.java | 6 ++++-- src/test/java/org/scijava/input/KeyCodeTest.java | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scijava/input/KeyCode.java b/src/main/java/org/scijava/input/KeyCode.java index 0a6d20e0c..0e0ec35e1 100644 --- a/src/main/java/org/scijava/input/KeyCode.java +++ b/src/main/java/org/scijava/input/KeyCode.java @@ -719,8 +719,10 @@ public static KeyCode get(final char c) { */ public static KeyCode get(final String name) { final KeyCode keyCode = NAMES.get(name); - if (keyCode == null) return UNDEFINED; - return keyCode; + if (keyCode != null) return keyCode; + // Not a code name, but maybe a direct character value? + if (name.length() == 1) return KeyCode.get(name.charAt(0)); + return UNDEFINED; } } diff --git a/src/test/java/org/scijava/input/KeyCodeTest.java b/src/test/java/org/scijava/input/KeyCodeTest.java index 3b08ed552..fec7f8b9e 100644 --- a/src/test/java/org/scijava/input/KeyCodeTest.java +++ b/src/test/java/org/scijava/input/KeyCodeTest.java @@ -81,6 +81,11 @@ public void testGetString() { assertEquals(KeyCode.A, KeyCode.get("A")); assertEquals(KeyCode.Z, KeyCode.get("Z")); + // The next ones should fall back to get(char). + assertEquals(KeyCode.NUM0, KeyCode.get("0")); + assertEquals(KeyCode.A, KeyCode.get("a")); + assertEquals(KeyCode.Z, KeyCode.get("z")); + assertEquals(KeyCode.UNDEFINED, KeyCode.get("UNDEFINED")); assertEquals(KeyCode.UNDEFINED, KeyCode.get("")); assertEquals(KeyCode.UNDEFINED, KeyCode.get("aa")); From e0441ccab57fb32d2f1ea8416a22653400eca97f Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 4 Nov 2025 13:55:05 -0600 Subject: [PATCH 183/185] KeyCode: remove unneeded imports --- src/test/java/org/scijava/input/KeyCodeTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/test/java/org/scijava/input/KeyCodeTest.java b/src/test/java/org/scijava/input/KeyCodeTest.java index fec7f8b9e..6370089b5 100644 --- a/src/test/java/org/scijava/input/KeyCodeTest.java +++ b/src/test/java/org/scijava/input/KeyCodeTest.java @@ -30,11 +30,8 @@ package org.scijava.input; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertSame; import org.junit.Test; -import org.scijava.plugin.PluginInfo; /** * Tests {@link KeyCode}. From 0788f72831368c8fab59dedf29d72631c053901b Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Tue, 4 Nov 2025 13:55:48 -0600 Subject: [PATCH 184/185] Add unit tests for Accelerator class --- .../org/scijava/input/AcceleratorTest.java | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/test/java/org/scijava/input/AcceleratorTest.java diff --git a/src/test/java/org/scijava/input/AcceleratorTest.java b/src/test/java/org/scijava/input/AcceleratorTest.java new file mode 100644 index 000000000..3270287df --- /dev/null +++ b/src/test/java/org/scijava/input/AcceleratorTest.java @@ -0,0 +1,82 @@ +/* + * #%L + * SciJava Common shared library for SciJava software. + * %% + * Copyright (C) 2009 - 2025 SciJava developers. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ + +package org.scijava.input; + +import org.junit.Test; +import org.scijava.util.PlatformUtils; + +import static org.junit.Assert.*; + +/** + * Tests {@link Accelerator}. + * + * @author Curtis Rueden + */ +public class AcceleratorTest { + + /** Tests {@link Accelerator#create}. */ + @Test + public void testCreate() { + assertAccelerator("*", KeyCode.ASTERISK, false, false, false, false, false); + assertAccelerator("0", KeyCode.NUM0, false, false, false, false, false); + assertAccelerator("NUMPAD_0", KeyCode.NUMPAD_0, false, false, false, false, false); + assertAccelerator("+", KeyCode.PLUS, false, false, false, false, false); + assertAccelerator("shift minus", KeyCode.MINUS, false, false, false, false, true); + assertAccelerator("ctrl shift +", KeyCode.PLUS, false, false, true, false, true); + assertAccelerator("meta /", KeyCode.SLASH, false, false, false, true, false); + assertAccelerator("alt altGr ctrl meta shift a", KeyCode.A, true, true, true, true, true); + + // Test caret shortcut symbol. + final boolean macos = PlatformUtils.isMac(); + assertAccelerator("^Z", KeyCode.Z, false, false, !macos, macos, false); + } + + private void assertAccelerator(String shortcut, + KeyCode keyCode, + final boolean alt, + final boolean altGr, + final boolean ctrl, + final boolean meta, + final boolean shift) + { + Accelerator acc = Accelerator.create(shortcut); + assertEquals(acc.getKeyCode(), keyCode); + InputModifiers mods = acc.getModifiers(); + assertNotNull(mods); + assertEquals(alt, mods.isAltDown()); + assertEquals(altGr, mods.isAltGrDown()); + assertEquals(ctrl, mods.isCtrlDown()); + assertEquals(meta, mods.isMetaDown()); + assertEquals(shift, mods.isShiftDown()); + assertFalse(mods.isLeftButtonDown()); + assertFalse(mods.isMiddleButtonDown()); + assertFalse(mods.isRightButtonDown()); + } +} From 2b73a8a713f050ce7309122a3d76a2a501e6537c Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Wed, 12 Nov 2025 12:30:36 -0600 Subject: [PATCH 185/185] Emit debug messages if Platform#open(URL) fails --- .../java/org/scijava/platform/DefaultPlatform.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/org/scijava/platform/DefaultPlatform.java b/src/main/java/org/scijava/platform/DefaultPlatform.java index f9d971b58..96e18fded 100644 --- a/src/main/java/org/scijava/platform/DefaultPlatform.java +++ b/src/main/java/org/scijava/platform/DefaultPlatform.java @@ -33,6 +33,8 @@ import java.net.URL; import org.scijava.Priority; +import org.scijava.log.LogService; +import org.scijava.plugin.Parameter; import org.scijava.plugin.Plugin; /** @@ -44,6 +46,9 @@ @Plugin(type = Platform.class, name = "Default", priority = Priority.VERY_LOW) public class DefaultPlatform extends AbstractPlatform { + @Parameter(required = false) + private LogService log; + // -- PlatformHandler methods -- /** @@ -66,9 +71,14 @@ public void open(final URL url) throws IOException { try { final int exitCode = getPlatformService().exec(browser, url.toString()); if (exitCode == 0) return; + else if (log != null) { + log.debug("Command '" + browser + + "' failed with exit code " + exitCode); + } } catch (final IOException e) { // browser executable was invalid; try the next one + if (log != null) log.debug("Command '" + browser + "' failed", e); } } throw new IOException("Could not open " + url);