diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 62b33c4ce..709789959 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/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs index 9bca002fa..d8d3c44b2 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.core.prefs b/api/.settings/org.eclipse.jdt.core.prefs index 8add83f71..974b88fd1 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/api/.settings/org.eclipse.jdt.ui.prefs b/api/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/core/.settings/org.eclipse.jdt.core.prefs index bfbe09007..6f26e9072 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/core/.settings/org.eclipse.jdt.ui.prefs b/core/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java b/core/src/main/java/org/itsallcode/openfasttrace/core/Oft.java index a2ca887ec..262ac2104 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,14 @@ 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 000000000..6afc3860b --- /dev/null +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/OftBuilder.java @@ -0,0 +1,55 @@ +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/OftRunner.java b/core/src/main/java/org/itsallcode/openfasttrace/core/OftRunner.java index 8bf9714ca..e72bca0f5 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 4d0e5d3b1..54c071492 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,36 @@ 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; + + /** + * @deprecated Use {@link #ServiceFactory(ServiceLoaderConfig)} instead. + */ + @Deprecated(since = "4.11.0", forRemoval = true) + 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 +59,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/cli/ArgumentValidator.java b/core/src/main/java/org/itsallcode/openfasttrace/core/cli/ArgumentValidator.java index 3a35d19e6..72f138c9b 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,14 +2,14 @@ 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.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 @@ -85,7 +85,8 @@ private boolean validateTraceCommand() private boolean validateConvertCommand() { final String format = Objects.requireNonNull(this.arguments.getOutputFormat(), ""); - if (!new ExporterFactoryLoader(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/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java b/core/src/main/java/org/itsallcode/openfasttrace/core/exporter/ExporterFactoryLoader.java index 4ec7bc226..92697038e 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} @@ -20,11 +19,28 @@ 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] - this(InitializingServiceLoader.load(ExporterFactory.class, context)); + this(InitializingServiceLoader.load(ExporterFactory.class, context, ServiceLoaderConfig.createDefault())); + } + + /** + * 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) @@ -49,13 +65,10 @@ public ExporterFactory getExporterFactory(final String outputFormat) final List matchingExporters = getMatchingFactories(outputFormat); return switch (matchingExporters.size()) { - case 0 -> - throw new ExporterException( + 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 '" + 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 dda9cbc37..cc33aa52d 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} @@ -36,11 +33,28 @@ 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] - this(InitializingServiceLoader.load(ImporterFactory.class, context)); + this(InitializingServiceLoader.load(ImporterFactory.class, context, ServiceLoaderConfig.createDefault())); + } + + /** + * 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)); } /** 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 41a328996..06f449c24 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} @@ -21,11 +20,29 @@ 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] - this(InitializingServiceLoader.load(ReporterFactory.class, context)); + this(InitializingServiceLoader.load(ReporterFactory.class, context, ServiceLoaderConfig.createDefault())); + } + + /** + * 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) @@ -50,10 +67,10 @@ public ReporterFactory getReporterFactory(final String outputFormat) final List matchingReporters = getMatchingFactories(outputFormat); return switch (matchingReporters.size()) { - case 0 -> throw new ExporterException( + 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 '" + 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 805a3b49f..fb6bcfd3b 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,11 +40,37 @@ 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) { - 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 000000000..8542c1d37 --- /dev/null +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/Plugin.java @@ -0,0 +1,120 @@ +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 = Arrays.stream(jars) + .map(jar -> validateJar(name, jar)) + .toList(); + return new Plugin(name, 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 + "]"; + } + + @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/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 000000000..514e46c3b --- /dev/null +++ b/core/src/main/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderConfig.java @@ -0,0 +1,173 @@ +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). + */ +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 + * {@code ~/.oft/plugins} 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 559a03d1e..d08ad3ab0 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 cbe421070..721747ef6 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,29 @@ 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 000000000..c031565d1 --- /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/importer/ImporterFactoryLoaderClassloaderIT.java b/core/src/test/java/org/itsallcode/openfasttrace/core/importer/ImporterFactoryLoaderClassloaderIT.java index 0f2e252cd..9752286ea 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/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 000000000..6d5c46433 --- /dev/null +++ b/core/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/PluginTest.java @@ -0,0 +1,110 @@ +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; + +import nl.jqno.equalsverifier.EqualsVerifier; + +// [utest->dsn~plugins.loading.configuration~1] +class PluginTest +{ + @TempDir + Path tempDir; + + @Test + void testOfCreatesPluginWithNameAndJars() 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 testOfSupportsMultipleJars() 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 testOfRejectsNullName() 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 testOfRejectsBlankName() 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 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'.")); + } + + @Test + 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'.")); + } + + @Test + void testOfRejectsMissingJar() + { + 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 testOfRejectsNonJarFile() 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.")); + } + + @Test + void testEqualsContract() + { + EqualsVerifier.forClass(Plugin.class).verify(); + } + + 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 2741e34d8..c587fe6f0 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() { @@ -28,14 +31,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 @@ -123,9 +134,71 @@ 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] + @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 = configuredJarsDir.resolve(fileName); + Files.createFile(jar); + return jar; } } diff --git a/doc/changes/changes_4.11.0.md b/doc/changes/changes_4.11.0.md index 2e3958bee..3b80d4383 100644 --- a/doc/changes/changes_4.11.0.md +++ b/doc/changes/changes_4.11.0.md @@ -1,23 +1,26 @@ -# OpenFastTrace 4.11.0, released 2026-09-?? +# OpenFastTrace 4.11.0, released 2026-10-?? -Code name: Visual Basic tag importer and documentation improvement +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. + The source tag importer now supports Visual Basic (`.vb`) source files. The user guide documentation now has automatic lateral navigation. -Fix typo and syntax in agent skills. - -## Feature +## Features -- #612: Add support for Visual Basic in the source tag importer +* #610: Allow adding plugins via configuration using `Oft.builder().addPlugin(name, jars...)` +* #612: Add support for Visual Basic in the source tag importer ## Documentation -- #604: Fixed link to Product Lifecycle in SECURITY.md -- #605: Added automatic lateral navigation to the user guide documentation -- #606: Fixed typo in AGENTS.md for "functions" -- #608: Fixed formatting and updated links in README.md -- #614: Fixed markdown syntax in the AI agent skill +* #604: Fixed link to Product Lifecycle in SECURITY.md +* #605: Added automatic lateral navigation to the user guide documentation +* #606: Fixed typo in AGENTS.md for "functions" +* #608: Fixed formatting and updated links in README.md +* #614: Fixed markdown syntax in the AI agent skill 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 000000000..d68170b04 --- /dev/null +++ b/doc/changesets/610-allow-adding-plugins-via-configuration.md @@ -0,0 +1,124 @@ +# 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(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. +* 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 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 `Plugin.of(...)` 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 `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 +- [ ] 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 a `ServiceLoaderConfig` +- [ ] Add `ServiceFactory(ServiceLoaderConfig)` constructor and keep the no-arg constructor + for `Oft.create()` + +### Verification + +- [ ] `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; 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`) + +### 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` diff --git a/doc/developer_guide/developer_guide.md b/doc/developer_guide/developer_guide.md index e0ff80f6e..24339e809 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" } ``` diff --git a/doc/spec/design.md b/doc/spec/design.md index dbb96da42..4fe0b01d7 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 6d96d0d3b..223638097 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 450b600ff..de056c817 100644 --- a/doc/user_guide/oft_api/using_oft_from_java.md +++ b/doc/user_guide/oft_api/using_oft_from_java.md @@ -124,3 +124,23 @@ 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: + +```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. diff --git a/exporter/common/.settings/org.eclipse.jdt.core.prefs b/exporter/common/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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/common/.settings/org.eclipse.jdt.ui.prefs b/exporter/common/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/exporter/specobject/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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/exporter/specobject/.settings/org.eclipse.jdt.ui.prefs b/exporter/specobject/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/importer/gherkin/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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/gherkin/.settings/org.eclipse.jdt.ui.prefs b/importer/gherkin/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/importer/lightweightmarkup/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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/lightweightmarkup/.settings/org.eclipse.jdt.ui.prefs b/importer/lightweightmarkup/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/importer/markdown/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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/markdown/.settings/org.eclipse.jdt.ui.prefs b/importer/markdown/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/importer/restructuredtext/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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/restructuredtext/.settings/org.eclipse.jdt.ui.prefs b/importer/restructuredtext/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/importer/specobject/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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/specobject/.settings/org.eclipse.jdt.ui.prefs b/importer/specobject/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/importer/tag-importer-common/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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-importer-common/.settings/org.eclipse.jdt.ui.prefs b/importer/tag-importer-common/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/importer/tag/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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/tag/.settings/org.eclipse.jdt.ui.prefs b/importer/tag/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/importer/xmlparser/.settings/org.eclipse.jdt.core.prefs index 8add83f71..974b88fd1 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/xmlparser/.settings/org.eclipse.jdt.ui.prefs b/importer/xmlparser/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/importer/zip/.settings/org.eclipse.jdt.core.prefs index d209b54c4..d9c635a3b 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/importer/zip/.settings/org.eclipse.jdt.ui.prefs b/importer/zip/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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/parent/pom.xml b/parent/pom.xml index 12d12c469..3b1cbe8b3 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/.settings/org.eclipse.jdt.core.prefs b/product/.settings/org.eclipse.jdt.core.prefs index 7c61bbcba..3d2285dd2 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/product/.settings/org.eclipse.jdt.ui.prefs b/product/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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/product/src/test/java/org/itsallcode/openfasttrace/TestAllServicesAvailable.java b/product/src/test/java/org/itsallcode/openfasttrace/TestAllServicesAvailable.java index 381bf5d63..4026abbec 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/ServiceLoaderFactoryIT.java b/product/src/test/java/org/itsallcode/openfasttrace/core/serviceloader/ServiceLoaderFactoryIT.java index 5fcad73f3..59e81db0a 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 @@ -42,7 +42,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 +116,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(); } 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 98ad3c447..ae8e2c8d0 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 79967154e..fd8664da1 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 diff --git a/reporter/aspec/.settings/org.eclipse.jdt.core.prefs b/reporter/aspec/.settings/org.eclipse.jdt.core.prefs index bfbe09007..6f26e9072 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/aspec/.settings/org.eclipse.jdt.ui.prefs b/reporter/aspec/.settings/org.eclipse.jdt.ui.prefs index 8f5db901b..2dc86ae5a 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.core.prefs b/reporter/html/.settings/org.eclipse.jdt.core.prefs index bfbe09007..6f26e9072 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/html/.settings/org.eclipse.jdt.ui.prefs b/reporter/html/.settings/org.eclipse.jdt.ui.prefs index 8f5db901b..2dc86ae5a 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.core.prefs b/reporter/plaintext/.settings/org.eclipse.jdt.core.prefs index c033839cb..d7f2f9559 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/reporter/plaintext/.settings/org.eclipse.jdt.ui.prefs b/reporter/plaintext/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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.core.prefs b/testutil/.settings/org.eclipse.jdt.core.prefs index e0ea780f8..1e0eb0bb9 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 diff --git a/testutil/.settings/org.eclipse.jdt.ui.prefs b/testutil/.settings/org.eclipse.jdt.ui.prefs index a23c50a8f..cd7ee8e5a 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