From 38f2c80514229ea993814a529137733350d61ed8 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Sat, 26 Sep 2026 13:47:21 +0200 Subject: [PATCH 01/15] #610: Add changeset --- ...-allow-adding-plugins-via-configuration.md | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 doc/changesets/610-allow-adding-plugins-via-configuration.md diff --git a/doc/changesets/610-allow-adding-plugins-via-configuration.md b/doc/changesets/610-allow-adding-plugins-via-configuration.md new file mode 100644 index 00000000..eaa5cf96 --- /dev/null +++ b/doc/changesets/610-allow-adding-plugins-via-configuration.md @@ -0,0 +1,112 @@ +# GH-610 Allow Adding Plugins via Configuration + +## Goal + +Provide a public, programmatic way to pass plugin JAR paths to OFT at runtime so that +embedders (e.g. the `openfasttrace-gradle` plugin, which resolves `pluginDependencies` +through a Gradle configuration) no longer need the fragile workaround of replacing the +thread context class loader (TCCL) with a child-first loader and copying OFT's built-in +provider JARs into it. + +Today OFT can only discover third-party plugins from the fixed directory +`$HOME/.oft/plugins//*.jar`. `ServiceLoaderFactory` is package-private and +hardcodes that directory, `InitializingServiceLoader.load(Class, C)` accepts no plugin +locations, and `ClassPathServiceLoader.filterOtherClassLoader` rejects any service whose +class loader differs from the origin's. As a result, embedders that resolve plugins through +their own dependency mechanism cannot register them without breaking built-in importing and +reporting. + +## Scope + +In scope: + +* A public builder API in `core` to configure plugin JARs: `Oft.builder().addPlugin(...).build()`. +* Support for **multiple JARs per plugin**: each `addPlugin(Path... jars)` call forms one + plugin loaded through a single `ChildFirstClassLoader`, matching the existing + `$HOME/.oft/plugins//*.jar` semantics. +* Explicitly configured plugins are loaded **in addition to** the default plugin directory. +* Built-in providers continue to load from the current class path, so configuring a plugin + no longer makes built-in importers/exporters/reporters disappear. +* Programmatic configuration only (no CLI flags). + +Out of scope: + +* CLI options for plugin configuration. +* Replacing or disabling the default `$HOME/.oft/plugins` discovery. +* Changing how built-in providers are discovered. +* Changing plugin packaging or the plugin developer contract. + +## Design References + +* [System Requirements](../spec/system_requirements.md) +* [Quality Requirements](../spec/design/quality_requirements.md) +* [Design](../spec/design.md) — "Discovering and Loading Plugins" + +## Strategy + +Keep the existing plugin-loading internals (`ServiceLoaderFactory`, `ServiceOrigin`, +`ChildFirstClassLoader`, `ClassPathServiceLoader`) unchanged in behavior and continue to +hide them behind the package-private boundary. Thread the configured plugin groups from the +public facade down to the three factory loaders: + +1. `OftBuilder` (new, public, in `core`) collects plugin groups as `List>` and + builds an `OftRunner` backed by a `ServiceFactory` that carries the groups. +2. `ServiceFactory` passes the groups to `ImporterFactoryLoader`, `ExporterFactoryLoader`, + and `ReporterFactoryLoader`. +3. Those loaders call a new public `InitializingServiceLoader.load(Class, C, List>)` + overload, which builds a `ServiceLoaderFactory` that appends one `ServiceOrigin.forJars(group)` + per configured plugin after the default-directory origins. + +`Oft.create()` remains for backward compatibility and delegates to the builder with no +configured plugins. Validation of configured paths happens in `OftBuilder.addPlugin(...)` +so invalid input is rejected at the API boundary. + +## Task List + +- [ ] Create and checkout a new Git branch `feature/610_allow_adding_plugins_via_configuration` + +### Requirements And Design + +- [ ] Add `req~plugins.loading.configuration~1` to `doc/spec/system_requirements.md` under + "Third Party Plugins" (Covers `feat~plugins~1`, Needs dsn) +- [ ] Stop and ask user for a review of the system requirements +- [ ] Add `dsn~plugins.loading.configuration~1` to `doc/spec/design.md` under + "Discovering and Loading Plugins" (Covers the new requirement, Needs impl, utest, itest), + documenting additive semantics, one class loader per configured plugin, and preservation + of built-in providers +- [ ] Stop and ask user for a review of the design + +### Implementation + +- [ ] Add public `OftBuilder` in `core` with `addPlugin(Path... jars)` (reject null/empty + groups and non-existent or non-`.jar` paths with `IllegalArgumentException`) and `build()` +- [ ] Add `Oft.builder()` returning `OftBuilder`; keep `Oft.create()` delegating to the builder +- [ ] Extend `ServiceLoaderFactory` to accept additional plugin groups and append one + `ServiceOrigin.forJars(group)` per group in `findServiceOrigins()` +- [ ] Add public `InitializingServiceLoader.load(Class, C, List>)` overload +- [ ] Add constructor overloads to `ImporterFactoryLoader`, `ExporterFactoryLoader`, and + `ReporterFactoryLoader` that accept plugin groups +- [ ] Add `ServiceFactory(List> plugins)` constructor and keep the no-arg constructor + for `Oft.create()` + +### Verification + +- [ ] `ServiceLoaderFactoryTest`: grouped JARs produce a single origin; configured origins are + appended after default-directory origins +- [ ] `InitializingServiceLoaderTest`: the new overload forwards configured plugin groups +- [ ] New `OftBuilderTest`: parameter validation (null, empty, missing, non-JAR) and build wiring +- [ ] `ServiceLoaderFactoryIT` (product): load a real plugin JAR from a configured path and + assert the plugin loads while built-in reporters remain available +- [ ] Keep the OpenFastTrace trace clean (`./oft-self-trace.sh`) +- [ ] Keep required build and plugin verification tasks green (`mvn -T 1C verify`) + +### Update user documentation + +- [ ] Document `Oft.builder().addPlugin(...)` in `doc/user_guide/oft_api/using_oft_from_java.md` +- [ ] Mention programmatic plugin configuration in `doc/plugins.md` + +## Version and Changelog Update + +- [ ] Raise the version to 4.11.0 (this is a feature release) +- [ ] Write the changelog entry for 4.11.0 in `doc/changes/changes_4.11.0.md` and link it from + `doc/changes/changes.md` From eabf63517c09207f1a439d998be4bfff2ad5699a Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Sat, 26 Sep 2026 14:30:44 +0200 Subject: [PATCH 02/15] #610: Allow configuring additional plugin locations --- .../itsallcode/openfasttrace/core/Oft.java | 11 ++ .../openfasttrace/core/OftBuilder.java | 56 ++++++ .../openfasttrace/core/ServiceFactory.java | 21 ++- .../core/exporter/ExporterFactoryLoader.java | 31 ++- .../core/importer/ImporterFactoryLoader.java | 22 ++- .../core/report/ReporterFactoryLoader.java | 23 ++- .../InitializingServiceLoader.java | 27 ++- .../core/serviceloader/Plugin.java | 101 ++++++++++ .../serviceloader/ServiceLoaderConfig.java | 177 ++++++++++++++++++ .../serviceloader/ServiceLoaderFactory.java | 37 ++-- .../core/serviceloader/ServiceOrigin.java | 22 ++- .../openfasttrace/core/OftBuilderTest.java | 49 +++++ .../core/serviceloader/PluginTest.java | 104 ++++++++++ .../ServiceLoaderFactoryTest.java | 82 +++++++- doc/changes/changes.md | 1 + doc/changes/changes_4.11.0.md | 13 ++ ...-allow-adding-plugins-via-configuration.md | 58 +++--- doc/plugins.md | 17 ++ doc/spec/design.md | 33 ++++ doc/spec/system_requirements.md | 20 ++ doc/user_guide/oft_api/using_oft_from_java.md | 26 +++ parent/pom.xml | 2 +- .../serviceloader/ServiceLoaderFactoryIT.java | 46 ++++- 23 files changed, 906 insertions(+), 73 deletions(-) create mode 100644 core/src/main/java/org/itsallcode/openfasttrace/core/OftBuilder.java create mode 100644 core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java create mode 100644 core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderConfig.java create mode 100644 core/src/test/java/org/itsallcode/openfasttrace/core/OftBuilderTest.java create mode 100644 core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/PluginTest.java create mode 100644 doc/changes/changes_4.11.0.md diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java b/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java index a2ca887e..041442d3 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java @@ -125,4 +125,15 @@ static Oft create() { return new OftRunner(); } + + /** + * Create a builder for configuring an {@link Oft} instance, e.g. to add + * plugins at runtime. + * + * @return a new {@link OftBuilder} + */ + static OftBuilder builder() + { + return new OftBuilder(); + } } diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/OftBuilder.java b/core/src/main/java/org/itsallcode/openfasttrace/core/OftBuilder.java new file mode 100644 index 00000000..ee59d140 --- /dev/null +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/OftBuilder.java @@ -0,0 +1,56 @@ +package org.itsallcode.openfasttrace.core; + +import java.nio.file.Path; + +import org.itsallcode.openfasttrace.core.serviceloader.Plugin; +import org.itsallcode.openfasttrace.core.serviceloader.ServiceLoaderConfig; + +/** + * Builder for creating {@link Oft} instances with custom configuration. + *

+ * Use this builder to configure additional plugins that OFT should load at + * runtime in addition to the plugins discovered from the default locations. + */ +public final class OftBuilder +{ + private final ServiceLoaderConfig.Builder serviceLoaderConfig = ServiceLoaderConfig.builder(); + + OftBuilder() + { + // Prevent instantiation from outside this package. + } + + /** + * Add a named plugin consisting of one or more JAR files. + *

+ * All JAR files passed in one call are loaded through the same separate + * ClassLoader, matching the semantics of a plugin directory under + * {@code $HOME/.oft/plugins//}. The JAR files may contain one + * or more service providers; OFT loads all of them. + * + * @param name + * name of the plugin, used for the ClassLoader name and logging + * @param jars + * paths to the JAR files that make up the plugin + * @return {@code this} for fluent programming + * @throws IllegalArgumentException + * if the name is {@code null} or blank, if no JAR is given, or + * if a path is {@code null} or does not point to an existing JAR + * file + */ + public OftBuilder addPlugin(final String name, final Path... jars) + { + this.serviceLoaderConfig.addPlugin(Plugin.of(name, jars)); + return this; + } + + /** + * Create a new {@link Oft} instance with the configured plugins. + * + * @return a new {@link Oft} instance + */ + public Oft build() + { + return new OftRunner(new ServiceFactory(this.serviceLoaderConfig.build())); + } +} diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java b/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java index 4d0e5d3b..615d7cba 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java @@ -13,18 +13,32 @@ import org.itsallcode.openfasttrace.core.importer.ImporterServiceImpl; import org.itsallcode.openfasttrace.core.report.ReportService; import org.itsallcode.openfasttrace.core.report.ReporterFactoryLoader; +import org.itsallcode.openfasttrace.core.serviceloader.ServiceLoaderConfig; class ServiceFactory { + private final ServiceLoaderConfig serviceLoaderConfig; + + ServiceFactory() + { + this(ServiceLoaderConfig.createDefault()); + } + + ServiceFactory(final ServiceLoaderConfig serviceLoaderConfig) + { + this.serviceLoaderConfig = serviceLoaderConfig; + } + ExporterService createExporterService() { - return new ExporterService(new ExporterFactoryLoader(new ExporterContext())); + return new ExporterService(new ExporterFactoryLoader(new ExporterContext(), this.serviceLoaderConfig)); } ImporterService createImporterService(final ImportSettings settings) { final ImporterContext context = new ImporterContext(settings); - final ImporterService service = new ImporterServiceImpl(new ImporterFactoryLoader(context), settings); + final ImporterService service = new ImporterServiceImpl( + new ImporterFactoryLoader(context, this.serviceLoaderConfig), settings); context.setImporterService(service); return service; } @@ -41,6 +55,7 @@ Tracer createTracer() ReportService createReportService(final ReportSettings settings) { - return new ReportService(new ReporterFactoryLoader(new ReporterContext(settings))); + return new ReportService( + new ReporterFactoryLoader(new ReporterContext(settings), this.serviceLoaderConfig)); } } diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java index 4ec7bc22..5d649800 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java @@ -4,8 +4,7 @@ import java.util.List; import org.itsallcode.openfasttrace.api.exporter.*; -import org.itsallcode.openfasttrace.core.serviceloader.InitializingServiceLoader; -import org.itsallcode.openfasttrace.core.serviceloader.Loader; +import org.itsallcode.openfasttrace.core.serviceloader.*; /** * This class is responsible for finding the matching {@link ExporterFactory} @@ -27,6 +26,21 @@ public ExporterFactoryLoader(final ExporterContext context) this(InitializingServiceLoader.load(ExporterFactory.class, context)); } + /** + * Create a new loader for the given context that uses the given service + * loader configuration. + * + * @param context + * the context for the new loader. + * @param config + * configuration for the service loader + */ + // [impl->dsn~plugins.loading.configuration~1] + public ExporterFactoryLoader(final ExporterContext context, final ServiceLoaderConfig config) + { + this(InitializingServiceLoader.load(ExporterFactory.class, context, config)); + } + ExporterFactoryLoader(final Loader serviceLoader) { this.serviceLoader = serviceLoader; @@ -49,14 +63,11 @@ public ExporterFactory getExporterFactory(final String outputFormat) final List matchingExporters = getMatchingFactories(outputFormat); return switch (matchingExporters.size()) { - case 0 -> - throw new ExporterException( - "Found no matching exporter for output format '" + outputFormat + "'"); - case 1 -> - matchingExporters.get(0); - default -> - throw new ExporterException("Found more than one matching exporter for output format '" - + outputFormat + "'"); + case 0 -> throw new ExporterException( + "Found no matching exporter for output format '" + outputFormat + "'"); + case 1 -> matchingExporters.get(0); + default -> throw new ExporterException("Found more than one matching exporter for output format '" + + outputFormat + "'"); }; } diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java index dda9cbc3..aacc5a60 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java @@ -1,15 +1,12 @@ package org.itsallcode.openfasttrace.core.importer; import java.nio.file.Path; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.logging.Logger; import org.itsallcode.openfasttrace.api.importer.*; import org.itsallcode.openfasttrace.api.importer.input.InputFile; -import org.itsallcode.openfasttrace.core.serviceloader.InitializingServiceLoader; -import org.itsallcode.openfasttrace.core.serviceloader.Loader; +import org.itsallcode.openfasttrace.core.serviceloader.*; /** * This class is responsible for finding the matching {@link ImporterFactory} @@ -43,6 +40,21 @@ public ImporterFactoryLoader(final ImporterContext context) this(InitializingServiceLoader.load(ImporterFactory.class, context)); } + /** + * Create a new loader for the given context that uses the given service + * loader configuration. + * + * @param context + * context for the new loader + * @param config + * configuration for the service loader + */ + // [impl->dsn~plugins.loading.configuration~1] + public ImporterFactoryLoader(final ImporterContext context, final ServiceLoaderConfig config) + { + this(InitializingServiceLoader.load(ImporterFactory.class, context, config)); + } + /** * Finds a matching {@link ImporterFactory} that can handle the given * {@link Path}. If no {@link ImporterFactory} is found, this throws an diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java index 41a32899..425bff9a 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java @@ -4,8 +4,7 @@ import org.itsallcode.openfasttrace.api.exporter.ExporterException; import org.itsallcode.openfasttrace.api.report.*; -import org.itsallcode.openfasttrace.core.serviceloader.InitializingServiceLoader; -import org.itsallcode.openfasttrace.core.serviceloader.Loader; +import org.itsallcode.openfasttrace.core.serviceloader.*; /** * This class is responsible for finding the matching {@link ReporterFactory} @@ -28,6 +27,22 @@ public ReporterFactoryLoader(final ReporterContext context) this(InitializingServiceLoader.load(ReporterFactory.class, context)); } + /** + * Create a new {@link ReporterFactoryLoader} that uses the given service + * loader configuration. + * + * @param context + * the context used for initializing new + * {@link ReporterFactory}s. + * @param config + * configuration for the service loader + */ + // [impl->dsn~plugins.loading.configuration~1] + public ReporterFactoryLoader(final ReporterContext context, final ServiceLoaderConfig config) + { + this(InitializingServiceLoader.load(ReporterFactory.class, context, config)); + } + private ReporterFactoryLoader(final Loader serviceLoader) { this.serviceLoader = serviceLoader; @@ -51,10 +66,10 @@ public ReporterFactory getReporterFactory(final String outputFormat) return switch (matchingReporters.size()) { case 0 -> throw new ExporterException( - "Found no matching reporter for output format '" + outputFormat + "'"); + "Found no matching reporter for output format '" + outputFormat + "'"); case 1 -> matchingReporters.get(0); default -> throw new ReportException("Found more than one matching reporter for output format '" - + outputFormat + "'"); + + outputFormat + "'"); }; } diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/InitializingServiceLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/InitializingServiceLoader.java index 805a3b49..87722476 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/InitializingServiceLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/InitializingServiceLoader.java @@ -44,7 +44,32 @@ public final class InitializingServiceLoader, C> impl public static , C> Loader load( final Class serviceType, final C context) { - final ServiceLoaderFactory loaderFactory = ServiceLoaderFactory.createDefault(); + return load(serviceType, context, ServiceLoaderConfig.createDefault()); + } + + /** + * Create a new {@link InitializingServiceLoader} using the given service + * loader configuration. + * + * @param + * service type. + * @param + * service context type. + * @param serviceType + * type of the services to load. + * @param context + * context with which to initialize the newly created service + * instances. + * @param config + * configuration for the service loader, e.g. additional plugins + * configured at runtime. + * @return an {@link InitializingServiceLoader} for type T + */ + // [impl->dsn~plugins.loading.configuration~1] + public static , C> Loader load( + final Class serviceType, final C context, final ServiceLoaderConfig config) + { + final ServiceLoaderFactory loaderFactory = new ServiceLoaderFactory(config); return new InitializingServiceLoader<>(loaderFactory.createLoader(serviceType), context); } diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java new file mode 100644 index 00000000..f80f484b --- /dev/null +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java @@ -0,0 +1,101 @@ +package org.itsallcode.openfasttrace.core.serviceloader; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.*; + +/** + * A plugin configured at runtime, consisting of a name and one or more JAR + * files. + *

+ * All JAR files of a plugin are loaded through a single separate ClassLoader. + * The JAR files may contain one or more service providers; OFT loads all of + * them. + */ +public final class Plugin +{ + private final String name; + private final List jars; + + private Plugin(final String name, final List jars) + { + this.name = name; + this.jars = jars; + } + + /** + * Create a new plugin. + * + * @param name + * name of the plugin, used for the ClassLoader name and logging + * @param jars + * paths to the JAR files that make up the plugin + * @return a new plugin + * @throws IllegalArgumentException + * if the name is {@code null} or blank, if no JAR is given, or + * if a path is {@code null} or does not point to an existing JAR + * file + */ + public static Plugin of(final String name, final Path... jars) + { + if (name == null || name.isBlank()) + { + throw new IllegalArgumentException("Plugin name must not be null or blank."); + } + if (jars == null || jars.length == 0) + { + throw new IllegalArgumentException("At least one plugin JAR must be given for plugin '" + name + "'."); + } + final List validatedJars = new ArrayList<>(jars.length); + for (final Path jar : jars) + { + validatedJars.add(validateJar(name, jar)); + } + return new Plugin(name, Collections.unmodifiableList(validatedJars)); + } + + private static Path validateJar(final String name, final Path jar) + { + if (jar == null) + { + throw new IllegalArgumentException("Plugin JAR path must not be null for plugin '" + name + "'."); + } + if (!Files.isRegularFile(jar)) + { + throw new IllegalArgumentException( + "Plugin JAR '" + jar + "' of plugin '" + name + "' does not exist or is not a file."); + } + if (!jar.getFileName().toString().toLowerCase(Locale.ENGLISH).endsWith(".jar")) + { + throw new IllegalArgumentException( + "Plugin file '" + jar + "' of plugin '" + name + "' is not a JAR file."); + } + return jar; + } + + /** + * Get the name of the plugin. + * + * @return the name of the plugin + */ + public String getName() + { + return this.name; + } + + /** + * Get the JAR files that make up the plugin. + * + * @return the JAR files that make up the plugin + */ + public List getJars() + { + return List.copyOf(this.jars); + } + + @Override + public String toString() + { + return "Plugin [name=" + this.name + ", jars=" + this.jars + "]"; + } +} diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderConfig.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderConfig.java new file mode 100644 index 00000000..e40a5097 --- /dev/null +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderConfig.java @@ -0,0 +1,177 @@ +package org.itsallcode.openfasttrace.core.serviceloader; + +import java.nio.file.Path; +import java.util.*; + +/** + * Configuration for the service loader. + *

+ * This object collects all settings that control how OFT discovers and loads + * services (importers, exporters, and reporters). It currently holds the plugin + * directory, whether the current class path is searched, and the plugins + * configured at runtime. Additional options can be added here in the future + * without changing the service loader API. + */ +public final class ServiceLoaderConfig +{ + private final Path pluginsDirectory; + private final boolean searchCurrentClasspath; + private final List plugins; + + private ServiceLoaderConfig(final Builder builder) + { + this.pluginsDirectory = builder.pluginsDirectory; + this.searchCurrentClasspath = builder.searchCurrentClasspath; + this.plugins = Collections.unmodifiableList(new ArrayList<>(builder.plugins)); + } + + /** + * Create the default configuration. + *

+ * The default configuration searches the current class path and the default + * plugin directory in the user's home and configures no additional plugins. + * + * @return the default configuration + */ + public static ServiceLoaderConfig createDefault() + { + return builder().build(); + } + + /** + * Create a builder for {@link ServiceLoaderConfig}. + * + * @return a new builder + */ + public static Builder builder() + { + return new Builder(); + } + + /** + * Create a builder initialized with the values of this configuration. + * + * @return a new builder + */ + public Builder toBuilder() + { + return new Builder() + .pluginsDirectory(this.pluginsDirectory) + .searchCurrentClasspath(this.searchCurrentClasspath) + .addPlugins(this.plugins); + } + + /** + * Get the directory that is searched for plugins. + * + * @return the plugin directory + */ + public Path getPluginsDirectory() + { + return this.pluginsDirectory; + } + + /** + * Check whether the current class path is searched for services. + * + * @return {@code true} if the current class path is searched + */ + public boolean isSearchCurrentClasspath() + { + return this.searchCurrentClasspath; + } + + /** + * Get the plugins configured at runtime. + * + * @return the configured plugins + */ + public List getPlugins() + { + return this.plugins; + } + + /** + * Builder for {@link ServiceLoaderConfig}. + */ + public static final class Builder + { + private Path pluginsDirectory = defaultPluginsDirectory(); + private boolean searchCurrentClasspath = true; + private final List plugins = new ArrayList<>(); + + private Builder() + { + // Prevent instantiation from outside this class. + } + + private static Path defaultPluginsDirectory() + { + return Path.of(System.getProperty("user.home")).resolve(".oft").resolve("plugins"); + } + + /** + * Set the directory that is searched for plugins. Default: the + * {@code .oft/plugins} directory in the user's home. + * + * @param pluginsDirectory + * the plugin directory + * @return {@code this} for fluent programming + */ + public Builder pluginsDirectory(final Path pluginsDirectory) + { + this.pluginsDirectory = Objects.requireNonNull(pluginsDirectory, "pluginsDirectory"); + return this; + } + + /** + * Set whether the current class path is searched for services. Default: + * {@code true}. + * + * @param searchCurrentClasspath + * {@code true} if the current class path should be searched + * @return {@code this} for fluent programming + */ + public Builder searchCurrentClasspath(final boolean searchCurrentClasspath) + { + this.searchCurrentClasspath = searchCurrentClasspath; + return this; + } + + /** + * Add a plugin configured at runtime. + * + * @param plugin + * the plugin to add + * @return {@code this} for fluent programming + */ + public Builder addPlugin(final Plugin plugin) + { + this.plugins.add(Objects.requireNonNull(plugin, "plugin")); + return this; + } + + /** + * Add plugins configured at runtime. + * + * @param plugins + * the plugins to add + * @return {@code this} for fluent programming + */ + public Builder addPlugins(final List plugins) + { + this.plugins.addAll(Objects.requireNonNull(plugins, "plugins")); + return this; + } + + /** + * Create a new {@link ServiceLoaderConfig}. + * + * @return a new configuration + */ + public ServiceLoaderConfig build() + { + return new ServiceLoaderConfig(this); + } + } +} diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactory.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactory.java index 559a03d1..d08ad3ab 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactory.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactory.java @@ -14,22 +14,17 @@ class ServiceLoaderFactory { private static final Logger LOGGER = Logger.getLogger(ServiceLoaderFactory.class.getName()); - private final Path pluginsDirectory; - private final boolean searchCurrentClasspath; + private final ServiceLoaderConfig config; /** * Create a new factory for service {@link Loader}. * - * @param pluginsDirectory - * directory to search for plugins - * @param searchCurrentClasspath - * whether to search the current classpath for plugins. This is - * useful for testing to avoid loading plugins twice. + * @param config + * configuration for the service loader */ - ServiceLoaderFactory(final Path pluginsDirectory, final boolean searchCurrentClasspath) + ServiceLoaderFactory(final ServiceLoaderConfig config) { - this.pluginsDirectory = pluginsDirectory; - this.searchCurrentClasspath = searchCurrentClasspath; + this.config = config; } /** @@ -39,13 +34,7 @@ class ServiceLoaderFactory */ static ServiceLoaderFactory createDefault() { - final Path pluginsDirectory = getHomeDirectory().resolve(".oft").resolve("plugins"); - return new ServiceLoaderFactory(pluginsDirectory, true); - } - - private static Path getHomeDirectory() - { - return Path.of(System.getProperty("user.home")); + return new ServiceLoaderFactory(ServiceLoaderConfig.createDefault()); } /** @@ -78,10 +67,12 @@ private static Loader createLoader(final Class serviceType, final List * @return a list of service origins */ // [impl->dsn~plugins.loading~1] + // [impl->dsn~plugins.loading.configuration~1] List findServiceOrigins() { final List origins = new ArrayList<>(findPluginOrigins()); - if (searchCurrentClasspath) + origins.addAll(findAdditionalPluginOrigins()); + if (this.config.isSearchCurrentClasspath()) { origins.add(ServiceOrigin.forCurrentClassPath()); } @@ -89,8 +80,16 @@ List findServiceOrigins() return origins; } + private Collection findAdditionalPluginOrigins() + { + return this.config.getPlugins().stream() + .map(plugin -> ServiceOrigin.forJars(plugin.getName(), plugin.getJars())) + .toList(); + } + private Collection findPluginOrigins() { + final Path pluginsDirectory = this.config.getPluginsDirectory(); if (!Files.isDirectory(pluginsDirectory)) { return Collections.emptyList(); @@ -108,7 +107,7 @@ private Collection findPluginOrigins() catch (final IOException exception) { throw new UncheckedIOException( - "Failed to list plugin directories in '" + this.pluginsDirectory + "': " + exception.getMessage(), + "Failed to list plugin directories in '" + pluginsDirectory + "': " + exception.getMessage(), exception); } } diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceOrigin.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceOrigin.java index cbe42107..798cae96 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceOrigin.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceOrigin.java @@ -52,14 +52,30 @@ static ServiceOrigin forJar(final Path jar) // [impl->dsn~plugins.loading.separate-classloader~1] static ServiceOrigin forJars(final List jars) { - return new JarFileOrigin(jars, createClassLoader(jars)); + return new JarFileOrigin(jars, createClassLoader(getClassLoaderName(jars), jars)); } - private static URLClassLoader createClassLoader(final List jars) + /** + * Create a service origin for a named plugin consisting of a list of JAR + * files. + * + * @param name + * name of the plugin, used for the ClassLoader name + * @param jars + * list of paths to JAR files + * @return a service origin for the JAR files + */ + // [impl->dsn~plugins.loading.configuration~1] + static ServiceOrigin forJars(final String name, final List jars) + { + return new JarFileOrigin(jars, createClassLoader("PluginClassLoader-" + name, jars)); + } + + private static URLClassLoader createClassLoader(final String name, final List jars) { final URL[] urls = jars.stream().map(ServiceOrigin::toUrl) .toArray(URL[]::new); - return new ChildFirstClassLoader(getClassLoaderName(jars), urls, getBaseClassLoader()); + return new ChildFirstClassLoader(name, urls, getBaseClassLoader()); } private static String getClassLoaderName(final List jars) diff --git a/core/src/test/java/org/itsallcode/openfasttrace/core/OftBuilderTest.java b/core/src/test/java/org/itsallcode/openfasttrace/core/OftBuilderTest.java new file mode 100644 index 00000000..c031565d --- /dev/null +++ b/core/src/test/java/org/itsallcode/openfasttrace/core/OftBuilderTest.java @@ -0,0 +1,49 @@ +package org.itsallcode.openfasttrace.core; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.notNullValue; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +// [utest->dsn~plugins.loading.configuration~1] +class OftBuilderTest +{ + @TempDir + Path tempDir; + + @Test + void buildCreatesOft() throws IOException + { + final Path jar = createJar("plugin.jar"); + final Oft oft = Oft.builder().addPlugin("my-plugin", jar).build(); + assertThat(oft, instanceOf(OftRunner.class)); + } + + @Test + void buildWithoutPluginsCreatesOft() + { + assertThat(Oft.builder().build(), notNullValue()); + } + + @Test + void addPluginRejectsInvalidJar() + { + final Path missing = tempDir.resolve("missing.jar"); + final OftBuilder builder = Oft.builder(); + assertThrows(IllegalArgumentException.class, () -> builder.addPlugin("my-plugin", missing)); + } + + private Path createJar(final String fileName) throws IOException + { + final Path jar = tempDir.resolve(fileName); + Files.createFile(jar); + return jar; + } +} diff --git a/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/PluginTest.java b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/PluginTest.java new file mode 100644 index 00000000..61e607cc --- /dev/null +++ b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/PluginTest.java @@ -0,0 +1,104 @@ +package org.itsallcode.openfasttrace.core.serviceloader; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.jupiter.api.Assertions.assertAll; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +// [utest->dsn~plugins.loading.configuration~1] +class PluginTest +{ + @TempDir + Path tempDir; + + @Test + void ofCreatesPluginWithNameAndJars() throws IOException + { + final Path jar = createJar("plugin.jar"); + final Plugin plugin = Plugin.of("my-plugin", jar); + assertAll( + () -> assertThat(plugin.getName(), equalTo("my-plugin")), + () -> assertThat(plugin.getJars(), contains(jar))); + } + + @Test + void ofSupportsMultipleJars() throws IOException + { + final Path jar1 = createJar("plugin.jar"); + final Path jar2 = createJar("dependency.jar"); + final Plugin plugin = Plugin.of("my-plugin", jar1, jar2); + assertThat(plugin.getJars(), contains(jar1, jar2)); + } + + @Test + void ofRejectsNullName() throws IOException + { + final Path jar = createJar("plugin.jar"); + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, + () -> Plugin.of(null, jar)); + assertThat(exception.getMessage(), equalTo("Plugin name must not be null or blank.")); + } + + @Test + void ofRejectsBlankName() throws IOException + { + final Path jar = createJar("plugin.jar"); + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, + () -> Plugin.of(" ", jar)); + assertThat(exception.getMessage(), equalTo("Plugin name must not be null or blank.")); + } + + @Test + void ofRejectsEmptyJarList() + { + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, + () -> Plugin.of("my-plugin")); + assertThat(exception.getMessage(), + equalTo("At least one plugin JAR must be given for plugin 'my-plugin'.")); + } + + @Test + void ofRejectsNullJar() + { + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, + () -> Plugin.of("my-plugin", (Path) null)); + assertThat(exception.getMessage(), + equalTo("Plugin JAR path must not be null for plugin 'my-plugin'.")); + } + + @Test + void ofRejectsMissingJar() + { + final Path missing = tempDir.resolve("missing.jar"); + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, + () -> Plugin.of("my-plugin", missing)); + assertThat(exception.getMessage(), + equalTo("Plugin JAR '" + missing + "' of plugin 'my-plugin' does not exist or is not a file.")); + } + + @Test + void ofRejectsNonJarFile() throws IOException + { + final Path file = tempDir.resolve("plugin.txt"); + Files.createFile(file); + final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, + () -> Plugin.of("my-plugin", file)); + assertThat(exception.getMessage(), + equalTo("Plugin file '" + file + "' of plugin 'my-plugin' is not a JAR file.")); + } + + private Path createJar(final String fileName) throws IOException + { + final Path jar = tempDir.resolve(fileName); + Files.createFile(jar); + return jar; + } +} diff --git a/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java index 2741e34d..6800f0af 100644 --- a/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java +++ b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java @@ -28,14 +28,22 @@ void noPluginJar() private ServiceLoaderFactory factory() { - return new ServiceLoaderFactory(tempDir, true); + return new ServiceLoaderFactory(config(tempDir, true)); + } + + private static ServiceLoaderConfig config(final Path pluginsDirectory, final boolean searchCurrentClasspath) + { + return ServiceLoaderConfig.builder() + .pluginsDirectory(pluginsDirectory) + .searchCurrentClasspath(searchCurrentClasspath) + .build(); } @Test void findServiceSkipCurrentClassLoader() { final Path missingDirectory = tempDir.resolve("missing-dir"); - assertThat(new ServiceLoaderFactory(missingDirectory, false).findServiceOrigins(), empty()); + assertThat(new ServiceLoaderFactory(config(missingDirectory, false)).findServiceOrigins(), empty()); } @Test @@ -128,4 +136,74 @@ void findServiceOriginsMultiPlugins() throws IOException () -> assertThat(origins.get(1).getClassLoader().getName(), equalTo("JarClassLoader-plugin2.jar"))); } + + // [utest->dsn~plugins.loading.configuration~1] + @Test + void findServiceOriginsConfiguredPlugin() throws IOException + { + final Path jar = createJar("configured.jar"); + final ServiceLoaderFactory factory = new ServiceLoaderFactory( + config(tempDir, true).toBuilder().addPlugin(Plugin.of("my-plugin", jar)).build()); + final List origins = factory.findServiceOrigins(); + assertAll(() -> assertThat(origins, hasSize(2)), + () -> assertThat(origins.get(0).getClassLoader().getName(), + equalTo("PluginClassLoader-my-plugin"))); + } + + // [utest->dsn~plugins.loading.configuration~1] + @Test + void findServiceOriginsConfiguredPluginWithMultipleJars() throws IOException + { + final Path jar1 = createJar("plugin.jar"); + final Path jar2 = createJar("dependency.jar"); + final ServiceLoaderFactory factory = new ServiceLoaderFactory( + config(tempDir, true).toBuilder().addPlugin(Plugin.of("my-plugin", jar1, jar2)).build()); + final List origins = factory.findServiceOrigins(); + assertAll(() -> assertThat(origins, hasSize(2)), + () -> assertThat(origins.get(0).getClassLoader().getName(), + equalTo("PluginClassLoader-my-plugin"))); + } + + // [utest->dsn~plugins.loading.configuration~1] + @Test + void findServiceOriginsMultipleConfiguredPlugins() throws IOException + { + final Path jar1 = createJar("plugin1.jar"); + final Path jar2 = createJar("plugin2.jar"); + final ServiceLoaderFactory factory = new ServiceLoaderFactory(config(tempDir, true).toBuilder() + .addPlugin(Plugin.of("plugin-one", jar1)) + .addPlugin(Plugin.of("plugin-two", jar2)) + .build()); + final List origins = factory.findServiceOrigins(); + assertAll(() -> assertThat(origins, hasSize(3)), + () -> assertThat(origins.get(0).getClassLoader().getName(), + equalTo("PluginClassLoader-plugin-one")), + () -> assertThat(origins.get(1).getClassLoader().getName(), + equalTo("PluginClassLoader-plugin-two"))); + } + + // [utest->dsn~plugins.loading.configuration~1] + @Test + void findServiceOriginsConfiguredPluginsAppendedAfterPluginDirectory() throws IOException + { + final Path pluginDir = tempDir.resolve("plugin1"); + Files.createDirectories(pluginDir); + Files.createFile(pluginDir.resolve("plugin1.jar")); + final Path configuredJar = createJar("configured.jar"); + final ServiceLoaderFactory factory = new ServiceLoaderFactory( + config(tempDir, true).toBuilder().addPlugin(Plugin.of("configured", configuredJar)).build()); + final List origins = factory.findServiceOrigins(); + assertAll(() -> assertThat(origins, hasSize(3)), + () -> assertThat(origins.get(0).getClassLoader().getName(), + equalTo("JarClassLoader-plugin1.jar")), + () -> assertThat(origins.get(1).getClassLoader().getName(), + equalTo("PluginClassLoader-configured"))); + } + + private Path createJar(final String fileName) throws IOException + { + final Path jar = tempDir.resolve(fileName); + Files.createFile(jar); + return jar; + } } diff --git a/doc/changes/changes.md b/doc/changes/changes.md index 551a5157..64a86421 100644 --- a/doc/changes/changes.md +++ b/doc/changes/changes.md @@ -6,6 +6,7 @@ nav_order: 8 # Changes +* [4.11.0](changes_4.11.0.md) * [4.10.0](changes_4.10.0.md) * [4.9.0](changes_4.9.0.md) * [4.8.0](changes_4.8.0.md) diff --git a/doc/changes/changes_4.11.0.md b/doc/changes/changes_4.11.0.md new file mode 100644 index 00000000..304ca287 --- /dev/null +++ b/doc/changes/changes_4.11.0.md @@ -0,0 +1,13 @@ +# OpenFastTrace 4.11.0, released 2026-XX-XX + +Code name: Configurable Plugins + +## Summary + +OFT now allows embedders to pass plugin JARs to OFT at runtime through the Java API, so plugins +resolved through an external dependency mechanism no longer need to be installed in the +predefined plugin directory. + +## Feature + +* #610: Allow adding plugins via configuration using `Oft.builder().addPlugin(name, jars...)` diff --git a/doc/changesets/610-allow-adding-plugins-via-configuration.md b/doc/changesets/610-allow-adding-plugins-via-configuration.md index eaa5cf96..d68170b0 100644 --- a/doc/changesets/610-allow-adding-plugins-via-configuration.md +++ b/doc/changesets/610-allow-adding-plugins-via-configuration.md @@ -20,10 +20,15 @@ reporting. In scope: -* A public builder API in `core` to configure plugin JARs: `Oft.builder().addPlugin(...).build()`. -* Support for **multiple JARs per plugin**: each `addPlugin(Path... jars)` call forms one - plugin loaded through a single `ChildFirstClassLoader`, matching the existing +* A public builder API in `core` to configure plugin JARs: `Oft.builder().addPlugin(name, jars...).build()`. +* Support for **multiple JARs per plugin**: each `addPlugin(String name, Path... jars)` call forms + one named plugin loaded through a single `ChildFirstClassLoader`, matching the existing `$HOME/.oft/plugins//*.jar` semantics. +* Support for **multiple plugins in one configured plugin**: a plugin's JARs may contain several + service providers, and OFT loads all of them. +* A `ServiceLoaderConfig` object that collects the service loader settings (plugin directory, + class path search, configured plugins) so the service loader API stays stable when new options + are added. * Explicitly configured plugins are loaded **in addition to** the default plugin directory. * Built-in providers continue to load from the current class path, so configuring a plugin no longer makes built-in importers/exporters/reporters disappear. @@ -49,17 +54,17 @@ Keep the existing plugin-loading internals (`ServiceLoaderFactory`, `ServiceOrig hide them behind the package-private boundary. Thread the configured plugin groups from the public facade down to the three factory loaders: -1. `OftBuilder` (new, public, in `core`) collects plugin groups as `List>` and - builds an `OftRunner` backed by a `ServiceFactory` that carries the groups. -2. `ServiceFactory` passes the groups to `ImporterFactoryLoader`, `ExporterFactoryLoader`, - and `ReporterFactoryLoader`. -3. Those loaders call a new public `InitializingServiceLoader.load(Class, C, List>)` - overload, which builds a `ServiceLoaderFactory` that appends one `ServiceOrigin.forJars(group)` +1. `OftBuilder` (new, public, in `core`) collects named plugins and builds an `OftRunner` + backed by a `ServiceFactory` that carries a `ServiceLoaderConfig`. +2. `ServiceFactory` passes the `ServiceLoaderConfig` to `ImporterFactoryLoader`, + `ExporterFactoryLoader`, and `ReporterFactoryLoader`. +3. Those loaders call a new public `InitializingServiceLoader.load(Class, C, ServiceLoaderConfig)` + overload, which builds a `ServiceLoaderFactory` that appends one `ServiceOrigin.forJars(name, jars)` per configured plugin after the default-directory origins. `Oft.create()` remains for backward compatibility and delegates to the builder with no -configured plugins. Validation of configured paths happens in `OftBuilder.addPlugin(...)` -so invalid input is rejected at the API boundary. +configured plugins. Validation of configured paths happens in `Plugin.of(...)` so invalid input +is rejected at the API boundary. ## Task List @@ -78,25 +83,32 @@ so invalid input is rejected at the API boundary. ### Implementation -- [ ] Add public `OftBuilder` in `core` with `addPlugin(Path... jars)` (reject null/empty - groups and non-existent or non-`.jar` paths with `IllegalArgumentException`) and `build()` +- [ ] Add public `Plugin` type in `core` with `Plugin.of(String name, Path... jars)` (reject + null/blank name, empty JAR list, and non-existent or non-`.jar` paths with + `IllegalArgumentException`) +- [ ] Add public `ServiceLoaderConfig` in `core` collecting the plugin directory, class path + search flag, and configured plugins, with a builder and `toBuilder()` +- [ ] Add public `OftBuilder` in `core` with `addPlugin(String name, Path... jars)` and `build()` - [ ] Add `Oft.builder()` returning `OftBuilder`; keep `Oft.create()` delegating to the builder -- [ ] Extend `ServiceLoaderFactory` to accept additional plugin groups and append one - `ServiceOrigin.forJars(group)` per group in `findServiceOrigins()` -- [ ] Add public `InitializingServiceLoader.load(Class, C, List>)` overload +- [ ] Refactor `ServiceLoaderFactory` to consume `ServiceLoaderConfig` and append one + `ServiceOrigin.forJars(name, jars)` per configured plugin in `findServiceOrigins()` +- [ ] Add public `InitializingServiceLoader.load(Class, C, ServiceLoaderConfig)` overload - [ ] Add constructor overloads to `ImporterFactoryLoader`, `ExporterFactoryLoader`, and - `ReporterFactoryLoader` that accept plugin groups -- [ ] Add `ServiceFactory(List> plugins)` constructor and keep the no-arg constructor + `ReporterFactoryLoader` that accept a `ServiceLoaderConfig` +- [ ] Add `ServiceFactory(ServiceLoaderConfig)` constructor and keep the no-arg constructor for `Oft.create()` ### Verification -- [ ] `ServiceLoaderFactoryTest`: grouped JARs produce a single origin; configured origins are - appended after default-directory origins -- [ ] `InitializingServiceLoaderTest`: the new overload forwards configured plugin groups -- [ ] New `OftBuilderTest`: parameter validation (null, empty, missing, non-JAR) and build wiring +- [ ] `ServiceLoaderFactoryTest`: configured plugin produces a named origin; multiple JARs in + one plugin share one origin; multiple configured plugins produce multiple origins; + configured origins are appended after default-directory origins +- [ ] `InitializingServiceLoaderTest`: the new overload forwards the service loader configuration +- [ ] New `PluginTest`: parameter validation (null/blank name, empty, missing, non-JAR) +- [ ] New `OftBuilderTest`: build wiring - [ ] `ServiceLoaderFactoryIT` (product): load a real plugin JAR from a configured path and - assert the plugin loads while built-in reporters remain available + assert the plugin loads while built-in reporters remain available; load two plugins from + one `addPlugin(...)` call and assert both are loaded - [ ] Keep the OpenFastTrace trace clean (`./oft-self-trace.sh`) - [ ] Keep required build and plugin verification tasks green (`mvn -T 1C verify`) diff --git a/doc/plugins.md b/doc/plugins.md index d8347773..6cb0f988 100644 --- a/doc/plugins.md +++ b/doc/plugins.md @@ -20,6 +20,23 @@ To install a plugin, copy the plugin's JAR file to the following directory depen After copying the JAR file, the plugin will be available the next time you run OFT. +## Configuring Plugins From Java + +When you embed OFT in your own application and resolve plugins through your own dependency +mechanism, you can pass plugin JARs to OFT at runtime instead of installing them in the +predefined directory: + +```java +final Oft oft = Oft.builder() + .addPlugin("my-plugin", Path.of("my-plugin.jar")) + .build(); +``` + +Each `addPlugin(name, jars...)` call defines one named plugin. All JARs passed in one call are +loaded through the same separate ClassLoader, so a plugin can be passed together with its +dependencies. A plugin's JARs may contain multiple service providers; OFT loads all of them. +Configured plugins are loaded in addition to the plugins from the predefined directory. + ## Developing Plugins If you want to develop your own plugins for OFT, please refer to the [Plugin Developer Guide](developer_guide/plugin_developer_guide.md). diff --git a/doc/spec/design.md b/doc/spec/design.md index fb134d2e..d0bdcfe1 100644 --- a/doc/spec/design.md +++ b/doc/spec/design.md @@ -192,6 +192,39 @@ Covers: Needs: impl, utest, itest +### Configuring Plugins Programmatically +`dsn~plugins.loading.configuration~1` + +API users configure additional plugins via `Oft.builder().addPlugin(String name, Path... jars).build()`. + +Each `addPlugin(...)` call defines one named plugin consisting of one or more JAR files. OFT +loads each configured plugin through a single separate ClassLoader, matching the semantics of +a plugin directory under `$HOME/.oft/plugins//`. A plugin's JAR files may contain +one or more service providers; OFT loads all of them. + +The plugin configuration is collected in a `ServiceLoaderConfig` object that is passed to the +service loader. This object also holds the other service loader settings (the plugin directory +and whether the current class path is searched), so that additional options can be added +without changing the service loader API. + +Configured plugins are loaded in addition to the plugins discovered from the default +locations. Plugins included with OFT are still loaded from the current ClassPath, so +configuring a plugin does not remove the built-in importers, exporters, and reporters. + +Rationale: + +* Embedders that resolve plugins through their own dependency mechanism cannot install them + in the predefined directory. +* Grouping JARs per plugin preserves the class loader isolation between plugins. +* A dedicated configuration object keeps the service loader API stable when new options are + added. + +Covers: + +* [`req~plugins.loading.configuration~1`](system_requirements.md#configuring-plugins-programmatically) + +Needs: impl, utest, itest + ### Plugin Loader Uses Separate ClassLoaders `dsn~plugins.loading.separate-classloader~1` diff --git a/doc/spec/system_requirements.md b/doc/spec/system_requirements.md index 6d96d0d3..22363809 100644 --- a/doc/spec/system_requirements.md +++ b/doc/spec/system_requirements.md @@ -1102,6 +1102,26 @@ Covers: Needs: dsn +#### Configuring Plugins Programmatically +`req~plugins.loading.configuration~1` + +Embedders using the OFT Java API can pass named plugins to OFT at runtime instead of relying +on the predefined plugin installation directory. A plugin consists of a name and one or more +JAR files. + +Rationale: + +* Embedders that resolve plugins through their own dependency mechanism (e.g. a build tool + plugin) cannot install them in the predefined directory. +* A public API avoids fragile workarounds such as replacing the thread context class loader. +* A plugin may consist of multiple JARs, so the API must allow grouping JARs into one plugin. +* A plugin's JARs may contain multiple service providers that OFT must all load. + +Covers: +* [feat~plugins~1](#third-party-plugins) + +Needs: dsn + #### Supported Plugin Types `req~plugins.types~1` diff --git a/doc/user_guide/oft_api/using_oft_from_java.md b/doc/user_guide/oft_api/using_oft_from_java.md index 7ba32a67..0162a79a 100644 --- a/doc/user_guide/oft_api/using_oft_from_java.md +++ b/doc/user_guide/oft_api/using_oft_from_java.md @@ -119,6 +119,32 @@ Import, export and report each have an overloaded variant that can be configured * [org.itsallcode.openfasttrace.core.ExportSettings](../../../core/src/main/java/org/itsallcode/openfasttrace/core/ExportSettings.java) * [org.itsallcode.openfasttrace.api.ReportSettings](../../../api/src/main/java/org/itsallcode/openfasttrace/api/ReportSettings.java) +#### Adding Plugins From Java + +By default OFT loads plugins from the predefined plugin directory (see [Plugins](../../plugins.md)). +When you embed OFT and resolve plugins through your own dependency mechanism, you can pass +plugin JARs to OFT at runtime using the `Oft` builder: + +```java +final Oft oft = Oft.builder() + .addPlugin("my-plugin", Path.of("path/to/my-plugin.jar")) + .build(); +``` + +Each `addPlugin(name, jars...)` call defines one named plugin. All JARs passed in one call are +loaded through the same separate ClassLoader, so you can pass a plugin together with its +dependencies: + +```java +final Oft oft = Oft.builder() + .addPlugin("my-plugin", Path.of("my-plugin.jar"), Path.of("my-plugin-dependency.jar")) + .build(); +``` + +A plugin's JARs may contain multiple service providers (importers, exporters, reporters); OFT +loads all of them. Configured plugins are loaded in addition to the plugins from the default +plugin directory, and the built-in importers, exporters, and reporters remain available. + Each of those classes comes with a builder which is called like this: ```java diff --git a/parent/pom.xml b/parent/pom.xml index 7d24d1f8..e607e788 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -9,7 +9,7 @@ pom https://github.com/itsallcode/openfasttrace - 4.10.0 + 4.11.0 17 6.1.0-M1 6.1.3 diff --git a/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryIT.java b/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryIT.java index 5fcad73f..037e359a 100644 --- a/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryIT.java +++ b/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryIT.java @@ -17,6 +17,8 @@ import org.junit.jupiter.api.io.TempDir; import org.opentest4j.TestAbortedException; +import net.bytebuddy.build.Plugin; + /** * Test for {@link ServiceLoaderFactory} from module {@code core}. This test * must be located in module {@code product} (which includes all plugin modules) @@ -42,7 +44,46 @@ void loadServiceFromWrongJar() throws IOException private Loader createLoader() { - return new ServiceLoaderFactory(tempDir, false).createLoader(ReporterFactory.class); + return new ServiceLoaderFactory(ServiceLoaderConfig.builder() + .pluginsDirectory(tempDir) + .searchCurrentClasspath(false) + .build()).createLoader(ReporterFactory.class); + } + + // [itest->dsn~plugins.loading.configuration~1] + @Test + void loadMultiplePluginsFromOneConfiguredPlugin() throws IOException + { + final Path plaintextJar = findPluginJar(Path.of("../reporter/plaintext/target"), + Pattern.compile("openfasttrace-reporter-plaintext-\\d+\\.\\d+\\.\\d+\\.jar")); + final Path htmlJar = findPluginJar(Path.of("../reporter/html/target"), + Pattern.compile("openfasttrace-reporter-html-\\d+\\.\\d+\\.\\d+\\.jar")); + final ServiceLoaderConfig config = ServiceLoaderConfig.builder() + .pluginsDirectory(tempDir) + .searchCurrentClasspath(false) + .addPlugin(Plugin.of("reporters", plaintextJar, htmlJar)) + .build(); + try (Loader loader = new ServiceLoaderFactory(config).createLoader(ReporterFactory.class)) + { + final List services = loader.load().toList(); + final List serviceClassNames = services.stream() + .map(service -> service.getClass().getName()) + .toList(); + assertAll( + () -> assertThat(services, hasSize(2)), + () -> assertThat(serviceClassNames, hasItem( + "org.itsallcode.openfasttrace.report.plaintext.PlaintextReporterFactory")), + () -> assertThat(serviceClassNames, hasItem( + "org.itsallcode.openfasttrace.report.html.HtmlReporterFactory"))); + } + } + + private Path findPluginJar(final Path targetDir, final Pattern filePattern) throws IOException + { + return findMatchingFile(targetDir, filePattern) + .orElseThrow(() -> new AssertionError( + "Did not find file matching '" + filePattern + "' in '" + targetDir + + "'. Ensure the module was built with 'mvn package'.")); } @Test @@ -77,7 +118,8 @@ private void preparePlugin(final Path targetDir, final Pattern filePattern) thro private Optional findMatchingFile(final Path dir, final Pattern filePattern) throws IOException { - try(final Stream files = Files.list(dir)) { + try (final Stream files = Files.list(dir)) + { return files.filter(file -> filePattern.matcher(file.getFileName().toString()).matches()) .findFirst(); } From 1a7a3472214ec257aedbe655944e00b118ac31e1 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Sat, 26 Sep 2026 15:14:30 +0200 Subject: [PATCH 03/15] Configure formatting of switch --- .settings/org.eclipse.jdt.core.prefs | 3 ++- api/.settings/org.eclipse.jdt.core.prefs | 3 ++- core/.settings/org.eclipse.jdt.core.prefs | 3 ++- exporter/common/.settings/org.eclipse.jdt.core.prefs | 3 ++- exporter/specobject/.settings/org.eclipse.jdt.core.prefs | 3 ++- importer/gherkin/.settings/org.eclipse.jdt.core.prefs | 3 ++- .../lightweightmarkup/.settings/org.eclipse.jdt.core.prefs | 3 ++- importer/markdown/.settings/org.eclipse.jdt.core.prefs | 3 ++- importer/restructuredtext/.settings/org.eclipse.jdt.core.prefs | 3 ++- importer/specobject/.settings/org.eclipse.jdt.core.prefs | 3 ++- .../tag-importer-common/.settings/org.eclipse.jdt.core.prefs | 3 ++- importer/tag/.settings/org.eclipse.jdt.core.prefs | 3 ++- importer/xmlparser/.settings/org.eclipse.jdt.core.prefs | 3 ++- importer/zip/.settings/org.eclipse.jdt.core.prefs | 3 ++- product/.settings/org.eclipse.jdt.core.prefs | 3 ++- reporter/aspec/.settings/org.eclipse.jdt.core.prefs | 3 ++- reporter/html/.settings/org.eclipse.jdt.core.prefs | 3 ++- reporter/plaintext/.settings/org.eclipse.jdt.core.prefs | 3 ++- testutil/.settings/org.eclipse.jdt.core.prefs | 3 ++- 19 files changed, 38 insertions(+), 19 deletions(-) diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 62b33c4c..70978995 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -235,7 +235,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -243,6 +243,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/api/.settings/org.eclipse.jdt.core.prefs b/api/.settings/org.eclipse.jdt.core.prefs index 8add83f7..974b88fd 100644 --- a/api/.settings/org.eclipse.jdt.core.prefs +++ b/api/.settings/org.eclipse.jdt.core.prefs @@ -259,7 +259,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -267,6 +267,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/core/.settings/org.eclipse.jdt.core.prefs b/core/.settings/org.eclipse.jdt.core.prefs index bfbe0900..6f26e907 100644 --- a/core/.settings/org.eclipse.jdt.core.prefs +++ b/core/.settings/org.eclipse.jdt.core.prefs @@ -249,7 +249,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -257,6 +257,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/exporter/common/.settings/org.eclipse.jdt.core.prefs b/exporter/common/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/exporter/common/.settings/org.eclipse.jdt.core.prefs +++ b/exporter/common/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/exporter/specobject/.settings/org.eclipse.jdt.core.prefs b/exporter/specobject/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/exporter/specobject/.settings/org.eclipse.jdt.core.prefs +++ b/exporter/specobject/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/importer/gherkin/.settings/org.eclipse.jdt.core.prefs b/importer/gherkin/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/importer/gherkin/.settings/org.eclipse.jdt.core.prefs +++ b/importer/gherkin/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/importer/lightweightmarkup/.settings/org.eclipse.jdt.core.prefs b/importer/lightweightmarkup/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/importer/lightweightmarkup/.settings/org.eclipse.jdt.core.prefs +++ b/importer/lightweightmarkup/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/importer/markdown/.settings/org.eclipse.jdt.core.prefs b/importer/markdown/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/importer/markdown/.settings/org.eclipse.jdt.core.prefs +++ b/importer/markdown/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/importer/restructuredtext/.settings/org.eclipse.jdt.core.prefs b/importer/restructuredtext/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/importer/restructuredtext/.settings/org.eclipse.jdt.core.prefs +++ b/importer/restructuredtext/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/importer/specobject/.settings/org.eclipse.jdt.core.prefs b/importer/specobject/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/importer/specobject/.settings/org.eclipse.jdt.core.prefs +++ b/importer/specobject/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/importer/tag-importer-common/.settings/org.eclipse.jdt.core.prefs b/importer/tag-importer-common/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/importer/tag-importer-common/.settings/org.eclipse.jdt.core.prefs +++ b/importer/tag-importer-common/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/importer/tag/.settings/org.eclipse.jdt.core.prefs b/importer/tag/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/importer/tag/.settings/org.eclipse.jdt.core.prefs +++ b/importer/tag/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/importer/xmlparser/.settings/org.eclipse.jdt.core.prefs b/importer/xmlparser/.settings/org.eclipse.jdt.core.prefs index 8add83f7..974b88fd 100644 --- a/importer/xmlparser/.settings/org.eclipse.jdt.core.prefs +++ b/importer/xmlparser/.settings/org.eclipse.jdt.core.prefs @@ -259,7 +259,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -267,6 +267,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/importer/zip/.settings/org.eclipse.jdt.core.prefs b/importer/zip/.settings/org.eclipse.jdt.core.prefs index d209b54c..d9c635a3 100644 --- a/importer/zip/.settings/org.eclipse.jdt.core.prefs +++ b/importer/zip/.settings/org.eclipse.jdt.core.prefs @@ -158,7 +158,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -166,6 +166,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/product/.settings/org.eclipse.jdt.core.prefs b/product/.settings/org.eclipse.jdt.core.prefs index 7c61bbcb..3d2285dd 100644 --- a/product/.settings/org.eclipse.jdt.core.prefs +++ b/product/.settings/org.eclipse.jdt.core.prefs @@ -257,7 +257,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -265,6 +265,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/reporter/aspec/.settings/org.eclipse.jdt.core.prefs b/reporter/aspec/.settings/org.eclipse.jdt.core.prefs index bfbe0900..6f26e907 100644 --- a/reporter/aspec/.settings/org.eclipse.jdt.core.prefs +++ b/reporter/aspec/.settings/org.eclipse.jdt.core.prefs @@ -249,7 +249,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -257,6 +257,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/reporter/html/.settings/org.eclipse.jdt.core.prefs b/reporter/html/.settings/org.eclipse.jdt.core.prefs index bfbe0900..6f26e907 100644 --- a/reporter/html/.settings/org.eclipse.jdt.core.prefs +++ b/reporter/html/.settings/org.eclipse.jdt.core.prefs @@ -249,7 +249,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -257,6 +257,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/reporter/plaintext/.settings/org.eclipse.jdt.core.prefs b/reporter/plaintext/.settings/org.eclipse.jdt.core.prefs index c033839c..d7f2f955 100644 --- a/reporter/plaintext/.settings/org.eclipse.jdt.core.prefs +++ b/reporter/plaintext/.settings/org.eclipse.jdt.core.prefs @@ -150,7 +150,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -158,6 +158,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert diff --git a/testutil/.settings/org.eclipse.jdt.core.prefs b/testutil/.settings/org.eclipse.jdt.core.prefs index e0ea780f..1e0eb0bb 100644 --- a/testutil/.settings/org.eclipse.jdt.core.prefs +++ b/testutil/.settings/org.eclipse.jdt.core.prefs @@ -249,7 +249,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -257,6 +257,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variabl org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_record_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert From 4cbb6478531d75b49bb028479d031b31384aea6d Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Sat, 26 Sep 2026 15:18:50 +0200 Subject: [PATCH 04/15] Remove unused code cleanup settings --- .settings/org.eclipse.jdt.ui.prefs | 58 -------- api/.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ core/.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../common/.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../tag/.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../zip/.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ product/.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../aspec/.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../html/.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ testutil/.settings/org.eclipse.jdt.ui.prefs | 139 ------------------ 19 files changed, 2560 deletions(-) diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs index 9bca002f..d8d3c44b 100644 --- a/.settings/org.eclipse.jdt.ui.prefs +++ b/.settings/org.eclipse.jdt.ui.prefs @@ -65,61 +65,3 @@ org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=true -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=true -sp_cleanup.correct_indentation=true -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=true -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_type_arguments=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=false -sp_cleanup.remove_trailing_whitespaces_ignore_empty=true -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=true -sp_cleanup.remove_unused_imports=true -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=true -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_type_arguments=false diff --git a/api/.settings/org.eclipse.jdt.ui.prefs b/api/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/api/.settings/org.eclipse.jdt.ui.prefs +++ b/api/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/core/.settings/org.eclipse.jdt.ui.prefs b/core/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/core/.settings/org.eclipse.jdt.ui.prefs +++ b/core/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/exporter/common/.settings/org.eclipse.jdt.ui.prefs b/exporter/common/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/exporter/common/.settings/org.eclipse.jdt.ui.prefs +++ b/exporter/common/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/exporter/specobject/.settings/org.eclipse.jdt.ui.prefs b/exporter/specobject/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/exporter/specobject/.settings/org.eclipse.jdt.ui.prefs +++ b/exporter/specobject/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/importer/gherkin/.settings/org.eclipse.jdt.ui.prefs b/importer/gherkin/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/importer/gherkin/.settings/org.eclipse.jdt.ui.prefs +++ b/importer/gherkin/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/importer/lightweightmarkup/.settings/org.eclipse.jdt.ui.prefs b/importer/lightweightmarkup/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/importer/lightweightmarkup/.settings/org.eclipse.jdt.ui.prefs +++ b/importer/lightweightmarkup/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/importer/markdown/.settings/org.eclipse.jdt.ui.prefs b/importer/markdown/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/importer/markdown/.settings/org.eclipse.jdt.ui.prefs +++ b/importer/markdown/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/importer/restructuredtext/.settings/org.eclipse.jdt.ui.prefs b/importer/restructuredtext/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/importer/restructuredtext/.settings/org.eclipse.jdt.ui.prefs +++ b/importer/restructuredtext/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/importer/specobject/.settings/org.eclipse.jdt.ui.prefs b/importer/specobject/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/importer/specobject/.settings/org.eclipse.jdt.ui.prefs +++ b/importer/specobject/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/importer/tag-importer-common/.settings/org.eclipse.jdt.ui.prefs b/importer/tag-importer-common/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/importer/tag-importer-common/.settings/org.eclipse.jdt.ui.prefs +++ b/importer/tag-importer-common/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/importer/tag/.settings/org.eclipse.jdt.ui.prefs b/importer/tag/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/importer/tag/.settings/org.eclipse.jdt.ui.prefs +++ b/importer/tag/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/importer/xmlparser/.settings/org.eclipse.jdt.ui.prefs b/importer/xmlparser/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/importer/xmlparser/.settings/org.eclipse.jdt.ui.prefs +++ b/importer/xmlparser/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/importer/zip/.settings/org.eclipse.jdt.ui.prefs b/importer/zip/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/importer/zip/.settings/org.eclipse.jdt.ui.prefs +++ b/importer/zip/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/product/.settings/org.eclipse.jdt.ui.prefs b/product/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/product/.settings/org.eclipse.jdt.ui.prefs +++ b/product/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/reporter/aspec/.settings/org.eclipse.jdt.ui.prefs b/reporter/aspec/.settings/org.eclipse.jdt.ui.prefs index 8f5db901..2dc86ae5 100644 --- a/reporter/aspec/.settings/org.eclipse.jdt.ui.prefs +++ b/reporter/aspec/.settings/org.eclipse.jdt.ui.prefs @@ -1,147 +1,8 @@ cleanup_settings_version=2 eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/reporter/html/.settings/org.eclipse.jdt.ui.prefs b/reporter/html/.settings/org.eclipse.jdt.ui.prefs index 8f5db901..2dc86ae5 100644 --- a/reporter/html/.settings/org.eclipse.jdt.ui.prefs +++ b/reporter/html/.settings/org.eclipse.jdt.ui.prefs @@ -1,147 +1,8 @@ cleanup_settings_version=2 eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/reporter/plaintext/.settings/org.eclipse.jdt.ui.prefs b/reporter/plaintext/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/reporter/plaintext/.settings/org.eclipse.jdt.ui.prefs +++ b/reporter/plaintext/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false diff --git a/testutil/.settings/org.eclipse.jdt.ui.prefs b/testutil/.settings/org.eclipse.jdt.ui.prefs index a23c50a8..cd7ee8e5 100644 --- a/testutil/.settings/org.eclipse.jdt.ui.prefs +++ b/testutil/.settings/org.eclipse.jdt.ui.prefs @@ -1,146 +1,7 @@ eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_itsallcode style formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.ondemandthreshold=4 org.eclipse.jdt.ui.staticondemandthreshold=4 -sp_cleanup.add_all=false -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.array_with_curly=false -sp_cleanup.arrays_fill=false -sp_cleanup.bitwise_conditional_expression=false -sp_cleanup.boolean_literal=false -sp_cleanup.boolean_value_rather_than_comparison=false -sp_cleanup.break_loop=false -sp_cleanup.collection_cloning=false -sp_cleanup.comparing_on_criteria=false -sp_cleanup.comparison_statement=false -sp_cleanup.controlflow_merge=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false -sp_cleanup.convert_to_switch_expressions=false -sp_cleanup.correct_indentation=false -sp_cleanup.do_while_rather_than_while=false -sp_cleanup.double_negation=false -sp_cleanup.else_if=false -sp_cleanup.embedded_if=false -sp_cleanup.evaluate_nullable=false -sp_cleanup.extract_increment=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.hash=false -sp_cleanup.if_condition=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.instanceof=false -sp_cleanup.instanceof_keyword=false -sp_cleanup.invert_equals=false -sp_cleanup.join=false -sp_cleanup.lazy_logical_operator=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.map_cloning=false -sp_cleanup.merge_conditional_blocks=false -sp_cleanup.multi_catch=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.no_string_creation=false -sp_cleanup.no_super=false -sp_cleanup.number_suffix=false -sp_cleanup.objects_equals=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -sp_cleanup.operand_factorization=false -sp_cleanup.organize_imports=true -sp_cleanup.overridden_assignment=false -sp_cleanup.plain_replacement=false -sp_cleanup.precompile_regex=false -sp_cleanup.primitive_comparison=false -sp_cleanup.primitive_parsing=false -sp_cleanup.primitive_rather_than_wrapper=false -sp_cleanup.primitive_serialization=false -sp_cleanup.pull_out_if_from_if_else=false -sp_cleanup.pull_up_assignment=false -sp_cleanup.push_down_negation=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.reduce_indentation=false -sp_cleanup.redundant_comparator=false -sp_cleanup.redundant_falling_through_block_end=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_array_creation=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.return_expression=false -sp_cleanup.simplify_lambda_expression_and_method_ref=false -sp_cleanup.single_used_field=false -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.standard_comparison=false -sp_cleanup.static_inner_class=false -sp_cleanup.strictly_equal_or_different=false -sp_cleanup.stringbuffer_to_stringbuilder=false -sp_cleanup.stringbuilder=false -sp_cleanup.stringbuilder_for_local_vars=false -sp_cleanup.stringconcat_to_textblock=false -sp_cleanup.substring=false -sp_cleanup.switch=false -sp_cleanup.system_property=false -sp_cleanup.system_property_boolean=false -sp_cleanup.system_property_file_encoding=false -sp_cleanup.system_property_file_separator=false -sp_cleanup.system_property_line_separator=false -sp_cleanup.system_property_path_separator=false -sp_cleanup.ternary_operator=false -sp_cleanup.try_with_resource=false -sp_cleanup.unlooped_while=false -sp_cleanup.unreachable_block=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_autoboxing=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_directly_map_method=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_string_is_blank=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true -sp_cleanup.use_unboxing=false -sp_cleanup.use_var=false -sp_cleanup.useless_continue=false -sp_cleanup.useless_return=false -sp_cleanup.valueof_rather_than_instantiation=false From 9cd8003b749d6eaea3b6a897dfc87ccaf506aa41 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Sat, 26 Sep 2026 15:19:43 +0200 Subject: [PATCH 05/15] Fix formatting of switch --- .../core/exporter/ExporterFactoryLoader.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java index 5d649800..9b762820 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java @@ -63,11 +63,11 @@ public ExporterFactory getExporterFactory(final String outputFormat) final List matchingExporters = getMatchingFactories(outputFormat); return switch (matchingExporters.size()) { - case 0 -> throw new ExporterException( - "Found no matching exporter for output format '" + outputFormat + "'"); - case 1 -> matchingExporters.get(0); - default -> throw new ExporterException("Found more than one matching exporter for output format '" - + outputFormat + "'"); + case 0 -> throw new ExporterException( + "Found no matching exporter for output format '" + outputFormat + "'"); + case 1 -> matchingExporters.get(0); + default -> throw new ExporterException("Found more than one matching exporter for output format '" + + outputFormat + "'"); }; } From 1c527cf8f95257a79555bfcba19b16e187e161a0 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Wed, 30 Sep 2026 10:56:44 +0200 Subject: [PATCH 06/15] Implement equals for Plugin --- .../core/serviceloader/Plugin.java | 21 +++++++++++++ .../core/serviceloader/PluginTest.java | 30 +++++++++++-------- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java index f80f484b..fd184a77 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java @@ -98,4 +98,25 @@ public String toString() { return "Plugin [name=" + this.name + ", jars=" + this.jars + "]"; } + + @Override + public int hashCode() + { + return Objects.hash(this.name, this.jars); + } + + @Override + public boolean equals(final Object obj) + { + if (this == obj) + { + return true; + } + if (obj == null || getClass() != obj.getClass()) + { + return false; + } + final Plugin other = (Plugin) obj; + return Objects.equals(this.name, other.name) && Objects.equals(this.jars, other.jars); + } } diff --git a/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/PluginTest.java b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/PluginTest.java index 61e607cc..6d5c4643 100644 --- a/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/PluginTest.java +++ b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/PluginTest.java @@ -13,6 +13,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import nl.jqno.equalsverifier.EqualsVerifier; + // [utest->dsn~plugins.loading.configuration~1] class PluginTest { @@ -20,7 +22,7 @@ class PluginTest Path tempDir; @Test - void ofCreatesPluginWithNameAndJars() throws IOException + void testOfCreatesPluginWithNameAndJars() throws IOException { final Path jar = createJar("plugin.jar"); final Plugin plugin = Plugin.of("my-plugin", jar); @@ -30,7 +32,7 @@ void ofCreatesPluginWithNameAndJars() throws IOException } @Test - void ofSupportsMultipleJars() throws IOException + void testOfSupportsMultipleJars() throws IOException { final Path jar1 = createJar("plugin.jar"); final Path jar2 = createJar("dependency.jar"); @@ -39,7 +41,7 @@ void ofSupportsMultipleJars() throws IOException } @Test - void ofRejectsNullName() throws IOException + void testOfRejectsNullName() throws IOException { final Path jar = createJar("plugin.jar"); final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, @@ -48,7 +50,7 @@ void ofRejectsNullName() throws IOException } @Test - void ofRejectsBlankName() throws IOException + void testOfRejectsBlankName() throws IOException { final Path jar = createJar("plugin.jar"); final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, @@ -57,25 +59,23 @@ void ofRejectsBlankName() throws IOException } @Test - void ofRejectsEmptyJarList() + void testOfRejectsEmptyJarList() { final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> Plugin.of("my-plugin")); - assertThat(exception.getMessage(), - equalTo("At least one plugin JAR must be given for plugin 'my-plugin'.")); + assertThat(exception.getMessage(), equalTo("At least one plugin JAR must be given for plugin 'my-plugin'.")); } @Test - void ofRejectsNullJar() + void testOfRejectsNullJar() { final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> Plugin.of("my-plugin", (Path) null)); - assertThat(exception.getMessage(), - equalTo("Plugin JAR path must not be null for plugin 'my-plugin'.")); + assertThat(exception.getMessage(), equalTo("Plugin JAR path must not be null for plugin 'my-plugin'.")); } @Test - void ofRejectsMissingJar() + void testOfRejectsMissingJar() { final Path missing = tempDir.resolve("missing.jar"); final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, @@ -85,7 +85,7 @@ void ofRejectsMissingJar() } @Test - void ofRejectsNonJarFile() throws IOException + void testOfRejectsNonJarFile() throws IOException { final Path file = tempDir.resolve("plugin.txt"); Files.createFile(file); @@ -95,6 +95,12 @@ void ofRejectsNonJarFile() throws IOException equalTo("Plugin file '" + file + "' of plugin 'my-plugin' is not a JAR file.")); } + @Test + void testEqualsContract() + { + EqualsVerifier.forClass(Plugin.class).verify(); + } + private Path createJar(final String fileName) throws IOException { final Path jar = tempDir.resolve(fileName); From 1c344c4247d720f5b36de0ee869ec5825747dec2 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Wed, 30 Sep 2026 10:56:52 +0200 Subject: [PATCH 07/15] Mark methods as deprecated --- .../core/exporter/ExporterFactoryLoader.java | 2 ++ .../core/importer/ImporterFactoryLoader.java | 2 ++ .../core/report/ReporterFactoryLoader.java | 12 +++++++----- .../serviceloader/InitializingServiceLoader.java | 9 +++++---- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java index 9b762820..3d79110e 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java @@ -19,7 +19,9 @@ public class ExporterFactoryLoader * * @param context * the context for the new loader. + * @deprecated Use {@link #ExporterFactoryLoader(ExporterContext, ServiceLoaderConfig)} instead. */ + @Deprecated(since = "4.11.0", forRemoval = true) public ExporterFactoryLoader(final ExporterContext context) { // [impl->dsn~plugins.loading.plugin-types~1] diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java index aacc5a60..d7bd8acb 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java @@ -33,7 +33,9 @@ public class ImporterFactoryLoader * * @param context * context for the new loader + * @deprecated Use {@link #ImporterFactoryLoader(ImporterContext, ServiceLoaderConfig)} instead. */ + @Deprecated(since = "4.11.0", forRemoval = true) public ImporterFactoryLoader(final ImporterContext context) { // [impl->dsn~plugins.loading.plugin-types~1] diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java index 425bff9a..f9244bb1 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java @@ -20,7 +20,9 @@ public class ReporterFactoryLoader * @param context * the context used for initializing new * {@link ReporterFactory}s. + * @deprecated Use {@link #ReporterFactoryLoader(ReporterContext, ServiceLoaderConfig)} instead. */ + @Deprecated(since = "4.11.0", forRemoval = true) public ReporterFactoryLoader(final ReporterContext context) { // [impl->dsn~plugins.loading.plugin-types~1] @@ -65,11 +67,11 @@ public ReporterFactory getReporterFactory(final String outputFormat) final List matchingReporters = getMatchingFactories(outputFormat); return switch (matchingReporters.size()) { - case 0 -> throw new ExporterException( - "Found no matching reporter for output format '" + outputFormat + "'"); - case 1 -> matchingReporters.get(0); - default -> throw new ReportException("Found more than one matching reporter for output format '" - + outputFormat + "'"); + case 0 -> throw new ExporterException( + "Found no matching reporter for output format '" + outputFormat + "'"); + case 1 -> matchingReporters.get(0); + default -> throw new ReportException("Found more than one matching reporter for output format '" + + outputFormat + "'"); }; } diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/InitializingServiceLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/InitializingServiceLoader.java index 87722476..fb6bcfd3 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/InitializingServiceLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/InitializingServiceLoader.java @@ -40,9 +40,10 @@ public final class InitializingServiceLoader, C> impl * context with which to initialize the newly created service * instances. * @return an {@link InitializingServiceLoader} for type T + * @deprecated Use {@link #load(Class, Object, ServiceLoaderConfig)} instead. */ - public static , C> Loader load( - final Class serviceType, final C context) + @Deprecated(since = "4.11.0", forRemoval = true) + public static , C> Loader load(final Class serviceType, final C context) { return load(serviceType, context, ServiceLoaderConfig.createDefault()); } @@ -66,8 +67,8 @@ public static , C> Loader load( * @return an {@link InitializingServiceLoader} for type T */ // [impl->dsn~plugins.loading.configuration~1] - public static , C> Loader load( - final Class serviceType, final C context, final ServiceLoaderConfig config) + public static , C> Loader load(final Class serviceType, final C context, + final ServiceLoaderConfig config) { final ServiceLoaderFactory loaderFactory = new ServiceLoaderFactory(config); return new InitializingServiceLoader<>(loaderFactory.createLoader(serviceType), context); From 4d5b03f4f936f2dbe8d37590908fcd103a0574f1 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Wed, 30 Sep 2026 11:25:24 +0200 Subject: [PATCH 08/15] Code review --- .../itsallcode/openfasttrace/core/Oft.java | 3 +-- .../openfasttrace/core/OftBuilder.java | 11 ++++----- .../openfasttrace/core/ServiceFactory.java | 1 + .../serviceloader/ServiceLoaderConfig.java | 18 ++++++-------- .../core/serviceloader/ServiceOrigin.java | 3 +-- .../ServiceLoaderFactoryTest.java | 24 +++++++------------ doc/changes/changes.md | 3 +-- doc/changes/changes_4.11.0.md | 2 +- 8 files changed, 25 insertions(+), 40 deletions(-) diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java b/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java index 041442d3..262ac210 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java @@ -127,8 +127,7 @@ static Oft create() } /** - * Create a builder for configuring an {@link Oft} instance, e.g. to add - * plugins at runtime. + * Create a builder for configuring an {@link Oft} instance, e.g. to add plugins at runtime. * * @return a new {@link OftBuilder} */ diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/OftBuilder.java b/core/src/main/java/org/itsallcode/openfasttrace/core/OftBuilder.java index ee59d140..6afc3860 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/OftBuilder.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/OftBuilder.java @@ -8,8 +8,8 @@ /** * Builder for creating {@link Oft} instances with custom configuration. *

- * Use this builder to configure additional plugins that OFT should load at - * runtime in addition to the plugins discovered from the default locations. + * Use this builder to configure additional plugins that OFT should load at runtime in addition to the plugins + * discovered from the default locations. */ public final class OftBuilder { @@ -23,10 +23,9 @@ public final class OftBuilder /** * Add a named plugin consisting of one or more JAR files. *

- * All JAR files passed in one call are loaded through the same separate - * ClassLoader, matching the semantics of a plugin directory under - * {@code $HOME/.oft/plugins//}. The JAR files may contain one - * or more service providers; OFT loads all of them. + * All JAR files passed in one call are loaded through the same separate ClassLoader, matching the semantics of a + * plugin directory under {@code $HOME/.oft/plugins//}. The JAR files may contain one or more service + * providers; OFT loads all of them. * * @param name * name of the plugin, used for the ClassLoader name and logging diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java b/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java index 615d7cba..07753b73 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java @@ -19,6 +19,7 @@ class ServiceFactory { private final ServiceLoaderConfig serviceLoaderConfig; + @Deprecated ServiceFactory() { this(ServiceLoaderConfig.createDefault()); diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderConfig.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderConfig.java index e40a5097..514e46c3 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderConfig.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderConfig.java @@ -6,11 +6,8 @@ /** * Configuration for the service loader. *

- * This object collects all settings that control how OFT discovers and loads - * services (importers, exporters, and reporters). It currently holds the plugin - * directory, whether the current class path is searched, and the plugins - * configured at runtime. Additional options can be added here in the future - * without changing the service loader API. + * This object collects all settings that control how OFT discovers and loads services (importers, exporters, and + * reporters). */ public final class ServiceLoaderConfig { @@ -28,8 +25,8 @@ private ServiceLoaderConfig(final Builder builder) /** * Create the default configuration. *

- * The default configuration searches the current class path and the default - * plugin directory in the user's home and configures no additional plugins. + * The default configuration searches the current class path and the default plugin directory in the user's home + * {@code ~/.oft/plugins} and configures no additional plugins. * * @return the default configuration */ @@ -111,8 +108,8 @@ private static Path defaultPluginsDirectory() } /** - * Set the directory that is searched for plugins. Default: the - * {@code .oft/plugins} directory in the user's home. + * Set the directory that is searched for plugins. Default: the {@code .oft/plugins} directory in the user's + * home. * * @param pluginsDirectory * the plugin directory @@ -125,8 +122,7 @@ public Builder pluginsDirectory(final Path pluginsDirectory) } /** - * Set whether the current class path is searched for services. Default: - * {@code true}. + * Set whether the current class path is searched for services. Default: {@code true}. * * @param searchCurrentClasspath * {@code true} if the current class path should be searched diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceOrigin.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceOrigin.java index 798cae96..721747ef 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceOrigin.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceOrigin.java @@ -56,8 +56,7 @@ static ServiceOrigin forJars(final List jars) } /** - * Create a service origin for a named plugin consisting of a list of JAR - * files. + * Create a service origin for a named plugin consisting of a list of JAR files. * * @param name * name of the plugin, used for the ClassLoader name diff --git a/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java index 6800f0af..aeefc316 100644 --- a/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java +++ b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java @@ -131,10 +131,8 @@ void findServiceOriginsMultiPlugins() throws IOException Files.createFile(pluginDir2.resolve("plugin2.jar")); final List origins = factory().findServiceOrigins(); assertAll(() -> assertThat(origins, hasSize(3)), - () -> assertThat(origins.get(0).getClassLoader().getName(), - equalTo("JarClassLoader-plugin1.jar")), - () -> assertThat(origins.get(1).getClassLoader().getName(), - equalTo("JarClassLoader-plugin2.jar"))); + () -> assertThat(origins.get(0).getClassLoader().getName(), equalTo("JarClassLoader-plugin1.jar")), + () -> assertThat(origins.get(1).getClassLoader().getName(), equalTo("JarClassLoader-plugin2.jar"))); } // [utest->dsn~plugins.loading.configuration~1] @@ -146,8 +144,7 @@ void findServiceOriginsConfiguredPlugin() throws IOException config(tempDir, true).toBuilder().addPlugin(Plugin.of("my-plugin", jar)).build()); final List origins = factory.findServiceOrigins(); assertAll(() -> assertThat(origins, hasSize(2)), - () -> assertThat(origins.get(0).getClassLoader().getName(), - equalTo("PluginClassLoader-my-plugin"))); + () -> assertThat(origins.get(0).getClassLoader().getName(), equalTo("PluginClassLoader-my-plugin"))); } // [utest->dsn~plugins.loading.configuration~1] @@ -160,8 +157,7 @@ void findServiceOriginsConfiguredPluginWithMultipleJars() throws IOException config(tempDir, true).toBuilder().addPlugin(Plugin.of("my-plugin", jar1, jar2)).build()); final List origins = factory.findServiceOrigins(); assertAll(() -> assertThat(origins, hasSize(2)), - () -> assertThat(origins.get(0).getClassLoader().getName(), - equalTo("PluginClassLoader-my-plugin"))); + () -> assertThat(origins.get(0).getClassLoader().getName(), equalTo("PluginClassLoader-my-plugin"))); } // [utest->dsn~plugins.loading.configuration~1] @@ -176,10 +172,8 @@ void findServiceOriginsMultipleConfiguredPlugins() throws IOException .build()); final List origins = factory.findServiceOrigins(); assertAll(() -> assertThat(origins, hasSize(3)), - () -> assertThat(origins.get(0).getClassLoader().getName(), - equalTo("PluginClassLoader-plugin-one")), - () -> assertThat(origins.get(1).getClassLoader().getName(), - equalTo("PluginClassLoader-plugin-two"))); + () -> assertThat(origins.get(0).getClassLoader().getName(), equalTo("PluginClassLoader-plugin-one")), + () -> assertThat(origins.get(1).getClassLoader().getName(), equalTo("PluginClassLoader-plugin-two"))); } // [utest->dsn~plugins.loading.configuration~1] @@ -194,10 +188,8 @@ void findServiceOriginsConfiguredPluginsAppendedAfterPluginDirectory() throws IO config(tempDir, true).toBuilder().addPlugin(Plugin.of("configured", configuredJar)).build()); final List origins = factory.findServiceOrigins(); assertAll(() -> assertThat(origins, hasSize(3)), - () -> assertThat(origins.get(0).getClassLoader().getName(), - equalTo("JarClassLoader-plugin1.jar")), - () -> assertThat(origins.get(1).getClassLoader().getName(), - equalTo("PluginClassLoader-configured"))); + () -> assertThat(origins.get(0).getClassLoader().getName(), equalTo("JarClassLoader-plugin1.jar")), + () -> assertThat(origins.get(1).getClassLoader().getName(), equalTo("PluginClassLoader-configured"))); } private Path createJar(final String fileName) throws IOException diff --git a/doc/changes/changes.md b/doc/changes/changes.md index d3627a3b..79c507d1 100644 --- a/doc/changes/changes.md +++ b/doc/changes/changes.md @@ -6,8 +6,7 @@ nav_order: 8 # Changes - -* [4.11.0](changes_4.11.0.md) +* [4.11.0](changes_4.11.0.md) unreleased * [4.10.0](changes_4.10.0.md) * [4.9.0](changes_4.9.0.md) * [4.8.0](changes_4.8.0.md) diff --git a/doc/changes/changes_4.11.0.md b/doc/changes/changes_4.11.0.md index 304ca287..5e030eb5 100644 --- a/doc/changes/changes_4.11.0.md +++ b/doc/changes/changes_4.11.0.md @@ -1,4 +1,4 @@ -# OpenFastTrace 4.11.0, released 2026-XX-XX +# OpenFastTrace 4.11.0, released 2026-10-?? Code name: Configurable Plugins From e5c2390e205c13a67b0fad4dd4c8f1a9daee0eed Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Wed, 30 Sep 2026 11:37:18 +0200 Subject: [PATCH 09/15] Fix compile error --- .../core/serviceloader/ServiceLoaderFactoryIT.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryIT.java b/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryIT.java index 037e359a..59e81db0 100644 --- a/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryIT.java +++ b/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryIT.java @@ -17,8 +17,6 @@ import org.junit.jupiter.api.io.TempDir; import org.opentest4j.TestAbortedException; -import net.bytebuddy.build.Plugin; - /** * Test for {@link ServiceLoaderFactory} from module {@code core}. This test * must be located in module {@code product} (which includes all plugin modules) From e1e0dd3432151bd18092acbfae4279ce3383cd79 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Wed, 30 Sep 2026 11:37:26 +0200 Subject: [PATCH 10/15] Review documentation --- doc/plugins.md | 17 ------------- doc/user_guide/oft_api/using_oft_from_java.md | 24 +++++++------------ 2 files changed, 9 insertions(+), 32 deletions(-) diff --git a/doc/plugins.md b/doc/plugins.md index 7e31e31a..f40a6837 100644 --- a/doc/plugins.md +++ b/doc/plugins.md @@ -20,23 +20,6 @@ To install a plugin, copy the plugin's JAR file to the following directory depen After copying the JAR file, the plugin will be available the next time you run OFT. -## Configuring Plugins From Java - -When you embed OFT in your own application and resolve plugins through your own dependency -mechanism, you can pass plugin JARs to OFT at runtime instead of installing them in the -predefined directory: - -```java -final Oft oft = Oft.builder() - .addPlugin("my-plugin", Path.of("my-plugin.jar")) - .build(); -``` - -Each `addPlugin(name, jars...)` call defines one named plugin. All JARs passed in one call are -loaded through the same separate ClassLoader, so a plugin can be passed together with its -dependencies. A plugin's JARs may contain multiple service providers; OFT loads all of them. -Configured plugins are loaded in addition to the plugins from the predefined directory. - ## Developing Plugins If you want to develop your own plugins for OFT, please refer to the [Plugin Developer Guide](developer_guide/plugin_developer_guide.md). diff --git a/doc/user_guide/oft_api/using_oft_from_java.md b/doc/user_guide/oft_api/using_oft_from_java.md index 3554f1f2..850dd84c 100644 --- a/doc/user_guide/oft_api/using_oft_from_java.md +++ b/doc/user_guide/oft_api/using_oft_from_java.md @@ -119,11 +119,15 @@ Import, export and report each have an overloaded variant that can be configured * [org.itsallcode.openfasttrace.core.ExportSettings](../../../core/src/main/java/org/itsallcode/openfasttrace/core/ExportSettings.java) * [org.itsallcode.openfasttrace.api.ReportSettings](../../../api/src/main/java/org/itsallcode/openfasttrace/api/ReportSettings.java) +Each of those classes comes with a builder which is called like this: + +```java +ReportSettings settings = ReportSettings.builder().newline(Newline.UNIX).build(); +``` + #### Adding Plugins From Java -By default OFT loads plugins from the predefined plugin directory (see [Plugins](../../plugins.md)). -When you embed OFT and resolve plugins through your own dependency mechanism, you can pass -plugin JARs to OFT at runtime using the `Oft` builder: +By default OFT loads plugins from the predefined plugin directory (see [Plugins](../../plugins.md)). When you embed OFT and resolve plugins through your own dependency mechanism, you can pass plugin JARs to OFT at runtime using the `Oft` builder: ```java final Oft oft = Oft.builder() @@ -131,9 +135,7 @@ final Oft oft = Oft.builder() .build(); ``` -Each `addPlugin(name, jars...)` call defines one named plugin. All JARs passed in one call are -loaded through the same separate ClassLoader, so you can pass a plugin together with its -dependencies: +Each `addPlugin(name, jars...)` call defines one named plugin. All JARs passed in one call are loaded through the same separate ClassLoader, so you can pass a plugin together with its dependencies: ```java final Oft oft = Oft.builder() @@ -141,12 +143,4 @@ final Oft oft = Oft.builder() .build(); ``` -A plugin's JARs may contain multiple service providers (importers, exporters, reporters); OFT -loads all of them. Configured plugins are loaded in addition to the plugins from the default -plugin directory, and the built-in importers, exporters, and reporters remain available. - -Each of those classes comes with a builder which is called like this: - -```java -ReportSettings settings = ReportSettings.builder().newline(Newline.UNIX).build(); -``` +A plugin's JARs may contain multiple service providers (importers, exporters, reporters); OFT loads all of them. Configured plugins are loaded in addition to the plugins from the default plugin directory, and the built-in importers, exporters, and reporters remain available. From 050dc745d8ad1a7c26f2a2a69f12213f54cae607 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Wed, 30 Sep 2026 11:46:22 +0200 Subject: [PATCH 11/15] Fix deprecation warnings --- .../org/itsallcode/openfasttrace/core/OftRunner.java | 9 ++++----- .../itsallcode/openfasttrace/core/ServiceFactory.java | 5 ++++- .../openfasttrace/core/cli/ArgumentValidator.java | 6 ++---- .../core/exporter/ExporterFactoryLoader.java | 2 +- .../core/importer/ImporterFactoryLoader.java | 2 +- .../core/report/ReporterFactoryLoader.java | 2 +- .../importer/ImporterFactoryLoaderClassloaderIT.java | 4 +++- .../openfasttrace/TestAllServicesAvailable.java | 7 ++++--- .../serviceloader/TestInitializingServiceLoader.java | 10 +++++----- .../openfasttrace/report/TestReportService.java | 4 +++- 10 files changed, 28 insertions(+), 23 deletions(-) diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/OftRunner.java b/core/src/main/java/org/itsallcode/openfasttrace/core/OftRunner.java index 8bf9714c..e72bca0f 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/OftRunner.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/OftRunner.java @@ -4,10 +4,9 @@ import java.util.List; import org.itsallcode.openfasttrace.api.ReportSettings; -import org.itsallcode.openfasttrace.api.core.LinkedSpecificationItem; -import org.itsallcode.openfasttrace.api.core.SpecificationItem; -import org.itsallcode.openfasttrace.api.core.Trace; +import org.itsallcode.openfasttrace.api.core.*; import org.itsallcode.openfasttrace.api.importer.ImportSettings; +import org.itsallcode.openfasttrace.core.serviceloader.ServiceLoaderConfig; /** * Provides convenient methods for importing, tracing and reporting. @@ -19,10 +18,10 @@ public class OftRunner implements Oft /** Create a new instance. */ public OftRunner() { - this(new ServiceFactory()); + this(new ServiceFactory(ServiceLoaderConfig.createDefault())); } - OftRunner(ServiceFactory serviceFactory) + OftRunner(final ServiceFactory serviceFactory) { this.serviceFactory = serviceFactory; } diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java b/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java index 07753b73..54c07149 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/ServiceFactory.java @@ -19,7 +19,10 @@ class ServiceFactory { private final ServiceLoaderConfig serviceLoaderConfig; - @Deprecated + /** + * @deprecated Use {@link #ServiceFactory(ServiceLoaderConfig)} instead. + */ + @Deprecated(since = "4.11.0", forRemoval = true) ServiceFactory() { this(ServiceLoaderConfig.createDefault()); diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/cli/ArgumentValidator.java b/core/src/main/java/org/itsallcode/openfasttrace/core/cli/ArgumentValidator.java index 3a35d19e..a68bf076 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/cli/ArgumentValidator.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/cli/ArgumentValidator.java @@ -2,9 +2,7 @@ import static java.util.Arrays.asList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; import org.itsallcode.openfasttrace.api.report.ReportVerbosity; @@ -85,7 +83,7 @@ private boolean validateTraceCommand() private boolean validateConvertCommand() { final String format = Objects.requireNonNull(this.arguments.getOutputFormat(), ""); - if (!new ExporterFactoryLoader(null).isFormatSupported(format)) + if (!new ExporterFactoryLoader(null, null).isFormatSupported(format)) { this.error = "export format '" + format + "' is not supported."; return false; diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java index 3d79110e..92697038 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java @@ -25,7 +25,7 @@ public class ExporterFactoryLoader public ExporterFactoryLoader(final ExporterContext context) { // [impl->dsn~plugins.loading.plugin-types~1] - this(InitializingServiceLoader.load(ExporterFactory.class, context)); + this(InitializingServiceLoader.load(ExporterFactory.class, context, ServiceLoaderConfig.createDefault())); } /** diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java index d7bd8acb..cc33aa52 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoader.java @@ -39,7 +39,7 @@ public class ImporterFactoryLoader public ImporterFactoryLoader(final ImporterContext context) { // [impl->dsn~plugins.loading.plugin-types~1] - this(InitializingServiceLoader.load(ImporterFactory.class, context)); + this(InitializingServiceLoader.load(ImporterFactory.class, context, ServiceLoaderConfig.createDefault())); } /** diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java index f9244bb1..06f449c2 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/report/ReporterFactoryLoader.java @@ -26,7 +26,7 @@ public class ReporterFactoryLoader public ReporterFactoryLoader(final ReporterContext context) { // [impl->dsn~plugins.loading.plugin-types~1] - this(InitializingServiceLoader.load(ReporterFactory.class, context)); + this(InitializingServiceLoader.load(ReporterFactory.class, context, ServiceLoaderConfig.createDefault())); } /** diff --git a/core/src/test/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoaderClassloaderIT.java b/core/src/test/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoaderClassloaderIT.java index 0f2e252c..9752286e 100644 --- a/core/src/test/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoaderClassloaderIT.java +++ b/core/src/test/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoaderClassloaderIT.java @@ -10,6 +10,7 @@ import org.itsallcode.openfasttrace.api.importer.ImporterException; import org.itsallcode.openfasttrace.api.importer.input.InputFile; import org.itsallcode.openfasttrace.api.importer.input.RealFileInput; +import org.itsallcode.openfasttrace.core.serviceloader.ServiceLoaderConfig; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; @@ -41,7 +42,8 @@ final void testGetImporterFactoryThrowsExceptionWhenTcclIsLimited(@Mock final Im try { Thread.currentThread().setContextClassLoader(limitedClassLoader); - final ImporterFactoryLoader loaderWithLimitedTccl = new ImporterFactoryLoader(context); + final ImporterFactoryLoader loaderWithLimitedTccl = new ImporterFactoryLoader(context, + ServiceLoaderConfig.createDefault()); final InputFile file = RealFileInput.forPath(Paths.get("test.md")); final ImporterException exception = assertThrows(ImporterException.class, () -> loaderWithLimitedTccl.getImporterFactory(file)); diff --git a/product/src/test/java/org/itsallcode/openfasttrace/TestAllServicesAvailable.java b/product/src/test/java/org/itsallcode/openfasttrace/TestAllServicesAvailable.java index 381bf5d6..4026abbe 100644 --- a/product/src/test/java/org/itsallcode/openfasttrace/TestAllServicesAvailable.java +++ b/product/src/test/java/org/itsallcode/openfasttrace/TestAllServicesAvailable.java @@ -22,6 +22,7 @@ import org.itsallcode.openfasttrace.core.exporter.ExporterFactoryLoader; import org.itsallcode.openfasttrace.core.importer.ImporterFactoryLoader; import org.itsallcode.openfasttrace.core.report.ReporterFactoryLoader; +import org.itsallcode.openfasttrace.core.serviceloader.ServiceLoaderConfig; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; @@ -50,21 +51,21 @@ private static ImporterFactoryLoader createImporterLoader() final ImporterContext contextMock = mock(ImporterContext.class, withSettings().defaultAnswer(Answers.RETURNS_DEEP_STUBS)); - return new ImporterFactoryLoader(contextMock); + return new ImporterFactoryLoader(contextMock, ServiceLoaderConfig.createDefault()); } private static ExporterFactoryLoader createExporterLoader() { final ExporterContext contextMock = mock(ExporterContext.class, withSettings().defaultAnswer(Answers.RETURNS_DEEP_STUBS)); - return new ExporterFactoryLoader(contextMock); + return new ExporterFactoryLoader(contextMock, ServiceLoaderConfig.createDefault()); } private static ReporterFactoryLoader createReporterLoader() { final ReporterContext contextMock = mock(ReporterContext.class, withSettings().defaultAnswer(Answers.RETURNS_DEEP_STUBS)); - return new ReporterFactoryLoader(contextMock); + return new ReporterFactoryLoader(contextMock, ServiceLoaderConfig.createDefault()); } @ParameterizedTest diff --git a/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/TestInitializingServiceLoader.java b/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/TestInitializingServiceLoader.java index 98ad3c44..ae8e2c8d 100644 --- a/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/TestInitializingServiceLoader.java +++ b/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/TestInitializingServiceLoader.java @@ -13,8 +13,8 @@ import org.itsallcode.openfasttrace.api.report.ReporterContext; import org.itsallcode.openfasttrace.api.report.ReporterFactory; import org.itsallcode.openfasttrace.exporter.specobject.SpecobjectExporterFactory; -import org.itsallcode.openfasttrace.importer.markdown.MarkdownImporterFactory; import org.itsallcode.openfasttrace.importer.gherkin.GherkinImporterFactory; +import org.itsallcode.openfasttrace.importer.markdown.MarkdownImporterFactory; import org.itsallcode.openfasttrace.importer.restructuredtext.RestructuredTextImporterFactory; import org.itsallcode.openfasttrace.importer.specobject.SpecobjectImporterFactory; import org.itsallcode.openfasttrace.importer.tag.TagImporterFactory; @@ -36,7 +36,7 @@ void testNoServicesRegistered() { final Object context = new Object(); final Loader voidServiceLoader = InitializingServiceLoader - .load(InitializableServiceStub.class, context); + .load(InitializableServiceStub.class, context, ServiceLoaderConfig.createDefault()); final List services = voidServiceLoader.load().toList(); assertThat(services, emptyIterable()); assertThat(voidServiceLoader.load().toList(), emptyIterable()); @@ -95,10 +95,10 @@ void testReporterFactoriesRegistered() } } - private , C> List getRegisteredServices(final Class type, - final C context) + private , C> List getRegisteredServices(final Class type, final C context) { - final Loader serviceLoader = InitializingServiceLoader.load(type, context); + final Loader serviceLoader = InitializingServiceLoader.load(type, context, + ServiceLoaderConfig.createDefault()); return serviceLoader.load().toList(); } diff --git a/product/src/test/java/org/itsallcode/openfasttrace/report/TestReportService.java b/product/src/test/java/org/itsallcode/openfasttrace/report/TestReportService.java index 79967154..fd8664da 100644 --- a/product/src/test/java/org/itsallcode/openfasttrace/report/TestReportService.java +++ b/product/src/test/java/org/itsallcode/openfasttrace/report/TestReportService.java @@ -18,6 +18,7 @@ import org.itsallcode.openfasttrace.api.report.*; import org.itsallcode.openfasttrace.core.report.ReportService; import org.itsallcode.openfasttrace.core.report.ReporterFactoryLoader; +import org.itsallcode.openfasttrace.core.serviceloader.ServiceLoaderConfig; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.io.TempDir; @@ -95,7 +96,8 @@ void testReportToIllegalPathThrowsReportExpection(@TempDir final Path tempDir) private ReportService createService(final ReportSettings settings) { - return new ReportService(new ReporterFactoryLoader(new ReporterContext(settings))); + return new ReportService( + new ReporterFactoryLoader(new ReporterContext(settings), ServiceLoaderConfig.createDefault())); } private Path createReadOnlyFile(final Path tempDir) throws IOException From 8e9cb56af93ece3b5ae1868c353d437d9bd33e98 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Wed, 30 Sep 2026 17:48:01 +0200 Subject: [PATCH 12/15] Upgrade Maven plugins --- parent/pom.xml | 16 ++++++++-------- pom.xml | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/parent/pom.xml b/parent/pom.xml index e607e788..0b4cbb9a 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -13,7 +13,7 @@ 17 6.1.0-M1 6.1.3 - 3.5.6 + 3.6.0 UTF-8 UTF-8 ${git.commit.time} @@ -269,7 +269,7 @@ io.github.git-commit-id git-commit-id-maven-plugin - 10.0.0 + 10.0.1 get-the-git-infos @@ -290,7 +290,7 @@ org.apache.maven.plugins maven-toolchains-plugin - 3.3.0 + 3.7.0 @@ -520,7 +520,7 @@ org.apache.maven.plugins maven-artifact-plugin - 3.6.1 + 3.7.0 verify-reproducible-build @@ -537,13 +537,13 @@ org.codehaus.mojo versions-maven-plugin - 2.21.0 + 2.22.0 org.apache.maven.plugins maven-deploy-plugin - 3.1.4 + 3.2.0 true @@ -588,12 +588,12 @@ org.apache.maven.plugins maven-compiler-plugin - 3.15.0 + 3.16.0 org.apache.maven.plugins maven-install-plugin - 3.1.4 + 3.2.0 org.apache.maven.plugins diff --git a/pom.xml b/pom.xml index 2a17e4e8..988a50ff 100644 --- a/pom.xml +++ b/pom.xml @@ -75,7 +75,7 @@ org.sonarsource.scanner.maven sonar-maven-plugin - 5.7.0.6970 + 5.8.0.7211 From 08de374930750439e9851ee10b881a740afb43d6 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Wed, 30 Sep 2026 17:48:15 +0200 Subject: [PATCH 13/15] Update project version in developer guide --- doc/developer_guide/developer_guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/developer_guide/developer_guide.md b/doc/developer_guide/developer_guide.md index be62eb83..92dcebed 100644 --- a/doc/developer_guide/developer_guide.md +++ b/doc/developer_guide/developer_guide.md @@ -26,7 +26,7 @@ To use OpenFastTrace as a dependency in your [Maven](https://maven.apache.org) p org.itsallcode.openfasttrace openfasttrace - 4.9.0 + 4.11.0 compile @@ -38,7 +38,7 @@ To use OpenFastTrace as a dependency in your [Gradle](https://gradle.org/) proje ```groovy dependencies { - compile "org.itsallcode.openfasttrace:openfasttrace:4.9.0" + compile "org.itsallcode.openfasttrace:openfasttrace:4.11.0" } ``` From b8b565c6e8be7f405da409d901255485263c0165 Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Wed, 30 Sep 2026 17:49:55 +0200 Subject: [PATCH 14/15] Fix unit tests --- .../itsallcode/openfasttrace/core/cli/ArgumentValidator.java | 5 ++++- .../core/serviceloader/ServiceLoaderFactoryTest.java | 5 ++++- parent/pom.xml | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/cli/ArgumentValidator.java b/core/src/main/java/org/itsallcode/openfasttrace/core/cli/ArgumentValidator.java index a68bf076..72f138c9 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/cli/ArgumentValidator.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/cli/ArgumentValidator.java @@ -5,9 +5,11 @@ import java.util.*; import java.util.stream.Collectors; +import org.itsallcode.openfasttrace.api.exporter.ExporterContext; import org.itsallcode.openfasttrace.api.report.ReportVerbosity; import org.itsallcode.openfasttrace.core.cli.commands.*; import org.itsallcode.openfasttrace.core.exporter.ExporterFactoryLoader; +import org.itsallcode.openfasttrace.core.serviceloader.ServiceLoaderConfig; /** * The {@link ArgumentValidator} checks whether the command line arguments given @@ -83,7 +85,8 @@ private boolean validateTraceCommand() private boolean validateConvertCommand() { final String format = Objects.requireNonNull(this.arguments.getOutputFormat(), ""); - if (!new ExporterFactoryLoader(null, null).isFormatSupported(format)) + if (!new ExporterFactoryLoader(new ExporterContext(), ServiceLoaderConfig.createDefault()) + .isFormatSupported(format)) { this.error = "export format '" + format + "' is not supported."; return false; diff --git a/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java index aeefc316..c587fe6f 100644 --- a/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java +++ b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryTest.java @@ -20,6 +20,9 @@ class ServiceLoaderFactoryTest @TempDir Path tempDir; + @TempDir + Path configuredJarsDir; + @Test void noPluginJar() { @@ -194,7 +197,7 @@ void findServiceOriginsConfiguredPluginsAppendedAfterPluginDirectory() throws IO private Path createJar(final String fileName) throws IOException { - final Path jar = tempDir.resolve(fileName); + final Path jar = configuredJarsDir.resolve(fileName); Files.createFile(jar); return jar; } diff --git a/parent/pom.xml b/parent/pom.xml index 0b4cbb9a..8f718966 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -290,7 +290,7 @@ org.apache.maven.plugins maven-toolchains-plugin - 3.7.0 + 3.3.0 From dbf91a8610b317501dda26d379b1ce58386df98c Mon Sep 17 00:00:00 2001 From: kaklakariada Date: Mon, 5 Oct 2026 13:24:36 +0200 Subject: [PATCH 15/15] Fix sonar warning --- .../openfasttrace/core/serviceloader/Plugin.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java index fd184a77..8542c1d3 100644 --- a/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java @@ -46,12 +46,10 @@ public static Plugin of(final String name, final Path... jars) { throw new IllegalArgumentException("At least one plugin JAR must be given for plugin '" + name + "'."); } - final List validatedJars = new ArrayList<>(jars.length); - for (final Path jar : jars) - { - validatedJars.add(validateJar(name, jar)); - } - return new Plugin(name, Collections.unmodifiableList(validatedJars)); + final List validatedJars = Arrays.stream(jars) + .map(jar -> validateJar(name, jar)) + .toList(); + return new Plugin(name, validatedJars); } private static Path validateJar(final String name, final Path jar)