1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-22 06:02:11 +02:00

Revert "Bug 489563 - API change for Language Settings Providers."

This reverts the changes we've made for language settings providers
so that I can start again with a cleaner approach.

Change-Id: Icddd5a465a8f217594af5b07011a56bf1dfdf014
This commit is contained in:
Doug Schaefer 2016-03-22 10:19:26 -04:00
parent 52432d7370
commit c29243b187
52 changed files with 5351 additions and 5900 deletions

View file

@ -25,10 +25,8 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
import org.eclipse.cdt.core.testplugin.ResourceHelper;
import org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.Adapters;
import org.junit.Test;
/**
@ -63,8 +61,6 @@ public class LibtoolGCCBuildCommandParserTest {
IProject project = ResourceHelper.createCDTProjectWithConfig(projectName);
ICConfigurationDescription[] cfgDescriptions = getConfigurationDescriptions(project);
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
IFile file1 = ResourceHelper.createFile(project, "file1.cpp");
IFile file2 = ResourceHelper.createFile(project, "file2.cpp");
@ -81,11 +77,11 @@ public class LibtoolGCCBuildCommandParserTest {
parser.processLine("libtool: compile: g++ -I/path0 file2.cpp");
parser.processLine("libtool: compile: cc -I/path0 file3.cpp");
parser.shutdown();
List<ICLanguageSettingEntry> entries = parser.getSettingEntries(config, file1, languageId);
List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file1, languageId);
assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0));
entries = parser.getSettingEntries(config, file2, languageId);
entries = parser.getSettingEntries(cfgDescription, file2, languageId);
assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0));
entries = parser.getSettingEntries(config, file3, languageId);
entries = parser.getSettingEntries(cfgDescription, file3, languageId);
assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0));
}

View file

@ -1,3 +1,4 @@
#Thu Oct 08 20:38:59 EDT 2009
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
@ -84,6 +85,262 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=16
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=110
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
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.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=110
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

View file

@ -1,2 +0,0 @@
eclipse.preferences.version=1
formatter_settings_version=12

View file

@ -47,9 +47,7 @@ import org.eclipse.cdt.internal.core.envvar.UserDefinedEnvironmentSupplier;
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
import org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector;
import org.eclipse.cdt.utils.envvar.StorableEnvironment;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@ -85,12 +83,10 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
protected List<String> parseOptions(String line) {
return null;
}
@Override
protected AbstractOptionParser[] getOptionParsers() {
return null;
}
@Override
protected String getCompilerCommand(String languageId) {
return null;
@ -105,7 +101,6 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
protected void startupForLanguage(String languageId) throws CoreException {
super.startupForLanguage(languageId);
}
@Override
protected void shutdownForLanguage() {
super.shutdownForLanguage();
@ -121,7 +116,6 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
super.execute();
waitForProviderToFinish();
}
protected boolean isExecuted() {
return isExecuted;
}
@ -134,19 +128,15 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
private int executedCount = 0;
@Override
public void startup(ICConfigurationDescription cfgDescription, IWorkingDirectoryTracker cwdTracker)
throws CoreException {
public void startup(ICConfigurationDescription cfgDescription, IWorkingDirectoryTracker cwdTracker) throws CoreException {
executedCount++;
super.startup(cfgDescription, cwdTracker);
}
@Override
public MockBuiltinSpecsDetectorEnvironmentChangeListener cloneShallow()
throws CloneNotSupportedException {
public MockBuiltinSpecsDetectorEnvironmentChangeListener cloneShallow() throws CloneNotSupportedException {
MockBuiltinSpecsDetectorEnvironmentChangeListener clone = (MockBuiltinSpecsDetectorEnvironmentChangeListener) super.cloneShallow();
return clone;
}
@Override
public MockBuiltinSpecsDetectorEnvironmentChangeListener clone() throws CloneNotSupportedException {
MockBuiltinSpecsDetectorEnvironmentChangeListener clone = (MockBuiltinSpecsDetectorEnvironmentChangeListener) super.clone();
@ -168,21 +158,17 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
protected boolean validateEnvironment() {
return false;
}
@Override
protected void execute() {
super.execute();
sampleEnvVarValue = environmentMap.get(ENV_SAMPLE);
}
@Override
public MockBuiltinSpecsDetectorEnvironmentChangeListener cloneShallow()
throws CloneNotSupportedException {
public MockBuiltinSpecsDetectorEnvironmentChangeListener cloneShallow() throws CloneNotSupportedException {
MockBuiltinSpecsDetectorEnvironmentChangeListener clone = (MockBuiltinSpecsDetectorEnvironmentChangeListener) super.cloneShallow();
clone.sampleEnvVarValue = sampleEnvVarValue;
return clone;
}
@Override
public MockBuiltinSpecsDetectorEnvironmentChangeListener clone() throws CloneNotSupportedException {
MockBuiltinSpecsDetectorEnvironmentChangeListener clone = (MockBuiltinSpecsDetectorEnvironmentChangeListener) super.clone();
@ -193,7 +179,6 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
protected boolean isExecuted() {
return isExecuted;
}
public String getSampleEnvVar() {
return sampleEnvVarValue;
}
@ -204,38 +189,28 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
*/
private class MockConsoleBuiltinSpecsDetector extends AbstractBuiltinSpecsDetector {
@SuppressWarnings("nls")
private final AbstractOptionParser[] optionParsers = { new MacroOptionParser("#define (\\S*) *(\\S*)",
"$1", "$2", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), };
private final AbstractOptionParser[] optionParsers = {
new MacroOptionParser("#define (\\S*) *(\\S*)", "$1", "$2", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY),
};
@Override
protected int runProgramForLanguage(String languageId, String command, String[] envp,
URI workingDirectoryURI, OutputStream consoleOut, OutputStream consoleErr,
IProgressMonitor monitor) throws CoreException, IOException {
protected int runProgramForLanguage(String languageId, String command, String[] envp, URI workingDirectoryURI, OutputStream consoleOut, OutputStream consoleErr, IProgressMonitor monitor) throws CoreException, IOException {
String line = "#define MACRO VALUE";
consoleOut.write((line + '\n').getBytes());
consoleOut.flush();
return ICommandLauncher.OK;
}
@Override
protected IStatus runForEachLanguage(IProgressMonitor monitor) {
return super.runForEachLanguage(monitor);
}
@Override
protected List<String> parseOptions(final String line) {
return new ArrayList<String>() {
{
add(line);
return new ArrayList<String>() {{ add(line); }};
}
};
}
@Override
protected AbstractOptionParser[] getOptionParsers() {
return optionParsers;
}
@Override
protected String getCompilerCommand(String languageId) {
return null;
@ -291,7 +266,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
assertEquals(PROVIDER_ID, provider.getId());
assertEquals(PROVIDER_NAME, provider.getName());
assertEquals(null, provider.getLanguageScope());
assertEquals(null, provider.getSettingEntries((IBuildConfiguration) null, null, null));
assertEquals(null, provider.getSettingEntries(null, null, null));
assertEquals("", provider.getCommand());
assertEquals(false, provider.isExecuted());
assertEquals(false, provider.isConsoleEnabled());
@ -305,15 +280,14 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
Map<String, String> properties = new HashMap<String, String>();
properties.put(ATTR_PARAMETER, CUSTOM_COMMAND_1);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
ICLanguageSettingEntry entry = new CMacroEntry("MACRO", "VALUE",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
ICLanguageSettingEntry entry = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
entries.add(entry);
provider.configureProvider(PROVIDER_ID, PROVIDER_NAME, languages, entries, properties);
assertEquals(PROVIDER_ID, provider.getId());
assertEquals(PROVIDER_NAME, provider.getName());
assertEquals(languages, provider.getLanguageScope());
assertEquals(entries, provider.getSettingEntries((IBuildConfiguration) null, null, null));
assertEquals(entries, provider.getSettingEntries(null, null, null));
assertEquals(CUSTOM_COMMAND_1, provider.getCommand());
assertEquals(false, provider.isConsoleEnabled());
assertEquals(false, provider.isExecuted());
@ -326,7 +300,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
provider.execute();
assertEquals(true, provider.isExecuted());
assertEquals(null, provider.getSettingEntries((IBuildConfiguration) null, null, null));
assertEquals(null, provider.getSettingEntries(null, null, null));
}
}
@ -340,7 +314,6 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
public MockDetectorCloneable clone() throws CloneNotSupportedException {
return (MockDetectorCloneable) super.clone();
}
@Override
public MockDetectorCloneable cloneShallow() throws CloneNotSupportedException {
return (MockDetectorCloneable) super.cloneShallow();
@ -353,8 +326,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
List<String> languages = new ArrayList<String>();
languages.add(LANGUAGE_ID);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
ICLanguageSettingEntry entry = new CMacroEntry("MACRO", "VALUE",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
ICLanguageSettingEntry entry = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
entries.add(entry);
// check clone after initialization
@ -412,9 +384,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
{
MockDetectorCloneable clone = provider.clone();
List<ICLanguageSettingEntry> entries2 = new ArrayList<ICLanguageSettingEntry>();
entries2.add(
new CMacroEntry("MACRO2", "VALUE2", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY));
clone.setSettingEntries((IBuildConfiguration) null, null, null, entries2);
entries2.add(new CMacroEntry("MACRO2", "VALUE2", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY));
clone.setSettingEntries(null, null, null, entries2);
assertFalse(provider.equals(clone));
}
@ -425,7 +396,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
assertEquals(false, clone.isExecuted());
assertFalse(provider2.equals(clone));
provider2.setSettingEntries((IBuildConfiguration) null, null, null, null);
provider2.setSettingEntries(null, null, null, null);
assertFalse(provider2.equals(clone));
clone.execute();
@ -493,7 +464,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
MockBuiltinSpecsDetectorExecutedFlag provider = new MockBuiltinSpecsDetectorExecutedFlag();
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(new CIncludePathEntry("path0", 1));
provider.setSettingEntries((IBuildConfiguration) null, null, null, entries);
provider.setSettingEntries(null, null, null, entries);
// serialize entries
Document doc = XmlUtil.newDocument();
rootElement = XmlUtil.appendElement(doc, ELEM_TEST);
@ -511,7 +482,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// load the XML to the new provider
provider.load(rootElement);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
assertNotNull(entries);
assertTrue(entries.size() > 0);
assertEquals(new CIncludePathEntry("path0", 1), entries.get(0));
@ -532,7 +503,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// execute provider
provider.execute();
List<ICLanguageSettingEntry> entries = provider.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
assertEquals(null, entries);
// executed provider should NOT appear as empty even with no entries set
assertEquals(false, provider.isEmpty());
@ -573,11 +544,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
MockConsoleBuiltinSpecsDetector provider = new MockConsoleBuiltinSpecsDetector();
provider.setLanguageScope(new ArrayList<String>() {
{
add(LANGUAGE_ID);
}
});
provider.setLanguageScope(new ArrayList<String>() {{add(LANGUAGE_ID);}});
// Run provider
provider.startup(cfgDescription, null);
@ -586,14 +553,12 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
assertFalse(provider.isEmpty());
List<ICLanguageSettingEntry> noentries = provider.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> noentries = provider.getSettingEntries(null, null, null);
assertNull(noentries);
// Check parsed entries
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(config, null, LANGUAGE_ID);
ICLanguageSettingEntry expected = new CMacroEntry("MACRO", "VALUE",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(cfgDescription, null, LANGUAGE_ID);
ICLanguageSettingEntry expected = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
assertEquals(expected, entries.get(0));
}
@ -603,11 +568,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
public void testAbstractBuiltinSpecsDetector_RunGlobal() throws Exception {
// Create provider
MockConsoleBuiltinSpecsDetector provider = new MockConsoleBuiltinSpecsDetector();
provider.setLanguageScope(new ArrayList<String>() {
{
add(LANGUAGE_ID);
}
});
provider.setLanguageScope(new ArrayList<String>() {{add(LANGUAGE_ID);}});
// Run provider
provider.startup(null, null);
@ -617,10 +578,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
assertFalse(provider.isEmpty());
// Check parsed entries
List<ICLanguageSettingEntry> entries =
provider.getSettingEntries((IBuildConfiguration) null, null, LANGUAGE_ID);
ICLanguageSettingEntry expected = new CMacroEntry("MACRO", "VALUE",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, LANGUAGE_ID);
ICLanguageSettingEntry expected = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
assertEquals(expected, entries.get(0));
}
@ -636,8 +595,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// Create provider
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = new MockBuiltinSpecsDetectorEnvironmentChangeListener();
// register environment listener on configuration - note that provider is not included in the
// configuration
// register environment listener on configuration - note that provider is not included in the configuration
provider.registerListener(cfgDescription);
waitForProviderToFinish();
assertEquals(true, provider.isExecuted());
@ -649,10 +607,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// Set an environment variable to the configuration
{
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault()
.getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable
.getActiveConfiguration();
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault().getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable.getActiveConfiguration();
// create and set sample environment variable in the configuration
IEnvironmentVariableManager envManager = CCorePlugin.getDefault().getBuildEnvironmentManager();
IContributedEnvironment contribEnv = envManager.getContributedEnvironment();
@ -679,10 +635,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// Set an environment variable to the configuration
{
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault()
.getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable
.getActiveConfiguration();
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault().getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable.getActiveConfiguration();
// create and set sample environment variable in the configuration
IEnvironmentVariableManager envManager = CCorePlugin.getDefault().getBuildEnvironmentManager();
IContributedEnvironment contribEnv = envManager.getContributedEnvironment();
@ -713,16 +667,13 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// Assign a provider to configuration
{
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault()
.getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable
.getActiveConfiguration();
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault().getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable.getActiveConfiguration();
// Create provider
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = new MockBuiltinSpecsDetectorEnvironmentChangeListener();
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable)
.setLanguageSettingProviders(providers);
((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(providers);
// Write to project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescriptionWritable);
@ -734,10 +685,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// Set environment variable to the configuration
{
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault()
.getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable
.getActiveConfiguration();
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault().getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable.getActiveConfiguration();
IEnvironmentVariableManager envManager = CCorePlugin.getDefault().getBuildEnvironmentManager();
IContributedEnvironment contribEnv = envManager.getContributedEnvironment();
@ -746,10 +695,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
contribEnv.addVariable(var, cfgDescriptionWritable);
assertEquals(var, envManager.getVariable(ENV_SAMPLE, cfgDescriptionWritable, true));
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable)
.getLanguageSettingProviders();
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = (MockBuiltinSpecsDetectorEnvironmentChangeListener) providers
.get(0);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders();
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = (MockBuiltinSpecsDetectorEnvironmentChangeListener) providers.get(0);
// unset "isExecuted" flag
provider.clear();
assertEquals(false, provider.isExecuted());
@ -763,8 +710,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// Check if the provider got executed
{
// check if environment variable got there
ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project,
false);
ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project, false);
ICConfigurationDescription cfgDescription = prjDescription.getActiveConfiguration();
IEnvironmentVariableManager envManager = CCorePlugin.getDefault().getBuildEnvironmentManager();
IEnvironmentVariable var = envManager.getVariable(ENV_SAMPLE, cfgDescription, true);
@ -772,10 +718,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
assertEquals(ENV_SAMPLE_VALUE_1, var.getValue());
// check if provider got executed with new value
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = (MockBuiltinSpecsDetectorEnvironmentChangeListener) providers
.get(0);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = (MockBuiltinSpecsDetectorEnvironmentChangeListener) providers.get(0);
assertEquals(true, provider.isExecuted());
assertEquals(ENV_SAMPLE_VALUE_1, provider.getSampleEnvVar());
}
@ -783,10 +727,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// Repeat one more time with different value of environment variable
// Set another environment variable to the configuration
{
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault()
.getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable
.getActiveConfiguration();
ICProjectDescription prjDescriptionWritable = CoreModel.getDefault().getProjectDescription(project, true);
ICConfigurationDescription cfgDescriptionWritable = prjDescriptionWritable.getActiveConfiguration();
IEnvironmentVariableManager envManager = CCorePlugin.getDefault().getBuildEnvironmentManager();
IContributedEnvironment contribEnv = envManager.getContributedEnvironment();
@ -795,10 +737,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
contribEnv.addVariable(var, cfgDescriptionWritable);
assertEquals(var, envManager.getVariable(ENV_SAMPLE, cfgDescriptionWritable, true));
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable)
.getLanguageSettingProviders();
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = (MockBuiltinSpecsDetectorEnvironmentChangeListener) providers
.get(0);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders();
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = (MockBuiltinSpecsDetectorEnvironmentChangeListener) providers.get(0);
// unset "isExecuted" flag
provider.clear();
assertEquals(false, provider.isExecuted());
@ -812,8 +752,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// Check if the provider got executed
{
// check if environment variable got there
ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project,
false);
ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project, false);
ICConfigurationDescription cfgDescription = prjDescription.getActiveConfiguration();
IEnvironmentVariableManager envManager = CCorePlugin.getDefault().getBuildEnvironmentManager();
IEnvironmentVariable var = envManager.getVariable(ENV_SAMPLE, cfgDescription, true);
@ -821,10 +760,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
assertEquals(ENV_SAMPLE_VALUE_2, var.getValue());
// check if provider got executed with new value
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = (MockBuiltinSpecsDetectorEnvironmentChangeListener) providers
.get(0);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
MockBuiltinSpecsDetectorEnvironmentChangeListener provider = (MockBuiltinSpecsDetectorEnvironmentChangeListener) providers.get(0);
assertEquals(true, provider.isExecuted());
assertEquals(ENV_SAMPLE_VALUE_2, provider.getSampleEnvVar());
}
@ -906,6 +843,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
long lastModifiedUpdated = compiler.lastModified();
assertTrue(lastModifiedUpdated != lastModified);
// Check that an event triggers rerun after upgrade
provider.handleEvent(null);
waitForProviderToFinish();
@ -1002,30 +940,18 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
*/
public void testAbstractBuiltinSpecsDetector_GroupSettings() throws Exception {
// define benchmarks
final CIncludePathEntry includePath_1 = new CIncludePathEntry("/include/path_1",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CIncludePathEntry includePath_2 = new CIncludePathEntry("/include/path_2",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CIncludeFileEntry includeFile_1 = new CIncludeFileEntry(new Path("/include.file1"),
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CIncludeFileEntry includeFile_2 = new CIncludeFileEntry(new Path("/include.file2"),
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CMacroEntry macro_1 = new CMacroEntry("MACRO_1", "",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CMacroEntry macro_2 = new CMacroEntry("MACRO_2", "",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.UNDEFINED);
final CMacroFileEntry macroFile_1 = new CMacroFileEntry(new Path("/macro.file1"),
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CMacroFileEntry macroFile_2 = new CMacroFileEntry(new Path("/macro.file2"),
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryPathEntry libraryPath_1 = new CLibraryPathEntry(new Path("/lib/path_1"),
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryPathEntry libraryPath_2 = new CLibraryPathEntry(new Path("/lib/path_2"),
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryFileEntry libraryFile_1 = new CLibraryFileEntry("lib_1.a",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryFileEntry libraryFile_2 = new CLibraryFileEntry("lib_2.a",
ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CIncludePathEntry includePath_1 = new CIncludePathEntry("/include/path_1", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CIncludePathEntry includePath_2 = new CIncludePathEntry("/include/path_2", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CIncludeFileEntry includeFile_1 = new CIncludeFileEntry(new Path("/include.file1"), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CIncludeFileEntry includeFile_2 = new CIncludeFileEntry(new Path("/include.file2"), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CMacroEntry macro_1 = new CMacroEntry("MACRO_1", "", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CMacroEntry macro_2 = new CMacroEntry("MACRO_2", "", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY |ICSettingEntry.UNDEFINED);
final CMacroFileEntry macroFile_1 = new CMacroFileEntry(new Path("/macro.file1"), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CMacroFileEntry macroFile_2 = new CMacroFileEntry(new Path("/macro.file2"), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryPathEntry libraryPath_1 = new CLibraryPathEntry(new Path("/lib/path_1"), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryPathEntry libraryPath_2 = new CLibraryPathEntry(new Path("/lib/path_2"), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryFileEntry libraryFile_1 = new CLibraryFileEntry("lib_1.a", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryFileEntry libraryFile_2 = new CLibraryFileEntry("lib_2.a", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
// Define mock detector adding unorganized entries
MockBuiltinSpecsDetector provider = new MockBuiltinSpecsDetector() {
@ -1056,7 +982,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
provider.shutdown();
// compare benchmarks, expected well-sorted
List<ICLanguageSettingEntry> entries = provider.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
int i = 0;
assertEquals(includePath_1, entries.get(i++));

View file

@ -36,7 +36,6 @@ import org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBu
import org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector;
import org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector;
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
@ -198,7 +197,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CMacroEntry("MACRO", null, ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -215,7 +214,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -232,7 +231,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CMacroEntry("MACRO", "(3)", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -252,7 +251,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
int index = 0;
assertEquals(new CMacroEntry("MACRO_1", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(index++));
assertEquals(new CMacroEntry("MACRO_2", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(index++));
@ -273,7 +272,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CMacroEntry("MACRO()", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -290,7 +289,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CMacroEntry("MACRO(X)", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -307,7 +306,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CMacroEntry("MACRO(P1, P2)", "VALUE(P1, P2)", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -324,7 +323,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CMacroEntry("MACRO(P1, P2)", null, ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -343,7 +342,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
int index = 0;
assertEquals(new CMacroEntry("MACRO_1(P1, P2)", "VALUE(P1, P2)", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(index++));
assertEquals(new CMacroEntry("MACRO_2(P1, P2)", "VALUE(P1, P2)", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(index++));
@ -390,7 +389,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
int index = 0;
assertEquals(new CIncludePathEntry(loc+"/local/include", ICSettingEntry.LOCAL | ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(index++));
assertEquals(new CIncludePathEntry(loc+"/usr/include", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(index++));
@ -423,7 +422,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
int index = 0;
assertEquals(new CIncludePathEntry(loc+"/local/include", ICSettingEntry.LOCAL | ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(index++));
assertEquals(new CIncludePathEntry(loc+"/usr/include", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(index++));
@ -462,7 +461,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdown();
// check populated entries
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CIncludePathEntry(dir2.removeLastSegments(1), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -492,7 +491,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdownForLanguage();
detector.shutdown();
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
int index = 0;
assertEquals(new CIncludePathEntry(loc+"/usr/include", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(index++));
assertEquals(index, entries.size());
@ -521,7 +520,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdown();
// check populated entries
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CIncludePathEntry(new Path(windowsLocation), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -556,7 +555,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
detector.shutdown();
// check populated entries
List<ICLanguageSettingEntry> entries = detector.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
assertEquals(new CIncludePathEntry(new Path(windowsLocation), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), entries.get(0));
assertEquals(1, entries.size());
}
@ -581,7 +580,7 @@ public class GCCBuiltinSpecsDetectorTest extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations();
assertTrue(cfgDescriptions.length > 0);
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
List<ILanguageSettingsProvider> providers = new ArrayList<>();
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(detector);
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// change the default command in all the tools of the toolchain

View file

@ -25,7 +25,6 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.internal.core.language.settings.providers.ReferencedProjectsLanguageSettingsProvider;
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@ -56,11 +55,9 @@ public class LanguageSettingsProvidersMBSTest extends BaseTestCase {
* Test that null arguments don't crash the provider.
*/
public void testNulls() throws Exception {
ILanguageSettingsProvider provider = LanguageSettingsManager
.getWorkspaceProvider(MBS_LANGUAGE_SETTINGS_PROVIDER_ID);
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(MBS_LANGUAGE_SETTINGS_PROVIDER_ID);
assertNotNull(provider);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries((IBuildConfiguration) null, null,
null);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
assertEquals(null, entries);
}
@ -79,8 +76,7 @@ public class LanguageSettingsProvidersMBSTest extends BaseTestCase {
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
{
ILanguageSettingsProvider provider = providers.get(0);
String id = provider.getId();
@ -114,8 +110,8 @@ public class LanguageSettingsProvidersMBSTest extends BaseTestCase {
}
/**
* Test that no unnecessary storage file is created for language settings for default set of language
* settings providers.
* Test that no unnecessary storage file is created for language settings for default set
* of language settings providers.
*/
public void testProjectPersistence_Defaults() throws Exception {
// create a new project
@ -129,10 +125,8 @@ public class LanguageSettingsProvidersMBSTest extends BaseTestCase {
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getDefaultLanguageSettingsProvidersIds();
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(defaultIds.length, providers.size());
for (int i = 0; i < defaultIds.length; i++) {
assertEquals(providers.get(i).getId(), defaultIds[i]);
@ -146,8 +140,7 @@ public class LanguageSettingsProvidersMBSTest extends BaseTestCase {
assertEquals(false, xmlStorageFile.getParent().exists()); // .settings folder
// no settings file in workspace area
String xmlPrjWspStorageFileLocation = LanguageSettingsPersistenceProjectTests
.getStoreLocationInWorkspaceArea(project.getName() + '.' + LANGUAGE_SETTINGS_WORKSPACE_XML);
String xmlPrjWspStorageFileLocation = LanguageSettingsPersistenceProjectTests.getStoreLocationInWorkspaceArea(project.getName()+'.'+LANGUAGE_SETTINGS_WORKSPACE_XML);
java.io.File xmlStorageFilePrjWsp = new java.io.File(xmlPrjWspStorageFileLocation);
assertEquals(false, xmlStorageFilePrjWsp.exists());
}
@ -167,10 +160,8 @@ public class LanguageSettingsProvidersMBSTest extends BaseTestCase {
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
((ILanguageSettingsProvidersKeeper) cfgDescription)
.setLanguageSettingProviders(new ArrayList<ILanguageSettingsProvider>());
assertTrue(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders()
.size() == 0);
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(new ArrayList<ILanguageSettingsProvider>());
assertTrue(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders().size() == 0);
}
CoreModel.getDefault().setProjectDescription(project, prjDescription);
@ -180,8 +171,7 @@ public class LanguageSettingsProvidersMBSTest extends BaseTestCase {
assertEquals(true, xmlStorageFile.exists());
// no settings file in workspace area
String xmlPrjWspStorageFileLocation = LanguageSettingsPersistenceProjectTests
.getStoreLocationInWorkspaceArea(project.getName() + '.' + LANGUAGE_SETTINGS_WORKSPACE_XML);
String xmlPrjWspStorageFileLocation = LanguageSettingsPersistenceProjectTests.getStoreLocationInWorkspaceArea(project.getName()+'.'+LANGUAGE_SETTINGS_WORKSPACE_XML);
java.io.File xmlStorageFilePrjWsp = new java.io.File(xmlPrjWspStorageFileLocation);
assertEquals(false, xmlStorageFilePrjWsp.exists());

View file

@ -1,3 +1,4 @@
#Thu Apr 29 13:15:20 EDT 2010
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
@ -80,6 +81,262 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=16
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=110
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
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.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=110
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

View file

@ -1,2 +0,0 @@
eclipse.preferences.version=1
formatter_settings_version=12

View file

@ -31,7 +31,6 @@ import org.eclipse.cdt.core.settings.model.ICSettingBase;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
@ -42,17 +41,10 @@ import org.eclipse.core.variables.VariablesPlugin;
/**
* Implementation of language settings provider for CDT Managed Build System.
*/
public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase
implements ILanguageSettingsBroadcastingProvider {
public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsBroadcastingProvider {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
if (config == null || rc == null) {
return null;
}
ICConfigurationDescription cfgDescription = config.getAdapter(ICConfigurationDescription.class);
if (cfgDescription == null) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (cfgDescription == null || rc == null) {
return null;
}
@ -64,7 +56,7 @@ public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase
if (ls != null) {
languageSettings = new ICLanguageSetting[] { ls };
} else {
return getSettingEntries(config, rc.getParent(), languageId);
return getSettingEntries(cfgDescription, rc.getParent(), languageId);
}
} else {
ICResourceDescription rcDescription = cfgDescription.getResourceDescription(projectPath, false);
@ -82,8 +74,7 @@ public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase
int kindsBits = langSetting.getSupportedEntryKinds();
for (int kind=1; kind <= kindsBits; kind <<= 1) {
if ((kindsBits & kind) != 0) {
List<ICLanguageSettingEntry> additions = langSetting
.getSettingEntriesList(kind);
List<ICLanguageSettingEntry> additions = langSetting.getSettingEntriesList(kind);
for (ICLanguageSettingEntry entry : additions) {
if (entry instanceof ICPathEntry) {
// have to use getName() rather than getLocation() and not use IPath operations to avoid collapsing ".."
@ -92,25 +83,16 @@ public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase
// We need to add project-rooted entry for relative path as MBS counts it this way in some UI
// The relative entry below also should be added for indexer to resolve from source file locations
ICdtVariableManager varManager = CCorePlugin.getDefault()
.getCdtVariableManager();
ICdtVariableManager varManager = CCorePlugin.getDefault().getCdtVariableManager();
try {
// Substitute build/environment variables
String location = varManager.resolveValue(pathStr, "", null, //$NON-NLS-1$
cfgDescription);
String location = varManager.resolveValue(pathStr, "", null, cfgDescription); //$NON-NLS-1$
if (!new Path(location).isAbsolute()) {
IStringVariableManager mngr = VariablesPlugin.getDefault()
.getStringVariableManager();
String projectRootedPath = mngr
.generateVariableExpression("workspace_loc", //$NON-NLS-1$
rc.getProject().getName())
+ Path.SEPARATOR + pathStr;
IStringVariableManager mngr = VariablesPlugin.getDefault().getStringVariableManager();
String projectRootedPath = mngr.generateVariableExpression("workspace_loc", rc.getProject().getName()) + Path.SEPARATOR + pathStr; //$NON-NLS-1$
// clear "RESOLVED" flag
int flags = entry.getFlags() & ~(ICSettingEntry.RESOLVED
| ICSettingEntry.VALUE_WORKSPACE_PATH);
ICLanguageSettingEntry projectRootedEntry = (ICLanguageSettingEntry) CDataUtil
.createEntry(kind, projectRootedPath,
projectRootedPath, null, flags);
int flags = entry.getFlags() & ~(ICSettingEntry.RESOLVED | ICSettingEntry.VALUE_WORKSPACE_PATH);
ICLanguageSettingEntry projectRootedEntry = (ICLanguageSettingEntry) CDataUtil.createEntry(kind, projectRootedPath, projectRootedPath, null, flags);
if (! list.contains(projectRootedEntry)) {
list.add(projectRootedEntry);
}
@ -167,12 +149,10 @@ public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase
public boolean isEmpty() {
return false;
}
@Override
public LanguageSettingsStorage clone() throws CloneNotSupportedException {
return this;
}
@Override
public boolean equals(Object obj) {
// Note that this always triggers change event even if nothing changed in MBS

View file

@ -23,21 +23,17 @@ import org.eclipse.cdt.core.errorparsers.RegexErrorPattern;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Adapters;
/**
* Abstract class for providers parsing compiler option from build command when present in build
* output.
* Abstract class for providers parsing compiler option from build command when present in build output.
* <p>
* <strong>EXPERIMENTAL</strong>. This class interface is not stable yet as it is not currently (CDT
* 8.1, Juno) clear how it may need to be used in future. There is no guarantee that this API will
* work or that it will remain the same. Please do not use this API without consulting with the CDT
* team.
* <strong>EXPERIMENTAL</strong>. This class interface is not stable yet as
* it is not currently (CDT 8.1, Juno) clear how it may need to be used in future.
* There is no guarantee that this API will work or that it will remain the same.
* Please do not use this API without consulting with the CDT team.
* </p>
*
* @noextend This class is not intended to be subclassed by clients.
*
* @since 8.1
@ -51,11 +47,12 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
private static final String VALUE_FOLDER_SCOPE = "per-folder"; //$NON-NLS-1$
private static final String VALUE_PROJECT_SCOPE = "per-project"; //$NON-NLS-1$
private static final String LEADING_PATH_PATTERN = "\\S+[/\\\\]"; //$NON-NLS-1$
/**
* "foo" Using look-ahead and look-behind to resolve ambiguity with "\"
* {@link #QUOTE_BSLASH_QUOTE}
* "foo"
* Using look-ahead and look-behind to resolve ambiguity with "\" {@link #QUOTE_BSLASH_QUOTE}
*/
private static final String QUOTE = "(\"(?!\\\\).*?(?<!\\\\)\")"; //$NON-NLS-1$
/** \"foo\" */
@ -65,8 +62,7 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
/** "\"foo\"" */
private static final String QUOTE_BSLASH_QUOTE = "(\"\\\\\".*?\\\\\"\")"; //$NON-NLS-1$
private static final Pattern OPTIONS_PATTERN = Pattern.compile("-[^\\s\"'\\\\]*(\\s*(" + QUOTE + "|" //$NON-NLS-1$ //$NON-NLS-2$
+ QUOTE_BSLASH_QUOTE + "|" + BSLASH_QUOTE + "|" + SINGLE_QUOTE + "|([^-\\s][^\\s]+)))?"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
private static final Pattern OPTIONS_PATTERN = Pattern.compile("-[^\\s\"'\\\\]*(\\s*(" + QUOTE +"|" + QUOTE_BSLASH_QUOTE + "|" + BSLASH_QUOTE + "|" + SINGLE_QUOTE + "|([^-\\s][^\\s]+)))?"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$<
private static final int OPTION_GROUP = 0;
public enum ResourceScope {
@ -81,8 +77,7 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
@SuppressWarnings("nls")
private static final String[] COMPILER_COMMAND_PATTERN_TEMPLATES = {
"${COMPILER_PATTERN}.*\\s" + "()([^'\"\\s]*\\.${EXTENSIONS_PATTERN})(\\s.*)?[\r\n]*", // compiling unquoted file
"${COMPILER_PATTERN}.*\\s"
+ "(['\"])(.*\\.${EXTENSIONS_PATTERN})\\${COMPILER_GROUPS+1}(\\s.*)?[\r\n]*" // compiling quoted file
"${COMPILER_PATTERN}.*\\s" + "(['\"])(.*\\.${EXTENSIONS_PATTERN})\\${COMPILER_GROUPS+1}(\\s.*)?[\r\n]*" // compiling quoted file
};
private static final int FILE_GROUP = 2;
@ -93,9 +88,10 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
private String partialLine;
/**
* The compiler command pattern without specifying compiler options. The options are intended to
* be handled with option parsers, see {@link #getOptionParsers()}. This is regular expression
* pattern.
* The compiler command pattern without specifying compiler options.
* The options are intended to be handled with option parsers,
* see {@link #getOptionParsers()}.
* This is regular expression pattern.
*
* @return the compiler command pattern.
*/
@ -105,9 +101,8 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
/**
* Set compiler command pattern for the provider. See {@link #getCompilerPattern()}.
*
* @param commandPattern
* - value of the command pattern to set. This is regular expression pattern.
* @param commandPattern - value of the command pattern to set.
* This is regular expression pattern.
*/
public void setCompilerPattern(String commandPattern) {
setProperty(ATTR_PARAMETER, commandPattern);
@ -123,15 +118,11 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
}
/**
* @return resource scope of the entries, i.e. level in resource hierarchy where language
* settings entries will be applied by the provider. Resource scope can be one of the
* following: <br>
* - {@code AbstractBuildCommandParser.ResourceScope.FILE} - apply entries to the file
* being parsed. <br>
* - {@code AbstractBuildCommandParser.ResourceScope.FOLDER} - apply entries to the
* enclosing folder. <br>
* - {@code AbstractBuildCommandParser.ResourceScope.PROJECT} - apply entries to the
* project level.
* @return resource scope of the entries, i.e. level in resource hierarchy where language settings entries
* will be applied by the provider. Resource scope can be one of the following:
* <br>- {@code AbstractBuildCommandParser.ResourceScope.FILE} - apply entries to the file being parsed.
* <br>- {@code AbstractBuildCommandParser.ResourceScope.FOLDER} - apply entries to the enclosing folder.
* <br>- {@code AbstractBuildCommandParser.ResourceScope.PROJECT} - apply entries to the project level.
*/
public ResourceScope getResourceScope() {
if (resourceScope == null) {
@ -150,17 +141,13 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
}
/**
* Set resource scope of the entries, i.e. level in resource hierarchy where language settings
* entries will be applied by the provider.
* Set resource scope of the entries, i.e. level in resource hierarchy where language settings entries
* will be applied by the provider.
*
* @param rcScope
* - resource scope can be one of the following: <br>
* - {@code AbstractBuildCommandParser.ResourceScope.FILE} - apply entries to the
* file being parsed. <br>
* - {@code AbstractBuildCommandParser.ResourceScope.FOLDER} - apply entries to the
* enclosing folder. <br>
* - {@code AbstractBuildCommandParser.ResourceScope.PROJECT} - apply entries to the
* project level.
* @param rcScope - resource scope can be one of the following:
* <br>- {@code AbstractBuildCommandParser.ResourceScope.FILE} - apply entries to the file being parsed.
* <br>- {@code AbstractBuildCommandParser.ResourceScope.FOLDER} - apply entries to the enclosing folder.
* <br>- {@code AbstractBuildCommandParser.ResourceScope.PROJECT} - apply entries to the project level.
*/
public void setResourceScope(ResourceScope rcScope) {
resourceScope = rcScope;
@ -200,13 +187,11 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
}
IBuildConfiguration currentConfig = Adapters.adapt(currentCfgDescription, IBuildConfiguration.class);
setSettingEntries(currentConfig, rc, currentLanguageId, entries);
setSettingEntries(currentCfgDescription, rc, currentLanguageId, entries);
}
/**
* Adjust count for file group taking into consideration extra groups added by
* {@link #getCompilerPatternExtended()}.
* Adjust count for file group taking into consideration extra groups added by {@link #getCompilerPatternExtended()}.
*/
private int adjustFileGroup() {
return countGroups(getCompilerPatternExtended()) + FILE_GROUP;
@ -217,9 +202,10 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
*/
private String makePattern(String template) {
@SuppressWarnings("nls")
String pattern = template.replace("${COMPILER_PATTERN}", getCompilerPatternExtended())
.replace("${EXTENSIONS_PATTERN}", getPatternFileExtensions()).replace("${COMPILER_GROUPS+1}",
new Integer(countGroups(getCompilerPatternExtended()) + 1).toString());
String pattern = template
.replace("${COMPILER_PATTERN}", getCompilerPatternExtended())
.replace("${EXTENSIONS_PATTERN}", getPatternFileExtensions())
.replace("${COMPILER_GROUPS+1}", new Integer(countGroups(getCompilerPatternExtended()) + 1).toString());
return pattern;
}
@ -298,8 +284,8 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
// If the character preceding the '\' is also '\', it's not a line continuation -
// the first '\' escapes the second.
if (line.length() > 0 && line.charAt(line.length() - 1) == '\\'
&& (line.length() == 1 || line.charAt(line.length() - 2) != '\\')) {
if (line.length() > 0 && line.charAt(line.length() - 1) == '\\' &&
(line.length() == 1 || line.charAt(line.length() - 2) != '\\')) {
// Line ends in line continuation - save it for later.
String fragment = line.substring(0, line.length() - 1);
if (partialLine == null) {
@ -317,18 +303,14 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
}
/**
* Trivial Error Parser which allows highlighting of output lines matching the patterns of this
* parser. Intended for better troubleshooting experience. Implementers are supposed to add the
* error parser via extension point {@code org.eclipse.cdt.core.ErrorParser}.
* Trivial Error Parser which allows highlighting of output lines matching the patterns
* of this parser. Intended for better troubleshooting experience.
* Implementers are supposed to add the error parser via extension point {@code org.eclipse.cdt.core.ErrorParser}.
*/
protected static abstract class AbstractBuildCommandPatternHighlighter extends RegexErrorParser
implements IErrorParser2 {
protected static abstract class AbstractBuildCommandPatternHighlighter extends RegexErrorParser implements IErrorParser2 {
/**
* Constructor.
*
* @param parserId
* - build command parser ID specified in the extension
* {@code org.eclipse.cdt.core.LanguageSettingsProvider}.
* @param parserId - build command parser ID specified in the extension {@code org.eclipse.cdt.core.LanguageSettingsProvider}.
*/
public AbstractBuildCommandPatternHighlighter(String parserId) {
init(parserId);
@ -336,20 +318,16 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
/**
* Initialize the error parser.
*
* @param parserId
* - language settings provider (the build command parser) ID.
* @param parserId - language settings provider (the build command parser) ID.
*/
protected void init(String parserId) {
AbstractBuildCommandParser buildCommandParser = (AbstractBuildCommandParser) LanguageSettingsManager
.getExtensionProviderCopy(parserId, false);
AbstractBuildCommandParser buildCommandParser = (AbstractBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(parserId, false);
if (buildCommandParser != null) {
for (String template : COMPILER_COMMAND_PATTERN_TEMPLATES) {
String pattern = buildCommandParser.makePattern(template);
String fileExpr = "$"+buildCommandParser.adjustFileGroup(); //$NON-NLS-1$
String descExpr = "$0"; //$NON-NLS-1$
addPattern(new RegexErrorPattern(pattern, fileExpr, null, descExpr, null,
IMarkerGenerator.SEVERITY_WARNING, true));
addPattern(new RegexErrorPattern(pattern, fileExpr, null, descExpr, null, IMarkerGenerator.SEVERITY_WARNING, true));
}
}
}
@ -360,4 +338,5 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
}
}
}

View file

@ -55,13 +55,11 @@ import org.eclipse.cdt.utils.CommandLineUtil;
import org.eclipse.cdt.utils.PathUtil;
import org.eclipse.cdt.utils.envvar.IEnvironmentChangeEvent;
import org.eclipse.cdt.utils.envvar.IEnvironmentChangeListener;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.resources.WorkspaceJob;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@ -79,14 +77,14 @@ import org.eclipse.core.runtime.jobs.Job;
import org.w3c.dom.Element;
/**
* Abstract parser capable to execute compiler command printing built-in compiler specs and parse built-in
* language settings out of it.
* Abstract parser capable to execute compiler command printing built-in compiler
* specs and parse built-in language settings out of it.
* <p>
* <strong>EXPERIMENTAL</strong>. This class interface is not stable yet as it is not currently (CDT 8.1,
* Juno) clear how it may need to be used in future. There is no guarantee that this API will work or that it
* will remain the same. Please do not use this API without consulting with the CDT team.
* <strong>EXPERIMENTAL</strong>. This class interface is not stable yet as
* it is not currently (CDT 8.1, Juno) clear how it may need to be used in future.
* There is no guarantee that this API will work or that it will remain the same.
* Please do not use this API without consulting with the CDT team.
* </p>
*
* @noextend This class is not intended to be subclassed by clients.
*
* @since 8.1
@ -161,15 +159,12 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
final String providerName = getName();
final String providerId = getId();
// Add markers in a job to avoid deadlocks
Job markerJob = new Job(ManagedMakeMessages
.getResourceString("AbstractBuiltinSpecsDetector.AddScannerDiscoveryMarkers")) { //$NON-NLS-1$
Job markerJob = new Job(ManagedMakeMessages.getResourceString("AbstractBuiltinSpecsDetector.AddScannerDiscoveryMarkers")) { //$NON-NLS-1$
@Override
protected IStatus run(IProgressMonitor monitor) {
// Avoid duplicates as different languages can generate identical errors
try {
IMarker[] markers = problemMarkerInfo.file.findMarkers(
SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER, false,
IResource.DEPTH_ZERO);
IMarker[] markers = problemMarkerInfo.file.findMarkers(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
for (IMarker marker : markers) {
int sev = ((Integer) marker.getAttribute(IMarker.SEVERITY)).intValue();
if (sev == problemMarkerInfo.severity) {
@ -180,31 +175,24 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
}
} catch (CoreException e) {
return new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
"Error checking markers.", e); //$NON-NLS-1$
return new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, "Error checking markers.", e); //$NON-NLS-1$
}
try {
IMarker marker = problemMarkerInfo.file
.createMarker(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER);
IMarker marker = problemMarkerInfo.file.createMarker(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER);
marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description);
marker.setAttribute(IMarker.SEVERITY, problemMarkerInfo.severity);
marker.setAttribute(SDMarkerGenerator.ATTR_PROVIDER, providerId);
if (problemMarkerInfo.file instanceof IWorkspaceRoot) {
String msgPreferences = ManagedMakeMessages.getFormattedString(
"AbstractBuiltinSpecsDetector.ScannerDiscoveryMarkerLocationPreferences", //$NON-NLS-1$
providerName);
String msgPreferences = ManagedMakeMessages.getFormattedString("AbstractBuiltinSpecsDetector.ScannerDiscoveryMarkerLocationPreferences", providerName); //$NON-NLS-1$
marker.setAttribute(IMarker.LOCATION, msgPreferences);
} else {
String msgProperties = ManagedMakeMessages.getFormattedString(
"AbstractBuiltinSpecsDetector.ScannerDiscoveryMarkerLocationProperties", //$NON-NLS-1$
providerName);
String msgProperties = ManagedMakeMessages.getFormattedString("AbstractBuiltinSpecsDetector.ScannerDiscoveryMarkerLocationProperties", providerName); //$NON-NLS-1$
marker.setAttribute(IMarker.LOCATION, msgProperties);
}
} catch (CoreException e) {
return new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
"Error adding markers.", e); //$NON-NLS-1$
return new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, "Error adding markers.", e); //$NON-NLS-1$
}
return Status.OK_STATUS;
@ -218,22 +206,19 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
/**
* Delete markers previously set by this provider for the resource.
*
* @param rc
* - resource to check markers.
* @param rc - resource to check markers.
*/
public void deleteMarkers(IResource rc) {
String providerId = getId();
try {
IMarker[] markers = rc.findMarkers(SCANNER_DISCOVERY_PROBLEM_MARKER, false,
IResource.DEPTH_ZERO);
IMarker[] markers = rc.findMarkers(SCANNER_DISCOVERY_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
for (IMarker marker : markers) {
if (providerId.equals(marker.getAttribute(ATTR_PROVIDER))) {
marker.delete();
}
}
} catch (CoreException e) {
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
"Error deleting markers.", e)); //$NON-NLS-1$
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, "Error deleting markers.", e)); //$NON-NLS-1$
}
}
@ -244,16 +229,13 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
*/
private class ConsoleParserAdapter implements ICBuildOutputParser {
@Override
public void startup(ICConfigurationDescription cfgDescription, IWorkingDirectoryTracker cwdTracker)
throws CoreException {
public void startup(ICConfigurationDescription cfgDescription, IWorkingDirectoryTracker cwdTracker) throws CoreException {
AbstractBuiltinSpecsDetector.this.cwdTracker = cwdTracker;
}
@Override
public boolean processLine(String line) {
return AbstractBuiltinSpecsDetector.this.processLine(line);
}
@Override
public void shutdown() {
AbstractBuiltinSpecsDetector.this.cwdTracker = null;
@ -261,12 +243,11 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
/**
* Compiler command without arguments. This value is used to replace macro ${COMMAND}. In particular, this
* method is implemented in {@link ToolchainBuiltinSpecsDetector} which retrieves the command from
* tool-chain.
* Compiler command without arguments. This value is used to replace macro ${COMMAND}.
* In particular, this method is implemented in {@link ToolchainBuiltinSpecsDetector}
* which retrieves the command from tool-chain.
*
* @param languageId
* - language ID.
* @param languageId - language ID.
* @return compiler command without arguments, i.e. compiler program.
*/
protected abstract String getCompilerCommand(String languageId);
@ -274,12 +255,13 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
/**
* The command to run. Some macros could be specified in there:
* <ul>
* <b>${COMMAND}</b> - compiler command without arguments (compiler program). Normally would come from the
* tool-chain.<br>
* <b>${COMMAND}</b> - compiler command without arguments (compiler program).
* Normally would come from the tool-chain.<br>
* <b>${INPUTS}</b> - path to spec file which will be placed in workspace area.<br>
* <b>${EXT}</b> - file extension calculated from language ID.
* </ul>
* The parameter could be taken from the extension in {@code plugin.xml} or from property file.
* The parameter could be taken from the extension
* in {@code plugin.xml} or from property file.
*
* @return the command to run or empty string if command is not defined.
*/
@ -289,9 +271,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
/**
* Set custom command for the provider. See {@link #getCommand()}.
*
* @param command
* - value of custom command to set.
* @param command - value of custom command to set.
*/
public void setCommand(String command) {
setProperty(ATTR_PARAMETER, command);
@ -307,22 +287,19 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
/**
* Enable or disable console output for this provider.
*
* @param enable
* - {@code true} to enable console output or {@code false} to disable.
* @param enable - {@code true} to enable console output or {@code false} to disable.
*/
public void setConsoleEnabled(boolean enable) {
isConsoleEnabled = enable;
}
/**
* Expand macros specified in the compiler command. See {@link #getCommand()} for the recognized list of
* macros.
* Expand macros specified in the compiler command. See {@link #getCommand()} for
* the recognized list of macros.
*
* @param languageId
* - language ID.
* @param languageId - language ID.
* @return - resolved command to run.
* @throws CoreException
* if something goes wrong.
* @throws CoreException if something goes wrong.
*/
protected String resolveCommand(String languageId) throws CoreException {
String cmd = getCommand();
@ -411,8 +388,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
@Override
public void startup(ICConfigurationDescription cfgDescription, IWorkingDirectoryTracker cwdTracker)
throws CoreException {
public void startup(ICConfigurationDescription cfgDescription, IWorkingDirectoryTracker cwdTracker) throws CoreException {
super.startup(cfgDescription, cwdTracker);
mappedRootURI = null;
@ -457,8 +433,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
if (location != null) {
java.io.File file = new java.io.File(location.toString());
try {
// handles symbolic links as java.io.File.getCanonicalPath() resolves symlinks on
// UNIX
// handles symbolic links as java.io.File.getCanonicalPath() resolves symlinks on UNIX
file = file.getCanonicalFile();
} catch (IOException e) {
ManagedBuilderCorePlugin.log(e);
@ -476,10 +451,12 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
/**
* This method does 2 related things: <br>
* 1. Validate environment, i.e. check that environment for running the command has not changed. If
* environment changed {@link #execute()} will rerun the command even if flag {@link #isExecuted} suggests
* that it was run already. <br>
* This method does 2 related things:
* <br>
* 1. Validate environment, i.e. check that environment for running the command has not changed.
* If environment changed {@link #execute()} will rerun the command even if flag {@link #isExecuted}
* suggests that it was run already.
* <br>
* 2. The relevant environment is cached here so the new one is validated against it at the next call.
* {@link #validateEnvironment()} will be called right before running the job to execute the command.
*
@ -496,8 +473,8 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
/**
* Execute provider's command which is expected to print built-in compiler options (specs) to build
* output. The parser will parse output and generate language settings for corresponding resources.
* Execute provider's command which is expected to print built-in compiler options (specs) to build output.
* The parser will parse output and generate language settings for corresponding resources.
*/
protected void execute() {
environmentMap = createEnvironmentMap(currentCfgDescription);
@ -505,8 +482,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
return;
}
WorkspaceJob job = new WorkspaceJob(ManagedMakeMessages
.getResourceString("AbstractBuiltinSpecsDetector.DiscoverBuiltInSettingsJobName")) { //$NON-NLS-1$
WorkspaceJob job = new WorkspaceJob(ManagedMakeMessages.getResourceString("AbstractBuiltinSpecsDetector.DiscoverBuiltInSettingsJobName")) { //$NON-NLS-1$
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
isExecuted = false;
@ -520,8 +496,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
status = runForEachLanguage(monitor);
} catch (CoreException e) {
ManagedBuilderCorePlugin.log(e);
status = new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, IStatus.ERROR,
"Error running Builtin Specs Detector", e); //$NON-NLS-1$
status = new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error running Builtin Specs Detector", e); //$NON-NLS-1$
} finally {
isExecuted = true;
shutdown();
@ -529,7 +504,6 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
return status;
}
@Override
public boolean belongsTo(Object family) {
return family == JOB_FAMILY_BUILTIN_SPECS_DETECTOR;
@ -553,14 +527,12 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
/**
* Run built-in specs command for each language.
*
* @param monitor
* - progress monitor in the initial state where
* {@link IProgressMonitor#beginTask(String, int)} has not been called yet.
* @param monitor - progress monitor in the initial state where {@link IProgressMonitor#beginTask(String, int)}
* has not been called yet.
* @return status of operation.
*/
protected IStatus runForEachLanguage(IProgressMonitor monitor) {
MultiStatus status = new MultiStatus(ManagedBuilderCorePlugin.PLUGIN_ID, IStatus.OK,
"Problem running CDT Scanner Discovery provider " + getId(), null); //$NON-NLS-1$
MultiStatus status = new MultiStatus(ManagedBuilderCorePlugin.PLUGIN_ID, IStatus.OK, "Problem running CDT Scanner Discovery provider " + getId(), null); //$NON-NLS-1$
if (monitor == null) {
monitor = new NullProgressMonitor();
@ -571,44 +543,32 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
List<String> languageIds = getLanguageScope();
if (languageIds != null) {
monitor.beginTask(
ManagedMakeMessages
.getResourceString("AbstractBuiltinSpecsDetector.ScannerDiscoveryTaskTitle"), //$NON-NLS-1$
TICKS_REMOVE_MARKERS + languageIds.size() * TICKS_RUN_FOR_ONE_LANGUAGE
+ TICKS_SERIALIZATION);
monitor.beginTask(ManagedMakeMessages.getResourceString("AbstractBuiltinSpecsDetector.ScannerDiscoveryTaskTitle"), //$NON-NLS-1$
TICKS_REMOVE_MARKERS + languageIds.size()*TICKS_RUN_FOR_ONE_LANGUAGE + TICKS_SERIALIZATION);
IResource markersResource = currentProject != null ? currentProject
: ResourcesPlugin.getWorkspace().getRoot();
IResource markersResource = currentProject != null ? currentProject : ResourcesPlugin.getWorkspace().getRoot();
monitor.subTask(
ManagedMakeMessages.getFormattedString("AbstractBuiltinSpecsDetector.ClearingMarkers", //$NON-NLS-1$
markersResource.getFullPath().toString()));
monitor.subTask(ManagedMakeMessages.getFormattedString("AbstractBuiltinSpecsDetector.ClearingMarkers", markersResource.getFullPath().toString())); //$NON-NLS-1$
markerGenerator.deleteMarkers(markersResource);
if (monitor.isCanceled())
throw new OperationCanceledException();
monitor.worked(TICKS_REMOVE_MARKERS);
IBuildConfiguration currentConfig = Adapters.adapt(currentCfgDescription,
IBuildConfiguration.class);
for (String languageId : languageIds) {
List<ICLanguageSettingEntry> oldEntries = getSettingEntries(currentConfig, null,
languageId);
List<ICLanguageSettingEntry> oldEntries = getSettingEntries(currentCfgDescription, null, languageId);
try {
startupForLanguage(languageId);
runForLanguage(new SubProgressMonitor(monitor, TICKS_RUN_FOR_ONE_LANGUAGE));
} catch (Exception e) {
IStatus s = new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
IStatus.ERROR, "Error running Builtin Specs Detector", e); //$NON-NLS-1$
IStatus s = new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error running Builtin Specs Detector", e); //$NON-NLS-1$
ManagedBuilderCorePlugin.log(s);
status.merge(s);
} finally {
shutdownForLanguage();
}
if (!isChanged) {
List<ICLanguageSettingEntry> newEntries = getSettingEntries(currentConfig, null,
languageId);
List<ICLanguageSettingEntry> newEntries = getSettingEntries(currentCfgDescription, null, languageId);
isChanged = newEntries != oldEntries;
}
@ -617,8 +577,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
}
monitor.subTask(
ManagedMakeMessages.getResourceString("AbstractBuiltinSpecsDetector.SerializingResults")); //$NON-NLS-1$
monitor.subTask(ManagedMakeMessages.getResourceString("AbstractBuiltinSpecsDetector.SerializingResults")); //$NON-NLS-1$
if (isChanged) { // avoids resource and settings change notifications
IStatus s = serializeLanguageSettings(currentCfgDescription);
status.merge(s);
@ -628,8 +587,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
} catch (OperationCanceledException e) {
// user chose to cancel operation, do not threaten them with red error signs
} catch (Exception e) {
status.merge(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, IStatus.ERROR,
"Error running Builtin Specs Detector", e)); //$NON-NLS-1$
status.merge(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error running Builtin Specs Detector", e)); //$NON-NLS-1$
ManagedBuilderCorePlugin.log(status);
} finally {
monitor.done();
@ -641,10 +599,8 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
/**
* Initialize provider before running for a language.
*
* @param languageId
* - language ID.
* @throws CoreException
* if something goes wrong.
* @param languageId - language ID.
* @throws CoreException if something goes wrong.
*/
protected void startupForLanguage(String languageId) throws CoreException {
currentLanguageId = languageId;
@ -662,9 +618,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
protected void shutdownForLanguage() {
if (detectedSettingEntries != null && detectedSettingEntries.size() > 0) {
collected = detectedSettingEntries.size();
IBuildConfiguration currentConfig = Adapters.adapt(currentCfgDescription,
IBuildConfiguration.class);
setSettingEntries(currentConfig, currentResource, currentLanguageId, detectedSettingEntries);
setSettingEntries(currentCfgDescription, currentResource, currentLanguageId, detectedSettingEntries);
}
detectedSettingEntries = null;
@ -680,9 +634,8 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
/**
* Run built-in specs command for one language.
*
* @param monitor
* - progress monitor in the initial state where
* {@link IProgressMonitor#beginTask(String, int)} has not been called yet.
* @param monitor - progress monitor in the initial state where {@link IProgressMonitor#beginTask(String, int)}
* has not been called yet.
*/
private void runForLanguage(IProgressMonitor monitor) throws CoreException {
buildRunnerHelper = new BuildRunnerHelper(currentProject);
@ -691,9 +644,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
monitor = new NullProgressMonitor();
}
try {
monitor.beginTask(
ManagedMakeMessages.getFormattedString(
"AbstractBuiltinSpecsDetector.RunningScannerDiscovery", getName()), //$NON-NLS-1$
monitor.beginTask(ManagedMakeMessages.getFormattedString("AbstractBuiltinSpecsDetector.RunningScannerDiscovery", getName()), //$NON-NLS-1$
TICKS_EXECUTE_COMMAND + TICKS_OUTPUT_PARSING);
IConsole console;
@ -701,8 +652,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
console = startProviderConsole();
} else {
// that looks in extension points registry and won't find the id, this console is not shown
console = CCorePlugin.getDefault()
.getConsole(ManagedBuilderCorePlugin.PLUGIN_ID + ".console.hidden"); //$NON-NLS-1$
console = CCorePlugin.getDefault().getConsole(ManagedBuilderCorePlugin.PLUGIN_ID + ".console.hidden"); //$NON-NLS-1$
}
console.start(currentProject);
@ -723,32 +673,27 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
String[] envp = toEnvp(environmentMap);
// Using GMAKE_ERROR_PARSER_ID as it can handle generated error messages
ErrorParserManager epm = new ErrorParserManager(currentProject, buildDirURI, markerGenerator,
new String[] { GMAKE_ERROR_PARSER_ID });
ErrorParserManager epm = new ErrorParserManager(currentProject, buildDirURI, markerGenerator, new String[] {GMAKE_ERROR_PARSER_ID});
ConsoleParserAdapter consoleParser = new ConsoleParserAdapter();
consoleParser.startup(currentCfgDescription, epm);
List<IConsoleParser> parsers = new ArrayList<IConsoleParser>();
parsers.add(consoleParser);
buildRunnerHelper.setLaunchParameters(launcher, program, args, buildDirURI, envp);
buildRunnerHelper.prepareStreams(epm, parsers, console,
new SubProgressMonitor(monitor, TICKS_OUTPUT_PARSING));
buildRunnerHelper.prepareStreams(epm, parsers, console, new SubProgressMonitor(monitor, TICKS_OUTPUT_PARSING));
buildRunnerHelper.greeting(ManagedMakeMessages
.getFormattedString("AbstractBuiltinSpecsDetector.RunningScannerDiscovery", getName())); //$NON-NLS-1$
buildRunnerHelper.greeting(ManagedMakeMessages.getFormattedString("AbstractBuiltinSpecsDetector.RunningScannerDiscovery", getName())); //$NON-NLS-1$
OutputStream outStream = buildRunnerHelper.getOutputStream();
OutputStream errStream = buildRunnerHelper.getErrorStream();
runProgramForLanguage(currentLanguageId, currentCommandResolved, envp, buildDirURI, outStream,
errStream, new SubProgressMonitor(monitor, TICKS_EXECUTE_COMMAND,
SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
runProgramForLanguage(currentLanguageId, currentCommandResolved, envp, buildDirURI, outStream, errStream,
new SubProgressMonitor(monitor, TICKS_EXECUTE_COMMAND, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
buildRunnerHelper.close();
buildRunnerHelper.goodbye();
} catch (Exception e) {
ManagedBuilderCorePlugin.log(new CoreException(new Status(IStatus.ERROR,
ManagedBuilderCorePlugin.PLUGIN_ID, "Error running Builtin Specs Detector", e))); //$NON-NLS-1$
ManagedBuilderCorePlugin.log(new CoreException(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, "Error running Builtin Specs Detector" , e))); //$NON-NLS-1$
} finally {
try {
buildRunnerHelper.close();
@ -760,8 +705,8 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
/**
* Returns list of environment variables to be used during execution of provider's command. Implementers
* are expected to add their variables to the end of the list.
* Returns list of environment variables to be used during execution of provider's command.
* Implementers are expected to add their variables to the end of the list.
*
* @return list of environment variables.
* @since 8.2
@ -770,8 +715,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
if (envMngr == null) {
envMngr = CCorePlugin.getDefault().getBuildEnvironmentManager();
}
List<IEnvironmentVariable> vars = new ArrayList<IEnvironmentVariable>(
Arrays.asList(envMngr.getVariables(currentCfgDescription, true)));
List<IEnvironmentVariable> vars = new ArrayList<IEnvironmentVariable>(Arrays.asList(envMngr.getVariables(currentCfgDescription, true)));
// On POSIX (Linux, UNIX) systems reset language variables to default (English)
// with UTF-8 encoding since GNU compilers can handle only UTF-8 characters.
@ -811,9 +755,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
return envp.toArray(new String[envp.size()]);
}
protected int runProgramForLanguage(String languageId, String command, String[] envp,
URI workingDirectoryURI, OutputStream consoleOut, OutputStream consoleErr,
IProgressMonitor monitor) throws CoreException, IOException {
protected int runProgramForLanguage(String languageId, String command, String[] envp, URI workingDirectoryURI, OutputStream consoleOut, OutputStream consoleErr, IProgressMonitor monitor) throws CoreException, IOException {
return buildRunnerHelper.build(monitor);
}
@ -832,7 +774,6 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
/**
* Create and start the provider console.
*
* @return CDT console.
*/
private IConsole startProviderConsole() {
@ -847,39 +788,32 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
ILanguage ld = LanguageManager.getInstance().getLanguage(currentLanguageId);
if (ld != null) {
String consoleId = ManagedBuilderCorePlugin.PLUGIN_ID + '.' + getId() + '.'
+ currentLanguageId;
String consoleId = ManagedBuilderCorePlugin.PLUGIN_ID + '.' + getId() + '.' + currentLanguageId;
String consoleName = getName() + ", " + ld.getName(); //$NON-NLS-1$
URL defaultIcon = Platform.getBundle(CDT_MANAGEDBUILDER_UI_PLUGIN_ID)
.getEntry(DEFAULT_CONSOLE_ICON);
URL defaultIcon = Platform.getBundle(CDT_MANAGEDBUILDER_UI_PLUGIN_ID).getEntry(DEFAULT_CONSOLE_ICON);
if (defaultIcon == null) {
@SuppressWarnings("nls")
String msg = "Unable to find icon " + DEFAULT_CONSOLE_ICON + " in plugin "
+ CDT_MANAGEDBUILDER_UI_PLUGIN_ID;
ManagedBuilderCorePlugin
.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, msg));
String msg = "Unable to find icon " + DEFAULT_CONSOLE_ICON + " in plugin " + CDT_MANAGEDBUILDER_UI_PLUGIN_ID;
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, msg));
}
console = CCorePlugin.getDefault().getConsole(extConsoleId, consoleId, consoleName,
defaultIcon);
console = CCorePlugin.getDefault().getConsole(extConsoleId, consoleId, consoleName, defaultIcon);
}
}
if (console == null) {
// that looks in extension points registry and won't find the id, this console is not shown
console = CCorePlugin.getDefault()
.getConsole(ManagedBuilderCorePlugin.PLUGIN_ID + ".console.hidden"); //$NON-NLS-1$
console = CCorePlugin.getDefault().getConsole(ManagedBuilderCorePlugin.PLUGIN_ID + ".console.hidden"); //$NON-NLS-1$
}
return console;
}
/**
* Get path to spec file which normally would be placed in workspace area. This value is used to replace
* macro ${INPUTS}.
* Get path to spec file which normally would be placed in workspace area.
* This value is used to replace macro ${INPUTS}.
*
* @param languageId
* - language ID.
* @param languageId - language ID.
* @return full path to the specs file.
*/
protected String getSpecFile(String languageId) {
@ -909,12 +843,11 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
/**
* Determine file extension by language id. This implementation retrieves first extension from the list as
* there could be multiple extensions associated with the given language. This value is used to replace
* macro ${EXT}.
* Determine file extension by language id. This implementation retrieves first extension
* from the list as there could be multiple extensions associated with the given language.
* This value is used to replace macro ${EXT}.
*
* @param languageId
* - given language ID.
* @param languageId - given language ID.
* @return file extension associated with the language or {@code null} if not found.
*/
protected String getSpecFileExtension(String languageId) {
@ -931,18 +864,16 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
}
if (ext == null) {
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
"Unable to find file extension for language " + languageId)); //$NON-NLS-1$
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, "Unable to find file extension for language " + languageId)); //$NON-NLS-1$
}
return ext;
}
/**
* Determine additional options to pass to scanner discovery command. These options are intended to come
* from the tool-chain.
* Determine additional options to pass to scanner discovery command.
* These options are intended to come from the tool-chain.
*
* @param languageId
* - language ID.
* @param languageId - language ID.
* @return additional options to pass to scanner discovery command.
*
* @since 8.3
@ -976,8 +907,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
try {
envPathHash = Long.parseLong(envPathHashStr);
} catch (Exception e) {
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
"Wrong integer format [" + envPathHashStr + "]", e)); //$NON-NLS-1$ //$NON-NLS-2$
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, "Wrong integer format [" + envPathHashStr + "]", e)); //$NON-NLS-1$ //$NON-NLS-2$
}
}
}

View file

@ -42,14 +42,12 @@ import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.cdt.utils.EFSExtensionManager;
import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
@ -63,22 +61,19 @@ import org.w3c.dom.Element;
/**
* Abstract class for language settings providers capable to parse build output.
* <p>
* <strong>EXPERIMENTAL</strong>. This class interface is not stable yet as it is not currently (CDT
* 8.1, Juno) clear how it may need to be used in future. There is no guarantee that this API will
* work or that it will remain the same. Please do not use this API without consulting with the CDT
* team.
* <strong>EXPERIMENTAL</strong>. This class interface is not stable yet as
* it is not currently (CDT 8.1, Juno) clear how it may need to be used in future.
* There is no guarantee that this API will work or that it will remain the same.
* Please do not use this API without consulting with the CDT team.
* </p>
*
* @noextend This class is not intended to be subclassed by clients.
*
* @since 8.1
*/
public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSettingsSerializableProvider
implements ICBuildOutputParser {
public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSettingsSerializableProvider implements ICBuildOutputParser {
protected static final String ATTR_KEEP_RELATIVE_PATHS = "keep-relative-paths"; //$NON-NLS-1$
// evaluates to "/${ProjName)/"
private static final String PROJ_NAME_PREFIX = '/'
+ CdtVariableResolver.createVariableReference(CdtVariableResolver.VAR_PROJ_NAME) + '/';
private static final String PROJ_NAME_PREFIX = '/' + CdtVariableResolver.createVariableReference(CdtVariableResolver.VAR_PROJ_NAME) + '/';
protected ICConfigurationDescription currentCfgDescription = null;
protected IWorkingDirectoryTracker cwdTracker = null;
@ -94,32 +89,26 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
private static final EFSExtensionProvider efsProviderDefault = new EFSExtensionProvider() {
final EFSExtensionManager efsManager = EFSExtensionManager.getDefault();
@Override
public String getPathFromURI(URI locationURI) {
return efsManager.getPathFromURI(locationURI);
}
@Override
public URI getLinkedURI(URI locationURI) {
return efsManager.getLinkedURI(locationURI);
}
@Override
public URI createNewURIFromPath(URI locationOnSameFilesystem, String path) {
return efsManager.createNewURIFromPath(locationOnSameFilesystem, path);
}
@Override
public String getMappedPath(URI locationURI) {
return efsManager.getMappedPath(locationURI);
}
@Override
public boolean isVirtual(URI locationURI) {
return efsManager.isVirtual(locationURI);
}
@Override
public URI append(URI baseURI, String extension) {
return efsManager.append(baseURI, extension);
@ -127,9 +116,9 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
};
/**
* Abstract class defining common functionality for option parsers. The purpose of this parser
* is to parse a portion of string representing a single option and create a language settings
* entry out of it.
* Abstract class defining common functionality for option parsers.
* The purpose of this parser is to parse a portion of string representing
* a single option and create a language settings entry out of it.
*
* See {@link GCCBuildCommandParser} for an example how to define the parsers.
*/
@ -147,19 +136,13 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
/**
* Constructor.
*
* @param kind
* - kind of language settings entries being parsed by the parser.
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param valueExpression
* - capturing group expression defining value of an entry.
* @param extraFlag
* - extra-flag to add while creating language settings entry.
* @param kind - kind of language settings entries being parsed by the parser.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
* @param valueExpression - capturing group expression defining value of an entry.
* @param extraFlag - extra-flag to add while creating language settings entry.
*/
public AbstractOptionParser(int kind, String pattern, String nameExpression, String valueExpression,
int extraFlag) {
public AbstractOptionParser(int kind, String pattern, String nameExpression, String valueExpression, int extraFlag) {
this.kind = kind;
this.patternStr = pattern;
this.nameExpression = nameExpression;
@ -170,16 +153,11 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Create language settings entry of appropriate kind and considering extra-flag passed in
* constructor.
* Create language settings entry of appropriate kind and considering extra-flag passed in constructor.
*
* @param name
* - name of language settings entry.
* @param value
* - value of language settings entry.
* @param flag
* - flag to set. Note that the flag will be amended with the extra-flag defined
* in constructor.
* @param name - name of language settings entry.
* @param value - value of language settings entry.
* @param flag - flag to set. Note that the flag will be amended with the extra-flag defined in constructor.
* @return new language settings entry.
*/
public ICLanguageSettingEntry createEntry(String name, String value, int flag) {
@ -214,13 +192,12 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Test for a match and parse a portion of input string representing a single option to
* retrieve name and value.
* Test for a match and parse a portion of input string representing a single option
* to retrieve name and value.
*
* @param optionString
* - an option to test and parse, possibly with an argument.
* @return {@code true} if the option is a match to parser's regular expression or
* {@code false} otherwise.
* @param optionString - an option to test and parse, possibly with an argument.
* @return {@code true} if the option is a match to parser's regular expression
* or {@code false} otherwise.
*/
public boolean parseOption(String optionString) {
// get rid of extra text at the end (for example file name could be confused for an argument)
@ -244,7 +221,6 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
public IncludePathOptionParser(String pattern, String nameExpression) {
super(ICLanguageSettingEntry.INCLUDE_PATH, pattern, nameExpression, nameExpression, 0);
}
public IncludePathOptionParser(String pattern, String nameExpression, int extraFlag) {
super(ICLanguageSettingEntry.INCLUDE_PATH, pattern, nameExpression, nameExpression, extraFlag);
}
@ -256,25 +232,17 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
protected static class IncludeFileOptionParser extends AbstractOptionParser {
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
*/
public IncludeFileOptionParser(String pattern, String nameExpression) {
super(ICLanguageSettingEntry.INCLUDE_FILE, pattern, nameExpression, nameExpression, 0);
}
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param extraFlag
* - extra-flag to add while creating language settings entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
* @param extraFlag - extra-flag to add while creating language settings entry.
*/
public IncludeFileOptionParser(String pattern, String nameExpression, int extraFlag) {
super(ICLanguageSettingEntry.INCLUDE_FILE, pattern, nameExpression, nameExpression, extraFlag);
@ -287,44 +255,28 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
protected static class MacroOptionParser extends AbstractOptionParser {
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param valueExpression
* - capturing group expression defining value of an entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
* @param valueExpression - capturing group expression defining value of an entry.
*/
public MacroOptionParser(String pattern, String nameExpression, String valueExpression) {
super(ICLanguageSettingEntry.MACRO, pattern, nameExpression, valueExpression, 0);
}
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param valueExpression
* - capturing group expression defining value of an entry.
* @param extraFlag
* - extra-flag to add while creating language settings entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
* @param valueExpression - capturing group expression defining value of an entry.
* @param extraFlag - extra-flag to add while creating language settings entry.
*/
public MacroOptionParser(String pattern, String nameExpression, String valueExpression,
int extraFlag) {
public MacroOptionParser(String pattern, String nameExpression, String valueExpression, int extraFlag) {
super(ICLanguageSettingEntry.MACRO, pattern, nameExpression, valueExpression, extraFlag);
}
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param extraFlag
* - extra-flag to add while creating language settings entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
* @param extraFlag - extra-flag to add while creating language settings entry.
*/
public MacroOptionParser(String pattern, String nameExpression, int extraFlag) {
super(ICLanguageSettingEntry.MACRO, pattern, nameExpression, null, extraFlag);
@ -337,25 +289,17 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
protected static class MacroFileOptionParser extends AbstractOptionParser {
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
*/
public MacroFileOptionParser(String pattern, String nameExpression) {
super(ICLanguageSettingEntry.MACRO_FILE, pattern, nameExpression, nameExpression, 0);
}
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param extraFlag
* - extra-flag to add while creating language settings entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
* @param extraFlag - extra-flag to add while creating language settings entry.
*/
public MacroFileOptionParser(String pattern, String nameExpression, int extraFlag) {
super(ICLanguageSettingEntry.MACRO_FILE, pattern, nameExpression, nameExpression, extraFlag);
@ -368,25 +312,17 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
protected static class LibraryPathOptionParser extends AbstractOptionParser {
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
*/
public LibraryPathOptionParser(String pattern, String nameExpression) {
super(ICLanguageSettingEntry.LIBRARY_PATH, pattern, nameExpression, nameExpression, 0);
}
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param extraFlag
* - extra-flag to add while creating language settings entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
* @param extraFlag - extra-flag to add while creating language settings entry.
*/
public LibraryPathOptionParser(String pattern, String nameExpression, int extraFlag) {
super(ICLanguageSettingEntry.LIBRARY_PATH, pattern, nameExpression, nameExpression, extraFlag);
@ -399,25 +335,17 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
protected static class LibraryFileOptionParser extends AbstractOptionParser {
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
*/
public LibraryFileOptionParser(String pattern, String nameExpression) {
super(ICLanguageSettingEntry.LIBRARY_FILE, pattern, nameExpression, nameExpression, 0);
}
/**
* Constructor.
*
* @param pattern
* - regular expression pattern being parsed by the parser.
* @param nameExpression
* - capturing group expression defining name of an entry.
* @param extraFlag
* - extra-flag to add while creating language settings entry.
* @param pattern - regular expression pattern being parsed by the parser.
* @param nameExpression - capturing group expression defining name of an entry.
* @param extraFlag - extra-flag to add while creating language settings entry.
*/
public LibraryFileOptionParser(String pattern, String nameExpression, int extraFlag) {
super(ICLanguageSettingEntry.LIBRARY_FILE, pattern, nameExpression, nameExpression, extraFlag);
@ -425,63 +353,60 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Parse the line returning the resource name as appears in the output. This is the resource
* where {@link ICLanguageSettingEntry} list is being added.
* Parse the line returning the resource name as appears in the output.
* This is the resource where {@link ICLanguageSettingEntry} list is being added.
*
* @param line
* - one input line from the output stripped from end of line characters.
* @return the resource name as appears in the output or {@code null}. Note that {@code null}
* can have different semantics and can mean "no resource found" or "applicable to any
* resource". By default "no resource found" is used in this abstract class but
* extenders can handle otherwise.
* @param line - one input line from the output stripped from end of line characters.
* @return the resource name as appears in the output or {@code null}.
* Note that {@code null} can have different semantics and can mean "no resource found"
* or "applicable to any resource". By default "no resource found" is used in this
* abstract class but extenders can handle otherwise.
*/
protected abstract String parseResourceName(String line);
/**
* Parse the line returning the list of substrings to be treated each as input to the option
* parsers. It is assumed that each substring presents one {@link ICLanguageSettingEntry} (for
* example compiler options {@code -I/path} or {@code -DMACRO=1}).
* Parse the line returning the list of substrings to be treated each as input to
* the option parsers. It is assumed that each substring presents one
* {@link ICLanguageSettingEntry} (for example compiler options {@code -I/path} or
* {@code -DMACRO=1}).
*
* @param line
* - one input line from the output stripped from end of line characters.
* @param line - one input line from the output stripped from end of line characters.
* @return list of substrings representing language settings entries.
*/
protected abstract List<String> parseOptions(String line);
/**
* @return array of option parsers defining how to parse a string to
* {@link ICLanguageSettingEntry}. See {@link AbstractOptionParser} and its specific
* extenders.
* {@link ICLanguageSettingEntry}.
* See {@link AbstractOptionParser} and its specific extenders.
*/
protected abstract AbstractOptionParser[] getOptionParsers();
/**
* @return {@code true} when the provider tries to resolve relative or remote paths to the
* existing paths in the workspace or local file-system using certain heuristics.
* @return {@code true} when the provider tries to resolve relative or remote paths
* to the existing paths in the workspace or local file-system using certain heuristics.
*/
public boolean isResolvingPaths() {
return isResolvingPaths;
}
/**
* Enable or disable resolving relative or remote paths to the existing paths in the workspace
* or local file-system.
* Enable or disable resolving relative or remote paths to the existing paths
* in the workspace or local file-system.
*
* @param resolvePaths
* - set {@code true} to enable or {@code false} to disable resolving paths. When
* this parameter is set to {@code false} the paths will be kept as they appear in
* the build output.
* @param resolvePaths - set {@code true} to enable or {@code false} to disable
* resolving paths. When this parameter is set to {@code false} the paths will
* be kept as they appear in the build output.
*/
public void setResolvingPaths(boolean resolvePaths) {
this.isResolvingPaths = resolvePaths;
}
@Override
public void startup(ICConfigurationDescription cfgDescription, IWorkingDirectoryTracker cwdTracker)
throws CoreException {
public void startup(ICConfigurationDescription cfgDescription, IWorkingDirectoryTracker cwdTracker) throws CoreException {
this.currentCfgDescription = cfgDescription;
this.currentProject = cfgDescription != null ? cfgDescription.getProjectDescription().getProject()
: null;
this.currentProject = cfgDescription != null ? cfgDescription.getProjectDescription().getProject() : null;
this.cwdTracker = cwdTracker;
this.efsProvider = getEFSProvider();
}
@ -507,18 +432,18 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* URI of directory where the build is happening. This URI could point to a remote
* file-system for remote builds. Most often it is the same file-system as for
* currentResource but it can be different file-system (and different URI schema).
* URI of directory where the build is happening. This URI could point to a remote file-system
* for remote builds. Most often it is the same file-system as for currentResource but
* it can be different file-system (and different URI schema).
*/
URI buildDirURI = null;
/**
* Where source tree starts if mapped. This kind of mapping is useful for example in cases
* when the absolute path to the source file on the remote system is simulated inside a
* project in the workspace. This URI is rooted on the same file-system where
* currentResource resides. In general this file-system (or even URI schema) does not have
* to match that of buildDirURI.
* Where source tree starts if mapped. This kind of mapping is useful for example in cases when
* the absolute path to the source file on the remote system is simulated inside a project in the
* workspace.
* This URI is rooted on the same file-system where currentResource resides. In general this file-system
* (or even URI schema) does not have to match that of buildDirURI.
*/
URI mappedRootURI = null;
@ -537,8 +462,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
try {
if (optionParser.parseOption(option)) {
ICLanguageSettingEntry entry = null;
if (isResolvingPaths
&& (optionParser.isForFile() || optionParser.isForFolder())) {
if (isResolvingPaths && (optionParser.isForFile() || optionParser.isForFolder())) {
URI baseURI = mappedRootURI;
if (buildDirURI != null && !new Path(optionParser.parsedName).isAbsolute()) {
if (mappedRootURI != null) {
@ -547,11 +471,9 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
baseURI = buildDirURI;
}
}
entry = createResolvedPathEntry(optionParser, optionParser.parsedName, 0,
baseURI);
entry = createResolvedPathEntry(optionParser, optionParser.parsedName, 0, baseURI);
} else {
entry = optionParser.createEntry(optionParser.parsedName,
optionParser.parsedValue, 0);
entry = optionParser.createEntry(optionParser.parsedName, optionParser.parsedValue, 0);
}
if (entry != null && !entries.contains(entry)) {
@ -561,10 +483,8 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
} catch (Throwable e) {
@SuppressWarnings("nls")
String msg = "Exception trying to parse option [" + option + "], class "
+ getClass().getSimpleName();
ManagedBuilderCorePlugin
.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, msg, e));
String msg = "Exception trying to parse option [" + option + "], class " + getClass().getSimpleName();
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, msg, e));
}
}
}
@ -578,14 +498,13 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* In case when absolute path is mapped to the source tree in a project this function will try
* to figure mapping and return "mapped root", i.e URI where the root path would be mapped. The
* mapped root will be used to prepend to other "absolute" paths where appropriate.
* In case when absolute path is mapped to the source tree in a project
* this function will try to figure mapping and return "mapped root",
* i.e URI where the root path would be mapped. The mapped root will be
* used to prepend to other "absolute" paths where appropriate.
*
* @param resource
* - a resource referred by parsed path
* @param parsedResourceName
* - path as appears in the output
* @param resource - a resource referred by parsed path
* @param parsedResourceName - path as appears in the output
* @return mapped path as URI
*/
protected URI getMappedRootURI(IResource resource, String parsedResourceName) {
@ -623,8 +542,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
* Determine current build directory considering currentResource (resource being compiled),
* parsedResourceName and mappedRootURI.
*
* @param mappedRootURI
* - root of the source tree when mapped to remote file-system.
* @param mappedRootURI - root of the source tree when mapped to remote file-system.
* @return {@link URI} of current build directory
*/
protected URI getBuildDirURI(URI mappedRootURI) {
@ -632,8 +550,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
// try to deduce build directory from full path of currentResource and partial path of parsedResourceName
URI cwdURI = null;
if (currentResource != null && parsedResourceName != null
&& !new Path(parsedResourceName).isAbsolute()) {
if (currentResource != null && parsedResourceName != null && !new Path(parsedResourceName).isAbsolute()) {
cwdURI = findBaseLocationURI(currentResource.getLocationURI(), parsedResourceName);
}
String cwdPath = cwdURI != null ? efsProvider.getPathFromURI(cwdURI) : null;
@ -686,15 +603,13 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Sets language settings entries for current configuration description, current resource and
* current language ID.
* Sets language settings entries for current configuration description, current resource
* and current language ID.
*
* @param entries
* - language settings entries to set.
* @param entries - language settings entries to set.
*/
protected void setSettingEntries(List<? extends ICLanguageSettingEntry> entries) {
IBuildConfiguration currentConfig = Adapters.adapt(currentCfgDescription, IBuildConfiguration.class);
setSettingEntries(currentConfig, currentResource, currentLanguageId, entries);
setSettingEntries(currentCfgDescription, currentResource, currentLanguageId, entries);
}
/**
@ -723,8 +638,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
/**
* Determine if the language is in scope of the provider.
*
* @param languageId
* - language ID.
* @param languageId - language ID.
* @return {@code true} if the language is in scope, {@code false } otherwise.
*/
protected boolean isLanguageInScope(String languageId) {
@ -733,11 +647,10 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Find file resource in the workspace for a given URI with a preference for the resource to
* reside in the given project.
* Find file resource in the workspace for a given URI with a preference for the resource
* to reside in the given project.
*/
private static IResource findFileForLocationURI(URI uri, IProject preferredProject,
boolean checkExistence) {
private static IResource findFileForLocationURI(URI uri, IProject preferredProject, boolean checkExistence) {
IResource sourceFile = null;
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IResource[] resources = root.findFilesForLocationURI(uri);
@ -756,11 +669,10 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Return a resource in workspace corresponding the given folder {@link URI} preferable residing
* in the provided project.
* Return a resource in workspace corresponding the given folder {@link URI} preferable residing in
* the provided project.
*/
private static IResource findContainerForLocationURI(URI uri, IProject preferredProject,
boolean checkExistence) {
private static IResource findContainerForLocationURI(URI uri, IProject preferredProject, boolean checkExistence) {
IResource resource = null;
IResource[] resources = ResourcesPlugin.getWorkspace().getRoot().findContainersForLocationURI(uri);
for (IResource rc : resources) {
@ -818,8 +730,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
} catch (Exception e) {
@SuppressWarnings("nls")
String msg = "Exception trying to resolve value [" + strBuilderCWD + "]";
ManagedBuilderCorePlugin
.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, msg, e));
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, msg, e));
}
builderCWD = new Path(strBuilderCWD);
@ -838,9 +749,9 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Find base location of the file, i.e. location of the directory which results from removing
* trailing relativeFileName from fileURI or {@code null} if fileURI doesn't represent
* relativeFileName.
* Find base location of the file, i.e. location of the directory which
* results from removing trailing relativeFileName from fileURI or
* {@code null} if fileURI doesn't represent relativeFileName.
*/
private static URI findBaseLocationURI(URI fileURI, String relativeFileName) {
URI cwdURI = null;
@ -869,8 +780,8 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
try {
cwdURI = new URI(fileURI.getScheme(), fileURI.getUserInfo(), fileURI.getHost(), fileURI.getPort(),
path + '/', fileURI.getQuery(), fileURI.getFragment());
cwdURI = new URI(fileURI.getScheme(), fileURI.getUserInfo(), fileURI.getHost(),
fileURI.getPort(), path + '/', fileURI.getQuery(), fileURI.getFragment());
} catch (URISyntaxException e) {
// It should be valid URI here or something is really wrong
ManagedBuilderCorePlugin.log(e);
@ -880,11 +791,10 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* The manipulations here are done to resolve problems such as "../" navigation for symbolic
* links where "link/.." cannot be collapsed as it must follow the real file-system path.
* {@link java.io.File#getCanonicalPath()} deals with that correctly but {@link Path} or
* {@link URI} try to normalize the path which would be incorrect here. Another issue being
* resolved here is fixing drive letters in URI syntax.
* The manipulations here are done to resolve problems such as "../" navigation for symbolic links where
* "link/.." cannot be collapsed as it must follow the real file-system path. {@link java.io.File#getCanonicalPath()}
* deals with that correctly but {@link Path} or {@link URI} try to normalize the path which would be incorrect here.
* Another issue being resolved here is fixing drive letters in URI syntax.
*/
private static URI resolvePathFromBaseLocation(String pathStr0, IPath baseLocation) {
String pathStr = pathStr0;
@ -941,10 +851,8 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
/**
* Determine URI on the local file-system considering possible mapping.
*
* @param pathStr
* - path to the resource, can be absolute or relative
* @param baseURI
* - base {@link URI} where path to the resource is rooted
* @param pathStr - path to the resource, can be absolute or relative
* @param baseURI - base {@link URI} where path to the resource is rooted
* @return {@link URI} of the resource
*/
private URI determineMappedURI(String pathStr, URI baseURI) {
@ -961,8 +869,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
uri = resolvePathFromBaseLocation(pathStr, baseLocation);
} else {
// location on a remote file-system
IPath path = new Path(pathStr); // use canonicalized path here, in particular replace all '\' with
// '/' for Windows paths
IPath path = new Path(pathStr); // use canonicalized path here, in particular replace all '\' with '/' for Windows paths
URI remoteUri = efsProvider.append(baseURI, path.toString());
if (remoteUri != null) {
String localPath = efsProvider.getMappedPath(remoteUri);
@ -1057,8 +964,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
if (projects.length > 0) {
IResource rc = null;
for (IProject prj : projects) {
if (!prj.equals(currentProject) && !referencedProjectsNames.contains(prj.getName())
&& prj.isOpen()) {
if (!prj.equals(currentProject) && !referencedProjectsNames.contains(prj.getName()) && prj.isOpen()) {
List<IResource> result = findPathInFolder(path, prj);
int size = result.size();
if (size == 1 && rc == null) {
@ -1080,8 +986,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Get location on the local file-system considering possible mapping by EFS provider. See
* {@link EFSExtensionManager}.
* Get location on the local file-system considering possible mapping by EFS provider. See {@link EFSExtensionManager}.
*/
private IPath getFilesystemLocation(URI uri) {
if (uri == null)
@ -1108,17 +1013,14 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
/**
* Resolve and create language settings path entry.
*/
private ICLanguageSettingEntry createResolvedPathEntry(AbstractOptionParser optionParser,
String parsedPath, int flag, URI baseURI) {
private ICLanguageSettingEntry createResolvedPathEntry(AbstractOptionParser optionParser, String parsedPath, int flag, URI baseURI) {
URI uri = determineMappedURI(parsedPath, baseURI);
boolean isRelative = !new Path(parsedPath).isAbsolute();
// is mapped something that is not a project root
boolean isRemapped = baseURI != null && currentProject != null
&& !baseURI.equals(currentProject.getLocationURI());
boolean isRemapped = baseURI != null && currentProject != null && !baseURI.equals(currentProject.getLocationURI());
boolean presentAsRelative = isRelative || isRemapped;
ICLanguageSettingEntry entry = resolvePathEntryInWorkspace(optionParser, uri, flag,
presentAsRelative);
ICLanguageSettingEntry entry = resolvePathEntryInWorkspace(optionParser, uri, flag, presentAsRelative);
if (entry != null) {
return entry;
}
@ -1142,11 +1044,10 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Create a language settings entry for a given resource. This will represent relative path
* using CDT variable ${ProjName}.
* Create a language settings entry for a given resource.
* This will represent relative path using CDT variable ${ProjName}.
*/
private ICLanguageSettingEntry createPathEntry(AbstractOptionParser optionParser, IResource rc,
boolean isRelative, int flag) {
private ICLanguageSettingEntry createPathEntry(AbstractOptionParser optionParser, IResource rc, boolean isRelative, int flag) {
String path;
if (isRelative && rc.getProject().equals(currentProject)) {
path = PROJ_NAME_PREFIX + rc.getFullPath().removeFirstSegments(1);
@ -1161,8 +1062,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
/**
* Find an existing resource in the workspace and create a language settings entry for it.
*/
private ICLanguageSettingEntry resolvePathEntryInWorkspace(AbstractOptionParser optionParser, URI uri,
int flag, boolean isRelative) {
private ICLanguageSettingEntry resolvePathEntryInWorkspace(AbstractOptionParser optionParser, URI uri, int flag, boolean isRelative) {
if (uri != null && uri.isAbsolute()) {
IResource rc = null;
if (optionParser.isForFolder()) {
@ -1180,8 +1080,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
/**
* Find a resource on the file-system and create a language settings entry for it.
*/
private ICLanguageSettingEntry resolvePathEntryInFilesystem(AbstractOptionParser optionParser, URI uri,
int flag) {
private ICLanguageSettingEntry resolvePathEntryInFilesystem(AbstractOptionParser optionParser, URI uri, int flag) {
IPath location = getFilesystemLocation(uri);
if (location != null) {
String loc = location.toString();
@ -1193,11 +1092,9 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Find a best fit for the resource in the workspace and create a language settings entry for
* it.
* Find a best fit for the resource in the workspace and create a language settings entry for it.
*/
private ICLanguageSettingEntry resolvePathEntryInWorkspaceAsBestFit(AbstractOptionParser optionParser,
String parsedPath, int flag, boolean isRelative) {
private ICLanguageSettingEntry resolvePathEntryInWorkspaceAsBestFit(AbstractOptionParser optionParser, String parsedPath, int flag, boolean isRelative) {
IResource rc = findBestFitInWorkspace(parsedPath);
if (rc != null) {
return createPathEntry(optionParser, rc, isRelative, flag);
@ -1206,11 +1103,9 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Try to map a resource in the workspace even if it does not exist and create a language
* settings entry for it.
* Try to map a resource in the workspace even if it does not exist and create a language settings entry for it.
*/
private ICLanguageSettingEntry resolvePathEntryInWorkspaceToNonexistingResource(
AbstractOptionParser optionParser, URI uri, int flag, boolean isRelative) {
private ICLanguageSettingEntry resolvePathEntryInWorkspaceToNonexistingResource(AbstractOptionParser optionParser, URI uri, int flag, boolean isRelative) {
if (uri != null && uri.isAbsolute()) {
IResource rc = null;
if (optionParser.isForFolder()) {
@ -1226,11 +1121,9 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Try to map a resource on the file-system even if it does not exist and create a language
* settings entry for it.
* Try to map a resource on the file-system even if it does not exist and create a language settings entry for it.
*/
private ICLanguageSettingEntry resolvePathEntryInFilesystemToNonExistingResource(
AbstractOptionParser optionParser, URI uri, int flag) {
private ICLanguageSettingEntry resolvePathEntryInFilesystemToNonExistingResource(AbstractOptionParser optionParser, URI uri, int flag) {
IPath location = getFilesystemLocation(uri);
if (location != null) {
return optionParser.createEntry(location.toString(), location.toString(), flag);
@ -1239,11 +1132,10 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Count how many groups are present in regular expression. The implementation is simplistic but
* should be sufficient for the cause.
* Count how many groups are present in regular expression.
* The implementation is simplistic but should be sufficient for the cause.
*
* @param str
* - regular expression to count the groups.
* @param str - regular expression to count the groups.
* @return number of the groups (groups are enclosed in round brackets) present.
*/
protected static int countGroups(String str) {
@ -1272,8 +1164,8 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
* Construct regular expression to find any file extension for C or C++. Returns expression
* shaped in form of "((cpp)|(c++)|(c))".
* Construct regular expression to find any file extension for C or C++.
* Returns expression shaped in form of "((cpp)|(c++)|(c))".
*
* @return regular expression for searching C/C++ file extensions.
*/
@ -1297,9 +1189,9 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
* This {@link EFSExtensionProvider} is capable to translate EFS paths to and from local
* file-system. Added mostly for Cygwin translations.
*
* This usage of {@link EFSExtensionProvider} is somewhat a misnomer. This provider is not an
* "extension" provider but rather a wrapper on {@link EFSExtensionManager} which in fact will
* use genuine {@link EFSExtensionProvider}s defined as extensions.
* This usage of {@link EFSExtensionProvider} is somewhat a misnomer. This provider is not
* an "extension" provider but rather a wrapper on {@link EFSExtensionManager} which in fact
* will use genuine {@link EFSExtensionProvider}s defined as extensions.
*
* @since 8.2
*/
@ -1318,8 +1210,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
public void loadAttributes(Element providerNode) {
super.loadAttributes(providerNode);
String expandRelativePathsValue = XmlUtil.determineAttributeValue(providerNode,
ATTR_KEEP_RELATIVE_PATHS);
String expandRelativePathsValue = XmlUtil.determineAttributeValue(providerNode, ATTR_KEEP_RELATIVE_PATHS);
if (expandRelativePathsValue!=null)
isResolvingPaths = ! Boolean.parseBoolean(expandRelativePathsValue);
}

View file

@ -59,4 +59,288 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disa
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
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.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
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_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
org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=120
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

View file

@ -1,3 +1,4 @@
eclipse.preferences.version=1
formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
formatter_settings_version=12
internal.default.compliance=user

View file

@ -16,6 +16,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.settings.model.CIncludeFileEntry;
import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
import org.eclipse.cdt.core.settings.model.CLibraryFileEntry;
@ -27,13 +29,10 @@ import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsExtensionManager;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
import junit.framework.TestSuite;
/**
* Test cases testing LanguageSettingsProvider extensions
*/
@ -339,7 +338,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
List<ICLanguageSettingEntry> expected = new ArrayList<ICLanguageSettingEntry>();
expected.add(EXTENSION_EDITABLE_PROVIDER_ENTRY);
assertEquals(expected, provider.getSettingEntries((IBuildConfiguration) null, null, null));
assertEquals(expected, provider.getSettingEntries(null, null, null));
}
/**

View file

@ -14,6 +14,8 @@ package org.eclipse.cdt.core.language.settings.providers;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.AbstractExecutableExtensionBase;
import org.eclipse.cdt.core.settings.model.CIncludeFileEntry;
import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
@ -29,18 +31,12 @@ import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSetting
import org.eclipse.cdt.internal.core.language.settings.providers.ReferencedProjectsLanguageSettingsProvider;
import org.eclipse.cdt.internal.core.settings.model.CConfigurationDescription;
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import junit.framework.TestSuite;
/**
* Test cases testing {@link LanguageSettingsManager} utility methods.
@ -66,85 +62,48 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
/**
* Mock configuration description.
*/
class MockConfigurationDescription extends CModelMock.DummyCConfigurationDescription
implements ILanguageSettingsProvidersKeeper {
class MockConfigurationDescription extends CModelMock.DummyCConfigurationDescription implements ILanguageSettingsProvidersKeeper {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
String[] defaultProvidersIds = null;
public MockConfigurationDescription(String id) {
super(id);
}
@Override
public void setLanguageSettingProviders(List<? extends ILanguageSettingsProvider> providers) {
this.providers = new ArrayList<ILanguageSettingsProvider>(providers);
}
@Override
public List<ILanguageSettingsProvider> getLanguageSettingProviders() {
return providers;
}
@Override
public void setDefaultLanguageSettingsProvidersIds(String[] ids) {
defaultProvidersIds = ids;
}
@Override
public String[] getDefaultLanguageSettingsProvidersIds() {
return defaultProvidersIds;
}
}
private class MockBuildConfiguration implements IBuildConfiguration {
private final MockConfigurationDescription cfgDesc;
public MockBuildConfiguration(MockConfigurationDescription cfgDesc) {
this.cfgDesc = cfgDesc;
}
@Override
public <T> T getAdapter(Class<T> adapter) {
if (adapter.isInstance(cfgDesc)) {
return (T) cfgDesc;
}
return null;
}
@Override
public IProject getProject() {
return null;
}
@Override
public String getName() {
return cfgDesc.getId();
}
}
/**
* Mock language sttings provider.
*/
private class MockProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsProvider {
private List<ICLanguageSettingEntry> entries;
public MockProvider(String id, String name, List<ICLanguageSettingEntry> entries) {
super(id, name);
this.entries = entries;
}
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
return entries;
}
}
/**
* Constructor.
*
* @param name
* - name of the test.
* @param name - name of the test.
*/
public LanguageSettingsManagerTests(String name) {
super(name);
@ -154,18 +113,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
Platform.getAdapterManager().registerAdapters(new IAdapterFactory() {
@Override
public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
MockConfigurationDescription cfgDesc = (MockConfigurationDescription) adaptableObject;
return (T) new MockBuildConfiguration(cfgDesc);
}
@Override
public Class<?>[] getAdapterList() {
return new Class<?>[] { IBuildConfiguration.class };
}
}, MockConfigurationDescription.class);
}
@Override
@ -184,8 +131,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
/**
* main function of the class.
*
* @param args
* - arguments
* @param args - arguments
*/
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
@ -228,8 +174,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
// Create model project and accompanied descriptions
String projectName = getName();
IProject project = ResourceHelper.createCDTProjectWithConfig(projectName);
ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance()
.getProjectDescription(project, true);
ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true);
ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations();
ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0];
@ -257,9 +202,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
public void testRudeProviders() throws Exception {
// mock configuration description
MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
// set impolite provider returning null by getSettingEntries()
ILanguageSettingsProvider providerNull = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null);
{
@ -270,14 +212,14 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
// use provider returning null, no exception should be recorded
{
List<ICLanguageSettingEntry> actual = LanguageSettingsManager.getSettingEntriesUpResourceTree(providerNull,
config, FILE_0, LANG_ID);
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(providerNull, cfgDescription, FILE_0, LANG_ID);
assertNotNull(actual);
assertEquals(0, actual.size());
}
{
List<ICLanguageSettingEntry> actual = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config,
FILE_0, LANG_ID, 0);
List<ICLanguageSettingEntry> actual = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, 0);
assertNotNull(actual);
assertEquals(0, actual.size());
}
@ -298,13 +240,13 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
// use provider returning null as item in array
{
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(providerNull_2, config, FILE_0, LANG_ID);
.getSettingEntriesUpResourceTree(providerNull_2, cfgDescription, FILE_0, LANG_ID);
assertNotNull(actual);
assertEquals(1, actual.size());
}
{
List<ICLanguageSettingEntry> actual = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config,
FILE_0, LANG_ID, 0);
List<ICLanguageSettingEntry> actual = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, 0);
assertNotNull(actual);
assertEquals(0, actual.size());
}
@ -315,8 +257,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
ILanguageSettingsProvider providerNPE = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null) {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
throw new NullPointerException("Can you handle me?");
}
};
@ -336,20 +277,16 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testProvider_Basic() throws Exception {
final MockConfigurationDescription modelCfgDescription = new MockConfigurationDescription(CFG_ID);
IBuildConfiguration modelConfig = Adapters.adapt(modelCfgDescription, IBuildConfiguration.class);
assertNotNull(modelConfig);
final List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(new CIncludePathEntry("path0", 0));
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
// define provider returning entries when configuration id matches and
// null otherwise
// define provider returning entries when configuration id matches and null otherwise
ILanguageSettingsProvider providerYes = new MockProvider(PROVIDER_0, PROVIDER_NAME_0, null) {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
if (config.getName().equals(modelCfgDescription.getId())) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (cfgDescription.getId().equals(modelCfgDescription.getId())) {
return entries;
}
return null;
@ -357,13 +294,11 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
};
providers.add(providerYes);
// define provider returning entries when configuration id does NOT
// match and null otherwise
// define provider returning entries when configuration id does NOT match and null otherwise
ILanguageSettingsProvider providerNo = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null) {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
if (config != null && !config.getName().equals(modelCfgDescription.getId())) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (cfgDescription!= null && !cfgDescription.getId().equals(modelCfgDescription.getId())) {
return entries;
}
return null;
@ -375,16 +310,16 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// retrieve the entries with provider returning the given list
List<ICLanguageSettingEntry> actual = LanguageSettingsManager.getSettingEntriesUpResourceTree(providerYes,
modelConfig, FILE_0, LANG_ID);
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(providerYes, modelCfgDescription, FILE_0, LANG_ID);
assertEquals(entries.get(0), actual.get(0));
assertEquals(entries.size(), actual.size());
}
{
// retrieve the entries with provider returning empty list
List<ICLanguageSettingEntry> actual = LanguageSettingsManager.getSettingEntriesUpResourceTree(providerNo,
modelConfig, FILE_0, LANG_ID);
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(providerNo, modelCfgDescription, FILE_0, LANG_ID);
assertEquals(0, actual.size());
}
}
@ -394,8 +329,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testProvider_Regular() throws Exception {
MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
// create couple of providers
List<ICLanguageSettingEntry> entries1 = new ArrayList<ICLanguageSettingEntry>();
@ -416,8 +349,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// retrieve the entries for provider-1
List<ICLanguageSettingEntry> actual = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider1,
config, FILE_0, LANG_ID);
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(provider1, cfgDescription, FILE_0, LANG_ID);
assertNotSame(entries1, actual);
ICLanguageSettingEntry[] entriesArray = entries1.toArray(new ICLanguageSettingEntry[0]);
@ -430,8 +363,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// retrieve the entries for provider-2
List<ICLanguageSettingEntry> actual = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider2,
config, FILE_0, LANG_ID);
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(provider2, cfgDescription, FILE_0, LANG_ID);
assertNotSame(entries2, actual);
ICLanguageSettingEntry[] entriesArray = entries2.toArray(new ICLanguageSettingEntry[0]);
@ -450,14 +383,11 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
// Create model project and accompanied descriptions
String projectName = getName();
IProject project = ResourceHelper.createCDTProjectWithConfig(projectName);
ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance()
.getProjectDescription(project, true);
ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true);
ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations();
ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0];
assertTrue(cfgDescriptionWritable instanceof CConfigurationDescription);
IBuildConfiguration configWritable = Adapters.adapt(cfgDescriptionWritable, IBuildConfiguration.class);
assertNotNull(configWritable);
final IFolder parentFolder = ResourceHelper.createFolder(project, "/ParentFolder/");
assertNotNull(parentFolder);
@ -470,8 +400,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_0, PROVIDER_NAME_0, null) {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (rc!=null && rc.equals(parentFolder)) {
return entries;
}
@ -488,8 +417,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// retrieve entries for a derived resource (in a subfolder)
IFile derived = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/resource");
List<ICLanguageSettingEntry> actual = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider,
configWritable, derived, LANG_ID);
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(provider, cfgDescriptionWritable, derived, LANG_ID);
// taken from parent folder
assertEquals(entries.get(0),actual.get(0));
assertEquals(entries.size(), actual.size());
@ -497,17 +426,16 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// retrieve entries for not related resource
IFile notRelated = ResourcesPlugin.getWorkspace().getRoot()
.getFile(new Path("/AnotherFolder/Subfolder/resource"));
List<ICLanguageSettingEntry> actual = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider,
configWritable, notRelated, LANG_ID);
IFile notRelated = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/AnotherFolder/Subfolder/resource"));
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(provider, cfgDescriptionWritable, notRelated, LANG_ID);
assertEquals(0, actual.size());
}
{
// test distinction between no settings and empty settings
List<ICLanguageSettingEntry> actual = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider,
configWritable, emptySettingsPath, LANG_ID);
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(provider, cfgDescriptionWritable, emptySettingsPath, LANG_ID);
// NOT taken from parent folder
assertEquals(0, actual.size());
}
@ -520,14 +448,11 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
// Create model project and accompanied descriptions
String projectName = getName();
IProject project = ResourceHelper.createCDTProjectWithConfig(projectName);
ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance()
.getProjectDescription(project, true);
ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true);
ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations();
ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0];
assertTrue(cfgDescriptionWritable instanceof CConfigurationDescription);
IBuildConfiguration configWritable = Adapters.adapt(cfgDescriptionWritable, IBuildConfiguration.class);
assertNotNull(configWritable);
final IFolder parentFolder = ResourceHelper.createFolder(project, "/ParentFolder/");
assertNotNull(parentFolder);
@ -540,9 +465,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_0, PROVIDER_NAME_0, null) {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
if (config == null && rc == null) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (cfgDescription==null && rc==null) {
return entries;
}
return null;
@ -555,8 +479,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// retrieve entries for a resource
IFile derived = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/resource");
List<ICLanguageSettingEntry> actual = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider,
configWritable, derived, LANG_ID);
List<ICLanguageSettingEntry> actual = LanguageSettingsManager
.getSettingEntriesUpResourceTree(provider, cfgDescriptionWritable, derived, LANG_ID);
// default entries given
assertEquals(entries.get(0),actual.get(0));
assertEquals(entries.size(), actual.size());
@ -568,8 +492,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testEntriesByKind_Regular() throws Exception {
MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
// contribute the entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -585,15 +507,15 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
cfgDescription.setLanguageSettingProviders(providers);
// retrieve entries by kind
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config,
FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
assertEquals(new CIncludePathEntry("path0", 0),includes.get(0));
assertEquals(new CIncludePathEntry("path1", 0),includes.get(1));
assertEquals(new CIncludePathEntry("path2", 0),includes.get(2));
assertEquals(3, includes.size());
List<ICLanguageSettingEntry> macros = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config,
FILE_0, LANG_ID, ICSettingEntry.MACRO);
List<ICLanguageSettingEntry> macros = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, ICSettingEntry.MACRO);
assertEquals(new CMacroEntry("MACRO0", "value0",0), macros.get(0));
assertEquals(new CMacroEntry("MACRO1", "value1",0), macros.get(1));
assertEquals(2, macros.size());
@ -604,8 +526,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testEntriesByKind_ConflictingEntries() throws Exception {
MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
// contribute the entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -619,8 +539,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
cfgDescription.setLanguageSettingProviders(providers);
// retrieve entries by kind, only first entry should be returned
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config,
FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
assertEquals(1, includes.size());
assertEquals(entries.get(0),includes.get(0));
}
@ -630,8 +549,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testEntriesByKind_Undefined() throws Exception {
MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
// contribute the entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -644,8 +561,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
cfgDescription.setLanguageSettingProviders(providers);
// retrieve entries by kind, no entries should be returned
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config,
FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
assertEquals(0, includes.size());
}
@ -654,8 +571,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testEntriesByKind_LocalAndSystem() throws Exception {
MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
// contribute the entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -672,7 +587,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// retrieve local entries
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer
.getLocalSettingEntriesByKind(config, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
.getLocalSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
assertEquals(localIncludeEntry, includes.get(0));
assertEquals(1, includes.size());
}
@ -680,15 +595,15 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// retrieve system entries
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer
.getSystemSettingEntriesByKind(config, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
.getSystemSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
assertEquals(systemIncludeEntry, includes.get(0));
assertEquals(1, includes.size());
}
{
// retrieve both local and system
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config,
FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
assertEquals(entries.get(0), includes.get(0));
assertEquals(entries.get(1), includes.get(1));
assertEquals(2, includes.size());
@ -700,8 +615,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testEntriesByKind_ConflictingProviders() throws Exception {
MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
// contribute the entries
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
@ -726,8 +639,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
cfgDescription.setLanguageSettingProviders(providers);
// retrieve entries by kind
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config,
FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
List<ICLanguageSettingEntry> includes = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH);
// path0 is taken from higher priority provider
assertEquals(entriesHigh.get(0),includes.get(0));
// path1 disablement by lower priority provider is ignored
@ -743,7 +656,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testEntriesByKind_CompositeKind() throws Exception {
MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
// contribute the entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -761,8 +673,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
cfgDescription.setLanguageSettingProviders(providers);
// retrieve entries by kind
List<ICLanguageSettingEntry> result = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config,
FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH | ICSettingEntry.MACRO);
List<ICLanguageSettingEntry> result = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(cfgDescription, FILE_0, LANG_ID, ICSettingEntry.INCLUDE_PATH | ICSettingEntry.MACRO);
assertEquals(new CIncludePathEntry("path0", 0), result.get(0));
assertEquals(new CMacroEntry("MACRO0", "value0",0), result.get(1));
assertEquals(new CIncludePathEntry("path1", 0), result.get(2));
@ -778,22 +690,19 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
// Create model project and accompanied descriptions
String projectName = getName();
IProject project = ResourceHelper.createCDTProjectWithConfig(projectName);
ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance()
.getProjectDescription(project, true);
ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true);
ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof CConfigurationDescription);
// Select a sample workspace provider for the test
ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager
.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
assertNotNull(workspaceProvider);
{
// ensure no test provider is set yet but default providers
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(ScannerDiscoveryLegacySupport.USER_LANGUAGE_SETTINGS_PROVIDER_ID, providers.get(0).getId());
assertEquals(ReferencedProjectsLanguageSettingsProvider.ID, providers.get(1).getId());
assertEquals(ScannerDiscoveryLegacySupport.MBS_LANGUAGE_SETTINGS_PROVIDER_ID, providers.get(2).getId());
@ -807,8 +716,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
}
{
// check that test provider got there
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(workspaceProvider, providers.get(0));
}
@ -822,14 +730,12 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// check that test provider got loaded
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance()
.getProjectDescription(project, false);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
ICConfigurationDescription[] loadedCfgDescriptions = prjDescription.getConfigurations();
ICConfigurationDescription loadedCfgDescription = loadedCfgDescriptions[0];
assertTrue(cfgDescription instanceof CConfigurationDescription);
List<ILanguageSettingsProvider> loadedProviders = ((ILanguageSettingsProvidersKeeper) loadedCfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> loadedProviders = ((ILanguageSettingsProvidersKeeper) loadedCfgDescription).getLanguageSettingProviders();
assertTrue(LanguageSettingsManager.isWorkspaceProvider(loadedProviders.get(0)));
}
@ -840,8 +746,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testWorkspaceProvider_Basic() throws Exception {
// get workspace provider
ILanguageSettingsProvider provider = LanguageSettingsManager
.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
assertEquals(EXTENSION_SERIALIZABLE_PROVIDER_ID, provider.getId());
assertEquals(EXTENSION_SERIALIZABLE_PROVIDER_NAME, provider.getName());
@ -855,10 +760,9 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// make sure entries are the same
List<ICLanguageSettingEntry> entries = provider.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
assertEquals(1, entries.size()); // defined in the extension
List<ICLanguageSettingEntry> rawEntries = rawProvider.getSettingEntries((IBuildConfiguration) null, null,
null);
List<ICLanguageSettingEntry> rawEntries = rawProvider.getSettingEntries(null, null, null);
assertEquals(entries, rawEntries);
}
@ -867,11 +771,10 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
List<ICLanguageSettingEntry> newEntries = new ArrayList<ICLanguageSettingEntry>();
newEntries.add(new CIncludePathEntry("path0", 0));
newEntries.add(new CIncludePathEntry("path1", 0));
((LanguageSettingsSerializableProvider) rawProvider).setSettingEntries((IBuildConfiguration) null, null, null, newEntries);
((LanguageSettingsSerializableProvider)rawProvider).setSettingEntries(null, null, null, newEntries);
// check that the workspace provider gets them too
List<ICLanguageSettingEntry> newRawEntries = rawProvider.getSettingEntries((IBuildConfiguration) null, null,
null);
List<ICLanguageSettingEntry> newRawEntries = rawProvider.getSettingEntries(null, null, null);
assertEquals(newEntries, newRawEntries);
assertEquals(2, newEntries.size());
}
@ -881,10 +784,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Test workspace providers equality.
*/
public void testWorkspaceProvider_Equals() throws Exception {
ILanguageSettingsProvider providerA = LanguageSettingsManager
.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider providerB = LanguageSettingsManager
.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider providerA = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider providerB = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
assertEquals(providerA, providerB);
}
@ -893,11 +794,10 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testWorkspaceProvider_ReplaceRawProvider() throws Exception {
// get sample workspace provider
ILanguageSettingsProvider provider = LanguageSettingsManager
.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
{
// check on its entries (1 predefined entry via extension point)
List<ICLanguageSettingEntry> entries = provider.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
assertEquals(1, entries.size()); // defined in the extension
}
@ -910,16 +810,15 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
{
// replace raw provider
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
LanguageSettingsSerializableProvider newRawProvider = new LanguageSettingsSerializableProvider(
EXTENSION_EDITABLE_PROVIDER_ID, PROVIDER_NAME_0);
newRawProvider.setSettingEntries((IBuildConfiguration) null, null, null, newEntries);
LanguageSettingsSerializableProvider newRawProvider = new LanguageSettingsSerializableProvider(EXTENSION_EDITABLE_PROVIDER_ID, PROVIDER_NAME_0);
newRawProvider.setSettingEntries(null, null, null, newEntries);
providers.add(newRawProvider);
LanguageSettingsManager.setWorkspaceProviders(providers);
}
{
// check that provider provides the new entries
List<ICLanguageSettingEntry> entries = provider.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
assertEquals(newEntries.size(), entries.size());
assertEquals(newEntries, entries);
}
@ -930,8 +829,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
*/
public void testWorkspaceProvider_ReplaceWithWorkspaceProvider() throws Exception {
// get sample workspace provider
ILanguageSettingsProvider provider = LanguageSettingsManager
.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
assertNotSame(provider, rawProvider);

View file

@ -18,6 +18,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
@ -29,22 +31,16 @@ import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.core.testplugin.ResourceHelper;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.internal.core.language.settings.providers.ReferencedProjectsLanguageSettingsProvider;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.CoreException;
import junit.framework.TestSuite;
/**
* Test cases testing ReferencedProjectsLanguageSettingsProvider functionality
*/
public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCase {
/**
* Constructor.
*
* @param name
* - name of the test.
* @param name - name of the test.
*/
public LanguageSettingsProviderReferencedProjectsTests(String name) {
super(name);
@ -71,8 +67,7 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
/**
* main function of the class.
*
* @param args
* - arguments
* @param args - arguments
*/
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
@ -108,13 +103,8 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
ICConfigurationDescription[] cfgDescriptions = projectDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
final ICConfigurationDescription cfgDescriptionReferenced = getConfigurationDescriptions(
projectReferenced)[0];
cfgDescription.setReferenceInfo(new HashMap<String, String>() {
{
put(projectReferenced.getName(), cfgDescriptionReferenced.getId());
}
});
final ICConfigurationDescription cfgDescriptionReferenced = getConfigurationDescriptions(projectReferenced)[0];
cfgDescription.setReferenceInfo(new HashMap<String, String>() {{ put(projectReferenced.getName(), cfgDescriptionReferenced.getId()); }});
coreModel.setProjectDescription(project, projectDescription);
}
@ -134,10 +124,9 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
* Test that null arguments don't crash the provider.
*/
public void testNulls() throws Exception {
ILanguageSettingsProvider provider = LanguageSettingsManager
.getWorkspaceProvider(ReferencedProjectsLanguageSettingsProvider.ID);
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(ReferencedProjectsLanguageSettingsProvider.ID);
assertNotNull(provider);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries((IBuildConfiguration) null, null, null);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
assertEquals(null, entries);
}
@ -155,34 +144,27 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
// get cfgDescription
ICConfigurationDescription[] cfgDescriptions = getConfigurationDescriptions(project);
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
{
// double-check that provider for referenced projects is set in the configuration
ILanguageSettingsProvider refProjectsProvider = LanguageSettingsManager
.getWorkspaceProvider(ReferencedProjectsLanguageSettingsProvider.ID);
ILanguageSettingsProvider refProjectsProvider = LanguageSettingsManager.getWorkspaceProvider(ReferencedProjectsLanguageSettingsProvider.ID);
assertNotNull(refProjectsProvider);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertTrue(providers.contains(refProjectsProvider));
}
// Check that no setting entries are set initially
{
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(config, project,
null, ICSettingEntry.ALL);
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(cfgDescription, project, null, ICSettingEntry.ALL);
assertEquals(0, entries.size());
}
// Add an entry into a non-referenced project
CIncludePathEntry nonRefEntry = CDataUtil.createCIncludePathEntry("non-referenced-exported",
ICSettingEntry.EXPORTED);
CIncludePathEntry nonRefEntry = CDataUtil.createCIncludePathEntry("non-referenced-exported", ICSettingEntry.EXPORTED);
{
ICConfigurationDescription[] nonRefCfgDescriptions = getConfigurationDescriptions(nonReferencedProject);
ICConfigurationDescription nonRefCfgDescription = nonRefCfgDescriptions[0];
List<ILanguageSettingsProvider> providersNonRef = ((ILanguageSettingsProvidersKeeper) nonRefCfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providersNonRef = ((ILanguageSettingsProvidersKeeper) nonRefCfgDescription).getLanguageSettingProviders();
// get user provider which is the first one
ILanguageSettingsProvider userProviderNonRef = providersNonRef.get(0);
assertEquals(ScannerDiscoveryLegacySupport.USER_LANGUAGE_SETTINGS_PROVIDER_ID, userProviderNonRef.getId());
@ -190,12 +172,11 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
// add sample entries
ArrayList<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(nonRefEntry);
((LanguageSettingsGenericProvider) userProviderNonRef).setSettingEntries((IBuildConfiguration) null, null, null, entries);
((LanguageSettingsGenericProvider) userProviderNonRef).setSettingEntries(null, null, null, entries);
}
// Confirm that that does not add entries to the main project
{
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(config, project,
null, ICSettingEntry.ALL);
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(cfgDescription, project, null, ICSettingEntry.ALL);
assertEquals(0, entries.size());
}
@ -204,10 +185,7 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
{
ICConfigurationDescription[] refCfgDescriptions = getConfigurationDescriptions(referencedProject);
ICConfigurationDescription refCfgDescription = refCfgDescriptions[0];
IBuildConfiguration refConfig = Adapters.adapt(refCfgDescription, IBuildConfiguration.class);
assertNotNull(refConfig);
List<ILanguageSettingsProvider> providersRef = ((ILanguageSettingsProvidersKeeper) refCfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providersRef = ((ILanguageSettingsProvidersKeeper) refCfgDescription).getLanguageSettingProviders();
// get user provider which is the first one
ILanguageSettingsProvider userProviderRef = providersRef.get(0);
assertEquals(ScannerDiscoveryLegacySupport.USER_LANGUAGE_SETTINGS_PROVIDER_ID, userProviderRef.getId());
@ -217,16 +195,13 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
CIncludePathEntry refEntryNotExported = CDataUtil.createCIncludePathEntry("referenced-not-exported", 0);
entries.add(refEntry);
entries.add(refEntryNotExported);
((LanguageSettingsGenericProvider) userProviderRef).setSettingEntries((IBuildConfiguration) null, null, null, entries);
List<ICLanguageSettingEntry> entriesActual = LanguageSettingsManager.getSettingEntriesByKind(refConfig,
project, null, ICSettingEntry.ALL);
((LanguageSettingsGenericProvider) userProviderRef).setSettingEntries(null, null, null, entries);
List<ICLanguageSettingEntry> entriesActual = LanguageSettingsManager.getSettingEntriesByKind(refCfgDescription, project, null, ICSettingEntry.ALL);
assertEquals(entries, entriesActual);
}
// Check that the new entries from referenced project made it to the
// main project
// Check that the new entries from referenced project made it to the main project
{
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(config, project,
null, ICSettingEntry.ALL);
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(cfgDescription, project, null, ICSettingEntry.ALL);
assertEquals(CDataUtil.createCIncludePathEntry(refEntry.getName(), 0), entries.get(0));
assertEquals(1, entries.size());
}
@ -247,41 +222,30 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
// get cfgDescriptions to work with
ICConfigurationDescription[] cfgDescriptionsA = getConfigurationDescriptions(projectA);
ICConfigurationDescription cfgDescriptionA = cfgDescriptionsA[0];
IBuildConfiguration configA = Adapters.adapt(cfgDescriptionA, IBuildConfiguration.class);
assertNotNull(configA);
ICConfigurationDescription[] cfgDescriptionsB = getConfigurationDescriptions(projectB);
ICConfigurationDescription cfgDescriptionB = cfgDescriptionsB[0];
IBuildConfiguration configB = Adapters.adapt(cfgDescriptionB, IBuildConfiguration.class);
assertNotNull(configB);
// double-check that provider for referenced projects is set in the configurations
ILanguageSettingsProvider refProjectsProvider = LanguageSettingsManager
.getWorkspaceProvider(ReferencedProjectsLanguageSettingsProvider.ID);
ILanguageSettingsProvider refProjectsProvider = LanguageSettingsManager.getWorkspaceProvider(ReferencedProjectsLanguageSettingsProvider.ID);
assertNotNull(refProjectsProvider);
List<ILanguageSettingsProvider> providersA = ((ILanguageSettingsProvidersKeeper) cfgDescriptionA)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providersA = ((ILanguageSettingsProvidersKeeper) cfgDescriptionA).getLanguageSettingProviders();
assertTrue(providersA.contains(refProjectsProvider));
List<ILanguageSettingsProvider> providersB = ((ILanguageSettingsProvidersKeeper) cfgDescriptionB)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providersB = ((ILanguageSettingsProvidersKeeper) cfgDescriptionB).getLanguageSettingProviders();
assertTrue(providersB.contains(refProjectsProvider));
// Check that no setting entries are set initially
List<ICLanguageSettingEntry> entriesA = LanguageSettingsManager.getSettingEntriesByKind(configA, projectA,
null, ICSettingEntry.ALL);
List<ICLanguageSettingEntry> entriesA = LanguageSettingsManager.getSettingEntriesByKind(cfgDescriptionA, projectA, null, ICSettingEntry.ALL);
assertEquals(0, entriesA.size());
List<ICLanguageSettingEntry> entriesB = LanguageSettingsManager.getSettingEntriesByKind(configB, projectB,
null, ICSettingEntry.ALL);
List<ICLanguageSettingEntry> entriesB = LanguageSettingsManager.getSettingEntriesByKind(cfgDescriptionA, projectB, null, ICSettingEntry.ALL);
assertEquals(0, entriesB.size());
}
CIncludePathEntry entryExportedA = CDataUtil.createCIncludePathEntry("referenced-exported-A",
ICSettingEntry.EXPORTED);
CIncludePathEntry entryExportedA = CDataUtil.createCIncludePathEntry("referenced-exported-A", ICSettingEntry.EXPORTED);
CIncludePathEntry entryNotExportedA = CDataUtil.createCIncludePathEntry("referenced-not-exported-A", 0);
// Add entries into a project A
{
ICConfigurationDescription[] refCfgDescriptions = getConfigurationDescriptions(projectA);
ICConfigurationDescription refCfgDescription = refCfgDescriptions[0];
List<ILanguageSettingsProvider> providersRef = ((ILanguageSettingsProvidersKeeper) refCfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providersRef = ((ILanguageSettingsProvidersKeeper) refCfgDescription).getLanguageSettingProviders();
// get user provider which is the first one
ILanguageSettingsProvider userProviderRef = providersRef.get(0);
assertEquals(ScannerDiscoveryLegacySupport.USER_LANGUAGE_SETTINGS_PROVIDER_ID, userProviderRef.getId());
@ -290,18 +254,16 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
ArrayList<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(entryExportedA);
entries.add(entryNotExportedA);
((LanguageSettingsGenericProvider) userProviderRef).setSettingEntries((IBuildConfiguration) null, null, null, entries);
((LanguageSettingsGenericProvider) userProviderRef).setSettingEntries(null, null, null, entries);
}
CIncludePathEntry entryExportedB = CDataUtil.createCIncludePathEntry("referenced-exported-B",
ICSettingEntry.EXPORTED);
CIncludePathEntry entryExportedB = CDataUtil.createCIncludePathEntry("referenced-exported-B", ICSettingEntry.EXPORTED);
CIncludePathEntry entryNotExportedB = CDataUtil.createCIncludePathEntry("referenced-not-exported-B", 0);
// Add entries into a project B
{
ICConfigurationDescription[] refCfgDescriptions = getConfigurationDescriptions(projectB);
ICConfigurationDescription refCfgDescription = refCfgDescriptions[0];
List<ILanguageSettingsProvider> providersRef = ((ILanguageSettingsProvidersKeeper) refCfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> providersRef = ((ILanguageSettingsProvidersKeeper) refCfgDescription).getLanguageSettingProviders();
// get user provider which is the first one
ILanguageSettingsProvider userProviderRef = providersRef.get(0);
assertEquals(ScannerDiscoveryLegacySupport.USER_LANGUAGE_SETTINGS_PROVIDER_ID, userProviderRef.getId());
@ -310,17 +272,14 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
ArrayList<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(entryExportedB);
entries.add(entryNotExportedB);
((LanguageSettingsGenericProvider) userProviderRef).setSettingEntries((IBuildConfiguration) null, null, null, entries);
((LanguageSettingsGenericProvider) userProviderRef).setSettingEntries(null, null, null, entries);
}
// Check that the new entries from projectB made it to projectA
{
ICConfigurationDescription[] cfgDescriptionsA = getConfigurationDescriptions(projectA);
ICConfigurationDescription cfgDescriptionA = cfgDescriptionsA[0];
IBuildConfiguration configA = Adapters.adapt(cfgDescriptionA, IBuildConfiguration.class);
assertNotNull(configA);
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(configA, projectA,
null, ICSettingEntry.ALL);
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(cfgDescriptionA, projectA, null, ICSettingEntry.ALL);
assertEquals(entryExportedA, entries.get(0));
assertEquals(entryNotExportedA, entries.get(1));
assertEquals(CDataUtil.createCIncludePathEntry(entryExportedB.getName(), 0), entries.get(2));
@ -330,9 +289,7 @@ public class LanguageSettingsProviderReferencedProjectsTests extends BaseTestCas
{
ICConfigurationDescription[] cfgDescriptionsB = getConfigurationDescriptions(projectB);
ICConfigurationDescription cfgDescriptionB = cfgDescriptionsB[0];
IBuildConfiguration configB = Adapters.adapt(cfgDescriptionB, IBuildConfiguration.class);
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(configB, projectB,
null, ICSettingEntry.ALL);
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesByKind(cfgDescriptionB, projectB, null, ICSettingEntry.ALL);
assertEquals(entryExportedB, entries.get(0));
assertEquals(entryNotExportedB, entries.get(1));
assertEquals(CDataUtil.createCIncludePathEntry(entryExportedA.getName(), 0), entries.get(2));

View file

@ -15,6 +15,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.model.LanguageManager;
import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
@ -32,19 +34,15 @@ import org.eclipse.cdt.core.testplugin.ResourceHelper;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsScannerInfoProvider;
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import junit.framework.TestSuite;
/**
* Test cases testing LanguageSettingsProvider functionality
*/
@ -67,17 +65,14 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
}
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
return entries;
}
}
/**
* Constructor.
*
* @param name
* - name of the test.
* @param name - name of the test.
*/
public LanguageSettingsScannerInfoProviderTests(String name) {
super(name);
@ -104,8 +99,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
/**
* main function of the class.
*
* @param args
* - arguments
* @param args - arguments
*/
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
@ -130,8 +124,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
}
{
// triplecheck builderCWD for different project/configuration descriptions
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance()
.getProjectDescription(project, READ_ONLY);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, READ_ONLY);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -160,8 +153,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
{
// Handle prjDescription==null
IProject project = FAKE_FILE.getProject();
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance()
.getProjectDescription(project, READ_ONLY);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, READ_ONLY);
assertNull(prjDescription);
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
@ -179,8 +171,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
IFile file = ResourceHelper.createFile(project, "file");
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance()
.getProjectDescription(project, READ_ONLY);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, READ_ONLY);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -208,8 +199,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
IFile file = ResourceHelper.createFile(project, "file.c");
// confirm that language==null
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
READ_ONLY);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, READ_ONLY);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -231,8 +221,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
public void testRegular() throws Exception {
// create a project
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -304,8 +293,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
public void testLocal() throws Exception {
// create a project
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -359,8 +347,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
public void testFramework() throws Exception {
// create a project
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -403,8 +390,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
public void testDuplicate() throws Exception {
// create a project
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -454,8 +440,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
public void testWorkspacePath() throws Exception {
// create a project
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -482,12 +467,9 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
// contribute the entries
CIncludePathEntry incWorkspaceEntry_1 = new CIncludePathEntry(incWorkspace_1, 0);
CIncludePathEntry incWorkspaceEntry_2 = new CIncludePathEntry(incWorkspacePath_2,
ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
CIncludePathEntry incWorkspaceEntry_3 = new CIncludePathEntry(incWorkspaceRelativePath_3,
ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
CIncludePathEntry incWorkspaceEntry_4 = new CIncludePathEntry(incWorkspacePathNoResolved_4,
ICSettingEntry.VALUE_WORKSPACE_PATH);
CIncludePathEntry incWorkspaceEntry_2 = new CIncludePathEntry(incWorkspacePath_2, ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
CIncludePathEntry incWorkspaceEntry_3 = new CIncludePathEntry(incWorkspaceRelativePath_3, ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
CIncludePathEntry incWorkspaceEntry_4 = new CIncludePathEntry(incWorkspacePathNoResolved_4, ICSettingEntry.VALUE_WORKSPACE_PATH);
CIncludePathEntry incFilesystemEntry = new CIncludePathEntry(incFilesystem, 0);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -529,13 +511,12 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
// change drive on build working directory
String buildCwdDevice = project.getLocation().getDevice();
// Test manually with a device which is different from project location device (path should exist)
// // Test manually with a device which is different from project location device (path should exist)
// IPath buildCWD = new Path("D:/build/path");
// String buildCwdDevice = buildCWD.getDevice();
// get project/configuration descriptions
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -582,14 +563,12 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
IFolder relativeFolder = ResourceHelper.createFolder(project, "buildDir/"+relativePath);
IFolder relativeFolderProjName = ResourceHelper.createFolder(project, "buildDir/"+prjName);
String markedResolved = "-MarkedResolved";
IFolder relativeFolderProjNameResolved = ResourceHelper.createFolder(project,
"buildDir/" + prjName + markedResolved);
IFolder relativeFolderProjNameResolved = ResourceHelper.createFolder(project, "buildDir/" + prjName+markedResolved);
IPath buildCWD=buildFolder.getLocation();
setBuilderCWD(project, buildCWD);
// get project/configuration descriptions
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -601,8 +580,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
// contribute the entries
CIncludePathEntry incRelativeEntry = new CIncludePathEntry(new Path(relativePath), 0);
CIncludePathEntry incProjNameEntry = new CIncludePathEntry(new Path("${ProjName}"), 0);
CIncludePathEntry incProjNameMarkedResolvedEntry = new CIncludePathEntry(
new Path("${ProjName}" + markedResolved), ICSettingEntry.RESOLVED);
CIncludePathEntry incProjNameMarkedResolvedEntry = new CIncludePathEntry(new Path("${ProjName}"+markedResolved), ICSettingEntry.RESOLVED);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(incRelativeEntry);
entries.add(incProjNameEntry);
@ -660,8 +638,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
IFolder incFolder_dotdot_slash_path = ResourceHelper.createFolder(project, "include2"); // "/ProjPath/buildDir/../include2"
// get project/configuration descriptions
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -672,17 +649,13 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
// contribute the entries
CIncludePathEntry incRelativeEntry_dot = new CIncludePathEntry(new Path(relativePath_dot), 0);
CIncludePathEntry incRelativeEntry_dot_slash_path = new CIncludePathEntry(new Path(relativePath_dot_slash_path),
0);
CIncludePathEntry incRelativeEntry_dot_slash_path = new CIncludePathEntry(new Path(relativePath_dot_slash_path), 0);
CIncludePathEntry incRelativeEntry_dotdot = new CIncludePathEntry(new Path(relativePath_dotdot), 0);
CIncludePathEntry incRelativeEntry_dotdot_slash_path = new CIncludePathEntry(
new Path(relativePath_dotdot_slash_path), 0);
CIncludePathEntry incRelativeEntry_dotdot_slash_path = new CIncludePathEntry(new Path(relativePath_dotdot_slash_path), 0);
CIncludePathEntry incEntry_dotdot_path = new CIncludePathEntry(locationPath_dotdot_path, 0);
// use LOCAL flag not to clash with plain dot entries
CIncludePathEntry incRelativeEntry_dotdot_slash = new CIncludePathEntry(new Path(relativePath_dotdot_slash),
ICSettingEntry.LOCAL);
CIncludePathEntry incRelativeEntry_dot_slash = new CIncludePathEntry(new Path(relativePath_dot_slash),
ICSettingEntry.LOCAL);
CIncludePathEntry incRelativeEntry_dotdot_slash = new CIncludePathEntry(new Path(relativePath_dotdot_slash), ICSettingEntry.LOCAL);
CIncludePathEntry incRelativeEntry_dot_slash = new CIncludePathEntry(new Path(relativePath_dot_slash), ICSettingEntry.LOCAL);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(incRelativeEntry_dot);
@ -748,8 +721,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
String envPathStr = "${ProjDirPath}/Folder";
// get project/configuration descriptions
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -796,8 +768,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
}
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (this.rc.equals(rc))
return entries;
return null;
@ -806,14 +777,11 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
// create a project
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
assertNotNull(config);
// sample file
IFolder parentFolder = ResourceHelper.createFolder(project, "ParentFolder");
@ -828,8 +796,8 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
// add provider for parent folder
ILanguageSettingsProvider provider = new MockProviderForResource(parentFolder, entries);
assertNull(provider.getSettingEntries(config, file, null));
assertEquals(includePathEntry, provider.getSettingEntries(config, parentFolder, null).get(0));
assertNull(provider.getSettingEntries(cfgDescription, file, null));
assertEquals(includePathEntry, provider.getSettingEntries(cfgDescription, parentFolder, null).get(0));
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
@ -857,8 +825,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
String envPathStr = "${ProjDirPath}/Folder";
// get project/configuration descriptions
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);
@ -926,8 +893,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
}
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (langId==null || langId.equals(languageId))
return entries;
return new ArrayList<ICLanguageSettingEntry>();
@ -943,8 +909,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
IFolder incFolderC = ResourceHelper.createFolder(project, "includeC");
// get project/configuration descriptions
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project,
WRITEABLE);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription);

View file

@ -14,8 +14,8 @@ package org.eclipse.cdt.core.language.settings.providers;
import java.util.List;
import org.eclipse.cdt.core.AbstractExecutableExtensionBase;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IResource;
/**
@ -23,7 +23,7 @@ import org.eclipse.core.resources.IResource;
*/
public class MockLanguageSettingsProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsProvider {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc, String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
return null;
}
}

View file

@ -32,7 +32,6 @@ import org.eclipse.cdt.core.settings.model.ICStorageElement;
import org.eclipse.cdt.core.settings.model.ICTargetPlatformSetting;
import org.eclipse.cdt.core.settings.model.WriteAccessException;
import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
@ -43,8 +42,8 @@ import org.eclipse.core.runtime.QualifiedName;
*/
public class CModelMock {
/**
* Dummy implementation of ICProjectDescription for testing. Feel free to
* override the methods you are interested to mock.
* Dummy implementation of ICProjectDescription for testing.
* Feel free to override the methods you are interested to mock.
*/
public static class DummyCProjectDescription implements ICProjectDescription {
@ -89,7 +88,8 @@ public class CModelMock {
}
@Override
public ICStorageElement getStorage(String id, boolean create) throws CoreException {
public ICStorageElement getStorage(String id, boolean create)
throws CoreException {
return null;
}
@ -136,17 +136,20 @@ public class CModelMock {
}
@Override
public void setActiveConfiguration(ICConfigurationDescription cfg) throws WriteAccessException {
public void setActiveConfiguration(ICConfigurationDescription cfg)
throws WriteAccessException {
}
@Override
public ICConfigurationDescription createConfiguration(String id, String name, ICConfigurationDescription base)
public ICConfigurationDescription createConfiguration(String id,
String name, ICConfigurationDescription base)
throws CoreException, WriteAccessException {
return null;
}
@Override
public ICConfigurationDescription createConfiguration(String buildSystemId, CConfigurationData data)
public ICConfigurationDescription createConfiguration(
String buildSystemId, CConfigurationData data)
throws CoreException, WriteAccessException {
return null;
}
@ -162,11 +165,13 @@ public class CModelMock {
}
@Override
public void removeConfiguration(String name) throws WriteAccessException {
public void removeConfiguration(String name)
throws WriteAccessException {
}
@Override
public void removeConfiguration(ICConfigurationDescription cfg) throws WriteAccessException {
public void removeConfiguration(ICConfigurationDescription cfg)
throws WriteAccessException {
}
@Override
@ -195,7 +200,8 @@ public class CModelMock {
}
@Override
public void setDefaultSettingConfiguration(ICConfigurationDescription cfg) {
public void setDefaultSettingConfiguration(
ICConfigurationDescription cfg) {
}
@Override
@ -210,8 +216,8 @@ public class CModelMock {
}
/**
* Dummy implementation of ICConfigurationDescription for testing. Feel free
* to override the methods you are interested to mock.
* Dummy implementation of ICConfigurationDescription for testing.
* Feel free to override the methods you are interested to mock.
*/
public static class DummyCConfigurationDescription implements ICConfigurationDescription {
private String id;
@ -261,7 +267,8 @@ public class CModelMock {
}
@Override
public ICStorageElement getStorage(String id, boolean create) throws CoreException {
public ICStorageElement getStorage(String id, boolean create)
throws CoreException {
return null;
}
@ -319,23 +326,27 @@ public class CModelMock {
}
@Override
public ICResourceDescription getResourceDescription(IPath path, boolean exactPath) {
public ICResourceDescription getResourceDescription(IPath path,
boolean exactPath) {
return null;
}
@Override
public void removeResourceDescription(ICResourceDescription des) throws CoreException, WriteAccessException {
public void removeResourceDescription(ICResourceDescription des)
throws CoreException, WriteAccessException {
}
@Override
public ICFileDescription createFileDescription(IPath path, ICResourceDescription base)
throws CoreException, WriteAccessException {
public ICFileDescription createFileDescription(IPath path,
ICResourceDescription base) throws CoreException,
WriteAccessException {
return null;
}
@Override
public ICFolderDescription createFolderDescription(IPath path, ICFolderDescription base)
throws CoreException, WriteAccessException {
public ICFolderDescription createFolderDescription(IPath path,
ICFolderDescription base) throws CoreException,
WriteAccessException {
return null;
}
@ -396,8 +407,9 @@ public class CModelMock {
}
@Override
public ICExternalSetting createExternalSetting(String[] languageIDs, String[] contentTypeIds,
String[] extensions, ICSettingEntry[] entries) throws WriteAccessException {
public ICExternalSetting createExternalSetting(String[] languageIDs,
String[] contentTypeIds, String[] extensions,
ICSettingEntry[] entries) throws WriteAccessException {
return null;
}
@ -477,37 +489,6 @@ public class CModelMock {
public CConfigurationStatus getConfigurationStatus() {
return null;
}
}
public static class DummyBuildConfiguration implements IBuildConfiguration {
private final DummyCConfigurationDescription desc;
public DummyBuildConfiguration(DummyCConfigurationDescription desc) {
this.desc = desc;
}
@Override
public <T> T getAdapter(Class<T> adapter) {
if (adapter.isInstance(desc)) {
return (T) desc;
}
return null;
}
@Override
public IProject getProject() {
ICProjectDescription projDesc = desc.getProjectDescription();
if (projDesc != null) {
return projDesc.getProject();
} else {
return null;
}
}
@Override
public String getName() {
return desc.getName();
}
}
}

View file

@ -78,4 +78,287 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
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.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
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_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
org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=110
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

View file

@ -1,3 +1,4 @@
eclipse.preferences.version=1
formatter_profile=_CDT
formatter_settings_version=12
internal.default.compliance=user

View file

@ -10,21 +10,32 @@
*******************************************************************************/
package org.eclipse.cdt.core.language.settings.providers;
import java.util.List;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.core.resources.IResource;
/**
* This interface is to be implemented by providers which want to broadcast the changes in their
* setting entries with {@link ILanguageSettingsChangeEvent}.
* This interface is to be implemented by providers which want to broadcast the changes in their setting entries
* with {@link ILanguageSettingsChangeEvent}.
*
* @since 5.4
*/
public interface ILanguageSettingsBroadcastingProvider extends ILanguageSettingsProvider {
@Override
public String getId();
@Override
public String getName();
@Override
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId);
/**
* Return a copy of internal storage. This should be a deep copy/clone of the storage. It is
* used to calculate the delta and being kept in the last state object of configuration
* Return a copy of internal storage. This should be a deep copy/clone of the storage.
* It is used to calculate the delta and being kept in the last state object of configuration
* description to compare to a new state later.
*
* @return a copy of internal storage.
*/
public LanguageSettingsStorage copyStorage();
}

View file

@ -14,67 +14,42 @@ import java.util.List;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IResource;
/**
* This interface is used in UI to identify classes allowing user to modify settings externally
* contrary to some subclasses of {@link LanguageSettingsSerializableProvider} managing their
* settings themselves and not providing such option to the user.
* contrary to some subclasses of {@link LanguageSettingsSerializableProvider} managing
* their settings themselves and not providing such option to the user.
*
* @since 5.4
*/
public interface ILanguageSettingsEditableProvider extends ILanguageSettingsBroadcastingProvider, Cloneable {
@Override
public String getId();
@Override
public String getName();
@Override
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId);
/**
* Sets language settings entries for the provider.
*
* @param config
* configuration.
* @param rc
* resource such as file or folder. If {@code null} the entries are considered to be
* being defined as default entries for resources.
* @param languageId
* language id. If {@code null}, then entries are considered to be defined as default
* entries for languages.
* @param entries
* language settings entries to set.
* @since 6.0
* @param cfgDescription - configuration description.
* @param rc - resource such as file or folder. If {@code null} the entries are
* considered to be being defined as default entries for resources.
* @param languageId - language id. If {@code null}, then entries are considered
* to be defined as default entries for languages.
* @param entries - language settings entries to set.
*/
default public void setSettingEntries(IBuildConfiguration config, IResource rc, String languageId,
List<? extends ICLanguageSettingEntry> entries) {
// Call the old method by default
setSettingEntries(config.getAdapter(ICConfigurationDescription.class), rc, languageId, entries);
}
public void setSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId,
List<? extends ICLanguageSettingEntry> entries);
/**
* Sets language settings entries for the provider.
*
* @param cfgDescription
* configuration description.
* @param rc
* resource such as file or folder. If {@code null} the entries are considered to be
* being defined as default entries for resources.
* @param languageId
* language id. If {@code null}, then entries are considered to be defined as default
* entries for languages.
* @param entries
* language settings entries to set.
* @deprecated use {@link #getSettingEntries(IBuildConfiguration, IResource, String)}
*/
@Deprecated
default public void setSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId,
List<? extends ICLanguageSettingEntry> entries) {
// Do nothing by default
}
/**
* Shallow clone of the provider. "Shallow" is defined here as the exact copy except that the
* copy will have zero language settings entries.
* Shallow clone of the provider. "Shallow" is defined here as the exact copy except that
* the copy will have zero language settings entries.
*
* @return shallow copy of the provider.
* @throws CloneNotSupportedException
* in case {@link #clone()} throws the exception.
* @throws CloneNotSupportedException in case {@link #clone()} throws the exception.
*/
public ILanguageSettingsEditableProvider cloneShallow() throws CloneNotSupportedException;
@ -82,5 +57,4 @@ public interface ILanguageSettingsEditableProvider extends ILanguageSettingsBroa
* @see Object#clone()
*/
public ILanguageSettingsEditableProvider clone() throws CloneNotSupportedException;
}

View file

@ -17,36 +17,35 @@ import org.eclipse.cdt.core.model.LanguageManager;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IResource;
/**
* Base interface to provide list of {@link ICLanguageSettingEntry}. This interface is used to
* deliver additions to compiler options such as include paths (-I) or preprocessor defines (-D) and
* others (see {@link ICSettingEntry#INCLUDE_PATH} and other kinds). <br>
* <br>
* Base interface to provide list of {@link ICLanguageSettingEntry}.
* This interface is used to deliver additions to compiler options such as
* include paths (-I) or preprocessor defines (-D) and others (see
* {@link ICSettingEntry#INCLUDE_PATH} and other kinds).
* <br><br>
* To define a provider like that use extension point
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} and implement this interface. The
* recommended way of implementing is to extend {@link LanguageSettingsSerializableProvider} and
* implement {@link ILanguageSettingsEditableProvider}. That will give the ability to persist and
* edit/clean entries by user in UI. The clone methods defined by
* {@link ILanguageSettingsEditableProvider} should be chained as done for example by
* {@link LanguageSettingsGenericProvider}. <br>
* <br>
* CDT provides a few general use implementations in the core such as
* {@link LanguageSettingsBaseProvider} or {@link LanguageSettingsSerializableProvider} or
* {@link LanguageSettingsGenericProvider} which could be used out of the box or built upon. There
* are also abstract classes in build plugins {@code AbstractBuildCommandParser} and
* {@code AbstractBuiltinSpecsDetector} which serve as a base for output parsers and built-in
* compiler language settings detectors. See also extension point schema description
* LanguageSettingsProvider.exsd.
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} and implement this
* interface. The recommended way of implementing is to extend
* {@link LanguageSettingsSerializableProvider} and implement {@link ILanguageSettingsEditableProvider}.
* That will give the ability to persist and edit/clean entries by user in UI.
* The clone methods defined by {@link ILanguageSettingsEditableProvider} should be
* chained as done for example by {@link LanguageSettingsGenericProvider}.
* <br><br>
* CDT provides a few general use implementations in the core such as {@link LanguageSettingsBaseProvider}
* or {@link LanguageSettingsSerializableProvider} or {@link LanguageSettingsGenericProvider}
* which could be used out of the box or built upon. There are also abstract classes in build
* plugins {@code AbstractBuildCommandParser} and {@code AbstractBuiltinSpecsDetector} which
* serve as a base for output parsers and built-in compiler language settings detectors.
* See also extension point schema description LanguageSettingsProvider.exsd.
*
* @since 5.4
*/
public interface ILanguageSettingsProvider {
/**
* Id is used to keep track of the providers internally. Use unique id to represent the
* provider.
* Id is used to keep track of the providers internally. Use unique id
* to represent the provider.
*
* @return Id of the provider.
*/
@ -60,72 +59,28 @@ public interface ILanguageSettingsProvider {
public String getName();
/**
* Returns the list of setting entries for the given configuration description, resource and
* language. <br>
* <br>
* Note to implementers - this method should not be used to do any long running operations such
* as extensive calculations or reading files. If you need to do so, the recommended way is to
* do the calculations outside of this function call - in advance and on appropriate event. For
* example, Build Output Parser prepares the list and stores it in internal cache while parsing
* output. {@link #getSettingEntries(IBuildConfiguration, IResource, String)} will return cached
* entries when asked. You can also implement {@link ICListenerAgent} interface to get
* registered and listen to arbitrary events.
* Returns the list of setting entries for the given configuration description,
* resource and language.
* <br><br>
* Note to implementers - this method should not be used to do any long running
* operations such as extensive calculations or reading files. If you need to do
* so, the recommended way is to do the calculations outside of
* this function call - in advance and on appropriate event. For example, Build
* Output Parser prepares the list and stores it in internal cache while parsing output.
* {@link #getSettingEntries(ICConfigurationDescription, IResource, String)} will
* return cached entries when asked. You can also implement {@link ICListenerAgent}
* interface to get registered and listen to arbitrary events.
*
* @param config
* - configuration.
* @param rc
* - resource such as file or folder. If {@code null}, the default entries for all
* resources are returned.
* @param languageId
* - language id. If {@code null}, the default entries for all languages are
* returned. (see
* {@link LanguageManager#getLanguageForFile(org.eclipse.core.resources.IFile, ICConfigurationDescription)}
* ).
* @param cfgDescription - configuration description.
* @param rc - resource such as file or folder.
* If {@code null}, the default entries for all resources are returned.
* @param languageId - language id.
* If {@code null}, the default entries for all languages are returned.
* (see {@link LanguageManager#getLanguageForFile(org.eclipse.core.resources.IFile, ICConfigurationDescription)}).
*
* @return the list of setting entries or {@code null} if no settings defined. The list needs to
* be a pooled list created by {@link LanguageSettingsStorage#getPooledList(List)} to
* save memory and avoid deep equality comparisons.
* @since 6.0
* @return the list of setting entries or {@code null} if no settings defined.
* The list needs to be a pooled list created by {@link LanguageSettingsStorage#getPooledList(List)}
* to save memory and avoid deep equality comparisons.
*/
default public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
// call the old one by default
return getSettingEntries(config.getAdapter(ICConfigurationDescription.class), rc, languageId);
}
/**
* Returns the list of setting entries for the given configuration description, resource and
* language. <br>
* <br>
* Note to implementers - this method should not be used to do any long running operations such
* as extensive calculations or reading files. If you need to do so, the recommended way is to
* do the calculations outside of this function call - in advance and on appropriate event. For
* example, Build Output Parser prepares the list and stores it in internal cache while parsing
* output. {@link #getSettingEntries(IBuildConfiguration, IResource, String)} will return cached
* entries when asked. You can also implement {@link ICListenerAgent} interface to get
* registered and listen to arbitrary events.
*
* @param cfgDescription
* - configuration description.
* @param rc
* - resource such as file or folder. If {@code null}, the default entries for all
* resources are returned.
* @param languageId
* - language id. If {@code null}, the default entries for all languages are
* returned. (see
* {@link LanguageManager#getLanguageForFile(org.eclipse.core.resources.IFile, ICConfigurationDescription)}
* ).
*
* @return the list of setting entries or {@code null} if no settings defined. The list needs to
* be a pooled list created by {@link LanguageSettingsStorage#getPooledList(List)} to
* save memory and avoid deep equality comparisons.
* @deprecated use {@link #getSettingEntries(IBuildConfiguration, IResource, String)}
*/
@Deprecated
default public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription,
IResource rc, String languageId) {
// return null by default
return null;
}
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId);
}

View file

@ -23,24 +23,19 @@ import org.eclipse.cdt.core.AbstractExecutableExtensionBase;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.internal.core.settings.model.SettingsModelMessages;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IResource;
/**
* {@code LanguageSettingsBaseProvider} is a basic implementation of
* {@link ILanguageSettingsProvider} for the extensions defined by
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point.
* {@code LanguageSettingsBaseProvider} is a basic implementation of {@link ILanguageSettingsProvider}
* for the extensions defined by {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point.
*
* This implementation supports "static" list of entries for languages specified in the extension
* point.
* This implementation supports "static" list of entries for languages specified in
* the extension point.
*
* @since 5.4
*/
public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBase
implements ILanguageSettingsProvider {
/**
* Language scope, i.e. list of languages the entries will be provided for.
*/
public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsProvider {
/** Language scope, i.e. list of languages the entries will be provided for. */
protected List<String> languageScope = null;
/** Provider-specific properties */
@ -59,10 +54,8 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
/**
* Constructor. Creates an "empty" non-configured provider.
*
* @param id
* - id of the provider.
* @param name
* - name of the provider to be presented to a user.
* @param id - id of the provider.
* @param name - name of the provider to be presented to a user.
*/
public LanguageSettingsBaseProvider(String id, String name) {
super(id, name);
@ -71,16 +64,13 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
/**
* Constructor.
*
* @param id
* - id of the provider.
* @param name
* - name of the provider to be presented to a user.
* @param languages
* - list of languages the {@code entries} provided for. {@code languages} can be
* {@code null}, in this case the {@code entries} are provided for any language.
* @param entries
* - the list of language settings entries this provider provides. If {@code null} is
* passed, the provider creates an empty list.
* @param id - id of the provider.
* @param name - name of the provider to be presented to a user.
* @param languages - list of languages the {@code entries} provided for.
* {@code languages} can be {@code null}, in this case the {@code entries}
* are provided for any language.
* @param entries - the list of language settings entries this provider provides.
* If {@code null} is passed, the provider creates an empty list.
*/
public LanguageSettingsBaseProvider(String id, String name, List<String> languages,
List<ICLanguageSettingEntry> entries) {
@ -92,18 +82,14 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
/**
* Constructor.
*
* @param id
* - id of the provider.
* @param name
* - name of the provider to be presented to a user.
* @param languages
* - list of languages the {@code entries} provided for. {@code languages} can be
* {@code null}, in this case the {@code entries} are provided for any language.
* @param entries
* - the list of language settings entries this provider provides. If {@code null} is
* passed, the provider creates an empty list.
* @param properties
* - custom properties as the means to customize providers.
* @param id - id of the provider.
* @param name - name of the provider to be presented to a user.
* @param languages - list of languages the {@code entries} provided for.
* {@code languages} can be {@code null}, in this case the {@code entries}
* are provided for any language.
* @param entries - the list of language settings entries this provider provides.
* If {@code null} is passed, the provider creates an empty list.
* @param properties - custom properties as the means to customize providers.
*/
public LanguageSettingsBaseProvider(String id, String name, List<String> languages,
List<ICLanguageSettingEntry> entries, Map<String, String> properties) {
@ -115,33 +101,28 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
}
/**
* A method to configure the provider. The initialization of provider from the extension point
* is done in 2 steps. First, the class is created as an executable extension using the default
* provider. Then this method is used to configure the provider. <br>
* <br>
* A method to configure the provider. The initialization of provider from
* the extension point is done in 2 steps. First, the class is created as
* an executable extension using the default provider. Then this method is
* used to configure the provider.
*<br><br>
* It is not allowed to reconfigure the provider.
*
* @param id
* - id of the provider.
* @param name
* - name of the provider to be presented to a user.
* @param languages
* - list of languages the {@code entries} provided for. {@code languages} can be
* {@code null}, in this case the {@code entries} are provided for any language.
* @param entries
* - the list of language settings entries this provider provides. If {@code null} is
* passed, the provider creates an empty list.
* @param properties
* - custom properties as the means to customize providers.
* @param id - id of the provider.
* @param name - name of the provider to be presented to a user.
* @param languages - list of languages the {@code entries} provided for.
* {@code languages} can be {@code null}, in this case the {@code entries}
* are provided for any language.
* @param entries - the list of language settings entries this provider provides.
* If {@code null} is passed, the provider creates an empty list.
* @param properties - custom properties as the means to customize providers.
*
* @throws UnsupportedOperationException
* if an attempt to reconfigure provider is made.
* @throws UnsupportedOperationException if an attempt to reconfigure provider is made.
*/
public void configureProvider(String id, String name, List<String> languages,
List<ICLanguageSettingEntry> entries, Map<String, String> properties) {
if (this.entries!=null || !this.properties.isEmpty())
throw new UnsupportedOperationException(
SettingsModelMessages.getString("LanguageSettingsBaseProvider.CanBeConfiguredOnlyOnce")); //$NON-NLS-1$
throw new UnsupportedOperationException(SettingsModelMessages.getString("LanguageSettingsBaseProvider.CanBeConfiguredOnlyOnce")); //$NON-NLS-1$
setId(id);
setName(name);
@ -152,16 +133,16 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
}
/**
* {@code LanguageSettingsBaseProvider} keeps the list of key-value pairs so extenders of this
* class can customize the provider. The properties of {@code LanguageSettingsBaseProvider} come
* from the extension in plugin.xml although the extenders can provide their own method. <br>
* <br>
* Please note that empty string value is treated as "default" value and the same as
* {@code null} and the same as missing property, which allows {@link #equals(Object)} evaluate
* the property as equal while comparing providers.
* {@code LanguageSettingsBaseProvider} keeps the list of key-value pairs
* so extenders of this class can customize the provider. The properties
* of {@code LanguageSettingsBaseProvider} come from the extension in plugin.xml
* although the extenders can provide their own method.
* <br><br>
* Please note that empty string value is treated as "default" value and
* the same as {@code null} and the same as missing property, which allows
* {@link #equals(Object)} evaluate the property as equal while comparing providers.
*
* @param key
* - property to check the value.
* @param key - property to check the value.
* @return value of the property. If the property is missing returns empty string.
*/
public String getProperty(String key) {
@ -174,13 +155,11 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
/**
* Convenience method to get boolean property.
*
* @see #getProperty(String)
*
* @param key
* - property to check the value.
* @return boolean value of the property. If the property is missing or cannot be interpreted as
* boolean returns {@code false}.
* @param key - property to check the value.
* @return boolean value of the property. If the property is missing or cannot be
* interpreted as boolean returns {@code false}.
*/
public boolean getPropertyBool(String key) {
return Boolean.parseBoolean(properties.get(key));
@ -196,43 +175,30 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
/**
* {@inheritDoc}
*
* @param languageId
* - language id. If {@code null}, then entries defined for the language scope are
* returned. See {@link #getLanguageScope()}
* @param languageId - language id. If {@code null}, then entries defined for
* the language scope are returned. See {@link #getLanguageScope()}
*
* @return unmodifiable list of setting entries or {@code null} if no settings defined. the list
* is internally pooled and guaranteed to be the same object for equal lists.
* @since 6.0
* @return unmodifiable list of setting entries or {@code null} if no settings defined.
* the list is internally pooled and guaranteed to be the same object for equal
* lists.
*/
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc, String languageId) {
// For backwards compatibility
if (config != null) {
ICConfigurationDescription cfgDesc = config.getAdapter(ICConfigurationDescription.class);
if (cfgDesc != null) {
List<ICLanguageSettingEntry> entriesOld = getSettingEntries(cfgDesc, rc, languageId);
if (entriesOld != null) {
return entriesOld;
}
}
}
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription,
IResource rc, String languageId) {
if (languageScope == null) {
return entries;
}
for (String lang : languageScope) {
if (lang.equals(languageId)) {
return entries;
}
}
return null;
}
/**
* @return the unmodifiable list of languages this provider provides for. If {@code null}, the
* provider provides for any language.
* @return the unmodifiable list of languages this provider provides for.
* If {@code null}, the provider provides for any language.
*/
public List<String> getLanguageScope() {
if (languageScope==null)
@ -301,8 +267,7 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
} else if (other.properties == null) {
return false;
} else {
// The trouble to ensure default properties are equal to missing
// ones.
// The trouble to ensure default properties are equal to missing ones.
Set<String> keys = new HashSet<String>(properties.keySet());
keys.addAll(other.properties.keySet());
for (String key : keys) {

View file

@ -28,90 +28,78 @@ import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsExtensionManager;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
/**
* A collection of utility methods to manage language settings providers. See
* {@link ILanguageSettingsProvider}.
* A collection of utility methods to manage language settings providers.
* See {@link ILanguageSettingsProvider}.
*
* @since 5.4
*/
public class LanguageSettingsManager {
/**
* Returns the list of setting entries of a certain kind (such as include paths) for the given
* configuration description, resource and language. This is a combined list for all providers
* taking into account settings of parent folder if settings for the given resource are not
* defined. For include paths both local (#include "...") and system (#include <...>) entries
* are returned.
* Returns the list of setting entries of a certain kind (such as include paths)
* for the given configuration description, resource and language. This is a
* combined list for all providers taking into account settings of parent folder
* if settings for the given resource are not defined. For include paths both
* local (#include "...") and system (#include <...>) entries are returned.
*
* @param config
* - configuration.
* @param rc
* - resource such as file or folder.
* @param languageId
* - language id.
* @param kind
* - kind of language settings entries, such as {@link ICSettingEntry#INCLUDE_PATH}
* etc. This is a binary flag and it is possible to specify composite kind. Use
* {@link ICSettingEntry#ALL} to get all kinds.
* @param cfgDescription - configuration description.
* @param rc - resource such as file or folder.
* @param languageId - language id.
* @param kind - kind of language settings entries, such as
* {@link ICSettingEntry#INCLUDE_PATH} etc. This is a binary flag
* and it is possible to specify composite kind.
* Use {@link ICSettingEntry#ALL} to get all kinds.
*
* @return the list of setting entries.
*
* @since 6.0
* @since 5.5
*/
public static List<ICLanguageSettingEntry> getSettingEntriesByKind(IBuildConfiguration config,
IResource rc, String languageId, int kind) {
return LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config, rc, languageId, kind);
public static List<ICLanguageSettingEntry> getSettingEntriesByKind(ICConfigurationDescription cfgDescription, IResource rc, String languageId, int kind) {
return LanguageSettingsProvidersSerializer.getSettingEntriesByKind(cfgDescription, rc, languageId, kind);
}
/**
* Returns the list of setting entries of the given provider for the given configuration
* description, resource and language. This method reaches to the parent folder of the resource
* recursively if the resource does not define the entries for the given provider.
* Returns the list of setting entries of the given provider
* for the given configuration description, resource and language.
* This method reaches to the parent folder of the resource recursively
* if the resource does not define the entries for the given provider.
*
* @param provider
* - language settings provider.
* @param config
* - configuration.
* @param rc
* - resource such as file or folder.
* @param languageId
* - language id.
* @param provider - language settings provider.
* @param cfgDescription - configuration description.
* @param rc - resource such as file or folder.
* @param languageId - language id.
*
* @return the list of setting entries. Never returns {@code null} although individual providers
* return {@code null} if no settings defined.
* @since 6.0
* @return the list of setting entries. Never returns {@code null}
* although individual providers return {@code null} if no settings defined.
*/
public static List<ICLanguageSettingEntry> getSettingEntriesUpResourceTree(
ILanguageSettingsProvider provider, IBuildConfiguration config, IResource rc, String languageId) {
return LanguageSettingsProvidersSerializer.getSettingEntriesUpResourceTree(provider, config, rc,
languageId);
public static List<ICLanguageSettingEntry> getSettingEntriesUpResourceTree(ILanguageSettingsProvider provider, ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
return LanguageSettingsProvidersSerializer.getSettingEntriesUpResourceTree(provider, cfgDescription, rc, languageId);
}
/**
* Get Language Settings Provider from the list of workspace providers, see
* {@link #getWorkspaceProviders()}.
* Get Language Settings Provider from the list of workspace providers,
* see {@link #getWorkspaceProviders()}.
*
* @param id
* - id of provider to find.
* @return the workspace provider. If workspace provider is not defined a new instance is
* created and returned.
* @param id - id of provider to find.
* @return the workspace provider. If workspace provider is not defined
* a new instance is created and returned.
*/
public static ILanguageSettingsProvider getWorkspaceProvider(String id) {
return LanguageSettingsProvidersSerializer.getWorkspaceProvider(id);
}
/**
* Get Language Settings Providers defined in the workspace. That includes user-defined
* providers and after that providers defined as extensions via
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point. Note that this returns
* wrappers around workspace provider so underlying provider could be replaced internally
* without need to change configuration. See also
* {@link #getRawProvider(ILanguageSettingsProvider)}.
* Get Language Settings Providers defined in the workspace. That includes
* user-defined providers and after that providers defined as extensions via
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point.
* Note that this returns wrappers around workspace provider so underlying
* provider could be replaced internally without need to change configuration.
* See also {@link #getRawProvider(ILanguageSettingsProvider)}.
*
* @return list of workspace providers.
*/
@ -120,12 +108,12 @@ public class LanguageSettingsManager {
}
/**
* Checks if the provider is a workspace level provider. This method is intended to check
* providers retrieved from a configuration. Raw providers from
* {@link #getRawProvider(ILanguageSettingsProvider)} are not considered as workspace providers.
* Checks if the provider is a workspace level provider.
* This method is intended to check providers retrieved from a configuration.
* Raw providers from {@link #getRawProvider(ILanguageSettingsProvider)}
* are not considered as workspace providers.
*
* @param provider
* - provider to check.
* @param provider - provider to check.
* @return {@code true} if the given provider is workspace provider, {@code false} otherwise.
*/
public static boolean isWorkspaceProvider(ILanguageSettingsProvider provider) {
@ -135,14 +123,11 @@ public class LanguageSettingsManager {
/**
* Helper method to get to real underlying provider collecting entries as opposed to wrapper
* which is normally used for workspace provider.
*
* @see LanguageSettingsProvidersSerializer#isWorkspaceProvider(ILanguageSettingsProvider)
*
* @param provider
* - the provider to get raw provider for. Can be either workspace provider or
* regular one.
* @return raw underlying provider for workspace provider or provider itself if no wrapper is
* used.
* @param provider - the provider to get raw provider for. Can be either workspace provider
* or regular one.
* @return raw underlying provider for workspace provider or provider itself if no wrapper is used.
*/
public static ILanguageSettingsProvider getRawProvider(ILanguageSettingsProvider provider) {
if (isWorkspaceProvider(provider)) {
@ -151,42 +136,38 @@ public class LanguageSettingsManager {
return provider;
}
/**
* Set and store in workspace area user defined providers.
*
* @param providers
* - array of user defined workspace providers. Note that those providers will shadow
* extension providers with the same ID. All not shadowed extension providers will be
* added to the list to be present as workspace providers. {@code null} is equivalent
* to passing an empty array and so will reset workspace providers to match extension
* providers.
* @throws CoreException
* in case of problems (such as problems with persistence).
* @param providers - array of user defined workspace providers.
* Note that those providers will shadow extension providers with the same ID.
* All not shadowed extension providers will be added to the list to be present
* as workspace providers. {@code null} is equivalent to passing an empty array
* and so will reset workspace providers to match extension providers.
* @throws CoreException in case of problems (such as problems with persistence).
*/
public static void setWorkspaceProviders(List<ILanguageSettingsProvider> providers) throws CoreException {
LanguageSettingsProvidersSerializer.setWorkspaceProviders(providers);
}
/**
* Copy language settings provider. It is different from clone() methods in that it does not
* throw {@code CloneNotSupportedException} but returns {@code null} instead.
* Copy language settings provider. It is different from clone() methods in that
* it does not throw {@code CloneNotSupportedException} but returns {@code null}
* instead.
*
* @param provider
* - language settings provider to copy.
* @param deep
* - {@code true} to request deep copy including copying settings entries or
* {@code false} to return shallow copy with no settings entries.
* @param provider - language settings provider to copy.
* @param deep - {@code true} to request deep copy including copying settings entries
* or {@code false} to return shallow copy with no settings entries.
*
* @return a copy of the provider or null if copying is not possible.
*/
public static ILanguageSettingsEditableProvider getProviderCopy(
ILanguageSettingsEditableProvider provider, boolean deep) {
public static ILanguageSettingsEditableProvider getProviderCopy(ILanguageSettingsEditableProvider provider, boolean deep) {
return LanguageSettingsExtensionManager.getProviderCopy(provider, deep);
}
/**
* Returns list of provider id-s contributed by all extensions.
*
* @return the provider id-s.
*/
public static Set<String> getExtensionProviderIds() {
@ -195,17 +176,14 @@ public class LanguageSettingsManager {
/**
* Get language settings provider defined via extension point
* {@code org.eclipse.cdt.core.LanguageSettingsProvider}. A new copy of the extension provider
* is returned.
* {@code org.eclipse.cdt.core.LanguageSettingsProvider}.
* A new copy of the extension provider is returned.
*
* @param id
* - ID of the extension provider.
* @param deep
* - {@code true} to request deep copy including copying settings entries or
* {@code false} to return shallow copy with no settings entries.
* @return the copy of the extension provider if possible (i.e. for
* {@link ILanguageSettingsEditableProvider}) or {@code null} if provider is not
* copyable.
* @param id - ID of the extension provider.
* @param deep - {@code true} to request deep copy including copying settings entries
* or {@code false} to return shallow copy with no settings entries.
* @return the copy of the extension provider if possible (i.e. for {@link ILanguageSettingsEditableProvider})
* or {@code null} if provider is not copyable.
*/
public static ILanguageSettingsProvider getExtensionProviderCopy(String id, boolean deep) {
return LanguageSettingsExtensionManager.getExtensionProviderCopy(id, deep);
@ -215,11 +193,9 @@ public class LanguageSettingsManager {
* Test if the provider is equal to the one defined via extension point
* {@code org.eclipse.cdt.core.LanguageSettingsProvider}.
*
* @param provider
* - the provider to test.
* @param deep
* - {@code true} to check for deep equality testing also settings entries or
* {@code false} to test shallow copy with no settings entries.
* @param provider - the provider to test.
* @param deep - {@code true} to check for deep equality testing also settings entries
* or {@code false} to test shallow copy with no settings entries.
* @return - {@code true} if the provider matches the extension or {@code false} otherwise.
*/
public static boolean isEqualExtensionProvider(ILanguageSettingsProvider provider, boolean deep) {
@ -227,13 +203,13 @@ public class LanguageSettingsManager {
}
/**
* Find language IDs for the resource represented by resource description. Under the hood build
* component is inquired and the language IDs would commonly come from the input type(s).
* Find language IDs for the resource represented by resource description.
* Under the hood build component is inquired and the language IDs would
* commonly come from the input type(s).
*
* @param rcDescription
* - resource description
* @return list of language IDs for the resource. The list can contain {@code null} ID. Never
* returns {@code null} but empty list if no languages can be found.
* @param rcDescription - resource description
* @return list of language IDs for the resource. The list can contain {@code null} ID.
* Never returns {@code null} but empty list if no languages can be found.
*
*/
public static List<String> getLanguages(ICResourceDescription rcDescription) {
@ -263,14 +239,14 @@ public class LanguageSettingsManager {
}
/**
* Find language IDs for the resource in given build configuration. Under the hood build
* component is inquired and the language IDs would commonly come from the input type(s).
* Find language IDs for the resource in given build configuration.
* Under the hood build component is inquired and the language IDs would
* commonly come from the input type(s).
*
* @param resource
* - the resource to find languages for.
* @param resource - the resource to find languages for.
* @param cfgDescription
* @return list of language IDs for the resource. Never returns {@code null} but empty list if
* no languages can be found.
* @return list of language IDs for the resource.
* Never returns {@code null} but empty list if no languages can be found.
*/
public static List<String> getLanguages(IResource resource, ICConfigurationDescription cfgDescription) {
List<String> languageIds = new ArrayList<String>();
@ -287,8 +263,7 @@ public class LanguageSettingsManager {
if (langId == null) {
// Try getting language from content types
try {
ILanguage lang = LanguageManager.getInstance().getLanguageForFile((IFile) resource,
cfgDescription);
ILanguage lang = LanguageManager.getInstance().getLanguageForFile((IFile) resource, cfgDescription);
if (lang != null) {
langId = lang.getId();
}
@ -313,8 +288,7 @@ public class LanguageSettingsManager {
/**
* Adds a listener that will be notified of changes in language settings.
*
* @param listener
* the listener to add
* @param listener the listener to add
*/
public static void registerLanguageSettingsChangeListener(ILanguageSettingsChangeListener listener) {
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(listener);
@ -323,35 +297,33 @@ public class LanguageSettingsManager {
/**
* Removes a language settings change listener.
*
* @param listener
* the listener to remove.
* @param listener the listener to remove.
*/
public static void unregisterLanguageSettingsChangeListener(ILanguageSettingsChangeListener listener) {
LanguageSettingsProvidersSerializer.unregisterLanguageSettingsChangeListener(listener);
}
/**
* Tells if the provider is meant to be shared between projects in workspace or belong to a
* specific configuration. This attribute is defined in
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point. <br>
* Note that only {@link ILanguageSettingsEditableProvider} can be owned by a configuration.
* Tells if the provider is meant to be shared between projects in workspace
* or belong to a specific configuration. This attribute is defined in
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point.
* <br>Note that only {@link ILanguageSettingsEditableProvider} can be owned by
* a configuration.
*
* @param id
* - ID of the provider to inquire.
* @return {@code true} if the provider is designed to be shared, {@code false} if
* configuration-owned.
* @param id - ID of the provider to inquire.
* @return {@code true} if the provider is designed to be shared,
* {@code false} if configuration-owned.
*/
public static boolean isPreferShared(String id) {
return LanguageSettingsExtensionManager.isPreferShared(id);
}
/**
* Tells if language settings entries of the provider are persisted with the project (under
* .settings/ folder) or in workspace area. Persistence in the project area lets the entries
* migrate with the project.
* Tells if language settings entries of the provider are persisted with the project
* (under .settings/ folder) or in workspace area. Persistence in the project area lets
* the entries migrate with the project.
*
* @param provider
* - provider to check the persistence mode.
* @param provider - provider to check the persistence mode.
* @return {@code true} if LSE persisted with the project or {@code false} if in the workspace.
*/
public static boolean isStoringEntriesInProjectArea(LanguageSettingsSerializableProvider provider) {
@ -361,23 +333,19 @@ public class LanguageSettingsManager {
/**
* Define where language settings are persisted for the provider.
*
* @param provider
* - provider to set the persistence mode.
* @param storeEntriesWithProject
* - {@code true} if with the project, {@code false} if in workspace area.
* @param provider - provider to set the persistence mode.
* @param storeEntriesWithProject - {@code true} if with the project,
* {@code false} if in workspace area.
*/
public static void setStoringEntriesInProjectArea(LanguageSettingsSerializableProvider provider,
boolean storeEntriesWithProject) {
public static void setStoringEntriesInProjectArea(LanguageSettingsSerializableProvider provider, boolean storeEntriesWithProject) {
LanguageSettingsProvidersSerializer.setStoringEntriesInProjectArea(provider, storeEntriesWithProject);
}
/**
* Save language settings providers of a project to persistent storage.
*
* @param prjDescription
* - project description of the project.
* @throws CoreException
* if something goes wrong.
* @param prjDescription - project description of the project.
* @throws CoreException if something goes wrong.
*/
public static void serializeLanguageSettings(ICProjectDescription prjDescription) throws CoreException {
LanguageSettingsProvidersSerializer.serializeLanguageSettings(prjDescription);
@ -386,8 +354,7 @@ public class LanguageSettingsManager {
/**
* Save language settings providers of the workspace (global providers) to persistent storage.
*
* @throws CoreException
* if something goes wrong.
* @throws CoreException if something goes wrong.
*/
public static void serializeLanguageSettingsWorkspace() throws CoreException {
LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace();
@ -396,16 +363,15 @@ public class LanguageSettingsManager {
/**
* Save language settings providers of a project to persistent storage in a background job.
*
* @param prjDescription
* - project description of the project.
* @param prjDescription - project description of the project.
*/
public static void serializeLanguageSettingsInBackground(ICProjectDescription prjDescription) {
LanguageSettingsProvidersSerializer.serializeLanguageSettingsInBackground(prjDescription);
}
/**
* Save language settings providers of the workspace (global providers) to persistent storage in
* a background job.
* Save language settings providers of the workspace (global providers) to persistent storage
* in a background job.
*/
public static void serializeLanguageSettingsWorkspaceInBackground() {
LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspaceInBackground();
@ -414,13 +380,11 @@ public class LanguageSettingsManager {
/**
* Create a list of providers with intention to assign to a configuration description.
*
* The list will contain global providers for ones where attribute "prefer-non-shared" is
* {@code true} and a new copy for those where attribute "prefer-non-shared" is {@code false}.
* Attribute "prefer-non-shared" is defined in extension point
* {@code org.eclipse.cdt.core.LanguageSettingsProvider}.
* The list will contain global providers for ones where attribute "prefer-non-shared" is {@code true}
* and a new copy for those where attribute "prefer-non-shared" is {@code false}. Attribute "prefer-non-shared"
* is defined in extension point {@code org.eclipse.cdt.core.LanguageSettingsProvider}.
*
* @param ids
* - list of providers id which cannot be {@code null}.
* @param ids - list of providers id which cannot be {@code null}.
* @return a list of language settings providers with given ids.
*
* @since 5.5

View file

@ -24,7 +24,6 @@ import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSetting
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsSerializableStorage;
import org.eclipse.cdt.internal.core.settings.model.CConfigurationSpecSettings;
import org.eclipse.cdt.internal.core.settings.model.IInternalCCfgInfo;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
@ -35,21 +34,19 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* This class is the base class for language settings providers able to
* serialize into XML storage. Although this class has setter methods, by design
* its instances are not editable in UI nor instances can be assigned to a
* configuration (cannot be global or non-shared). Implement
* {@link ILanguageSettingsEditableProvider} interface for that. There is a
* generic implementation of this interface available to be used, see
* {@link LanguageSettingsGenericProvider}.
* This class is the base class for language settings providers able to serialize
* into XML storage.
* Although this class has setter methods, by design its instances are not editable in UI
* nor instances can be assigned to a configuration (cannot be global or non-shared).
* Implement {@link ILanguageSettingsEditableProvider} interface for that. There is a generic
* implementation of this interface available to be used, see {@link LanguageSettingsGenericProvider}.
*
* For more on the suggested way of extending this class see the description of
* {@link ILanguageSettingsProvider}.
*
* @since 5.4
*/
public class LanguageSettingsSerializableProvider extends LanguageSettingsBaseProvider
implements ILanguageSettingsBroadcastingProvider {
public class LanguageSettingsSerializableProvider extends LanguageSettingsBaseProvider implements ILanguageSettingsBroadcastingProvider {
protected static final String ATTR_ID = LanguageSettingsProvidersSerializer.ATTR_ID;
protected static final String ATTR_NAME = LanguageSettingsProvidersSerializer.ATTR_NAME;
protected static final String ATTR_CLASS = LanguageSettingsProvidersSerializer.ATTR_CLASS;
@ -59,9 +56,8 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
private LanguageSettingsSerializableStorage fStorage = new LanguageSettingsSerializableStorage();
/**
* Default constructor. This constructor has to be always followed with
* setting id and name of the provider. This constructor is necessary to
* instantiate the class via the extension point in plugin.xml.
* Default constructor. This constructor has to be always followed with setting id and name of the provider.
* This constructor is necessary to instantiate the class via the extension point in plugin.xml.
*/
public LanguageSettingsSerializableProvider() {
super();
@ -70,10 +66,8 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
/**
* Constructor.
*
* @param id
* - id of the provider.
* @param name
* - name of the provider. Note that this name shows up in UI.
* @param id - id of the provider.
* @param name - name of the provider. Note that this name shows up in UI.
*/
public LanguageSettingsSerializableProvider(String id, String name) {
super(id, name);
@ -90,24 +84,21 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
}
@Override
public void configureProvider(String id, String name, List<String> languages,
List<ICLanguageSettingEntry> entries, Map<String, String> properties) {
public void configureProvider(String id, String name, List<String> languages, List<ICLanguageSettingEntry> entries, Map<String, String> properties) {
// do not pass entries to super, keep them in local storage
super.configureProvider(id, name, languages, null, properties);
fStorage.clear();
if (entries!=null) {
// note that these entries are intended to be retrieved by
// LanguageSettingsManager.getSettingEntriesUpResourceTree()
// note that these entries are intended to be retrieved by LanguageSettingsManager.getSettingEntriesUpResourceTree()
// when the whole resource hierarchy has been traversed up
setSettingEntries((IBuildConfiguration) null, null, null, entries);
setSettingEntries(null, null, null, entries);
}
}
/**
* @return {@code true} if the provider does not keep any settings yet or
* {@code false} if there are some.
* @return {@code true} if the provider does not keep any settings yet or {@code false} if there are some.
*/
public boolean isEmpty() {
return fStorage.isEmpty();
@ -116,9 +107,8 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
/**
* Sets the language scope of the provider.
*
* @param languages
* - the list of languages this provider provides for. If
* {@code null}, the provider provides for any language.
* @param languages - the list of languages this provider provides for.
* If {@code null}, the provider provides for any language.
*
* @see #getLanguageScope()
*/
@ -131,65 +121,45 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
}
/**
* Clears all the entries for all configurations, all resources and all
* languages.
* Clears all the entries for all configurations, all resources and all languages.
*/
public void clear() {
fStorage.clear();
}
/**
* Sets language settings entries for the provider. Note that the entries
* are not persisted at that point. Use this method to set the entries for
* all resources one by one and after all done persist in one shot using
* {@link #serializeLanguageSettings(ICConfigurationDescription)}. See for
* example {@code AbstractBuildCommandParser} and
* {@code AbstractBuiltinSpecsDetector} in build plugins.
* Sets language settings entries for the provider.
* Note that the entries are not persisted at that point. Use this method to set
* the entries for all resources one by one and after all done persist in one shot
* using {@link #serializeLanguageSettings(ICConfigurationDescription)}.
* See for example {@code AbstractBuildCommandParser} and {@code AbstractBuiltinSpecsDetector}
* in build plugins.
*
* @param config
* - configuration.
* @param rc
* - resource such as file or folder. If {@code null} the entries
* are considered to be being defined as default entries for
* resources.
* @param languageId
* - language id. If {@code null}, then entries are considered to
* be defined for the language scope. See
* {@link #getLanguageScope()}
* @param entries
* - language settings entries to set.
* @since 6.0
* @param cfgDescription - configuration description.
* @param rc - resource such as file or folder. If {@code null} the entries are
* considered to be being defined as default entries for resources.
* @param languageId - language id. If {@code null}, then entries are considered
* to be defined for the language scope. See {@link #getLanguageScope()}
* @param entries - language settings entries to set.
*/
public void setSettingEntries(IBuildConfiguration config, IResource rc, String languageId,
public void setSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId,
List<? extends ICLanguageSettingEntry> entries) {
String rcProjectPath = rc!=null ? rc.getProjectRelativePath().toString() : null;
fStorage.setSettingEntries(rcProjectPath, languageId, entries);
}
/**
* @deprecated Use {@link #setSettingEntries(IBuildConfiguration, IResource, String, List)}.
*/
@Deprecated
public void setSettingEntries(ICConfigurationDescription config, IResource rc, String languageId,
List<? extends ICLanguageSettingEntry> entries) {
setSettingEntries((IBuildConfiguration) null, rc, languageId, entries);
}
/**
* {@inheritDoc} <br>
* Note that this list is <b>unmodifiable</b>. To modify the list copy it,
* change and use
* {@link #setSettingEntries(IBuildConfiguration, IResource, String, List)}
* . <br>
* {@inheritDoc}
* <br>
* Note also that <b>you can compare these lists with simple equality
* operator ==</b>, as the lists themselves are backed by
* WeakHashSet<List<ICLanguageSettingEntry>> where identical copies (deep
* comparison is used) are replaced with the same one instance.
* Note that this list is <b>unmodifiable</b>. To modify the list copy it, change and use
* {@link #setSettingEntries(ICConfigurationDescription, IResource, String, List)}.
* <br><br>
* Note also that <b>you can compare these lists with simple equality operator ==</b>,
* as the lists themselves are backed by WeakHashSet<List<ICLanguageSettingEntry>> where
* identical copies (deep comparison is used) are replaced with the same one instance.
*/
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
String rcProjectPath = rc!=null ? rc.getProjectRelativePath().toString() : null;
List<ICLanguageSettingEntry> entries = fStorage.getSettingEntries(rcProjectPath, languageId);
if (entries == null) {
@ -202,32 +172,25 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
}
/**
* @deprecated Use {@link #getSettingEntries(IBuildConfiguration, IResource, String)}.
*/
@Deprecated
@Override
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription config, IResource rc,
String languageId) {
return getSettingEntries((IBuildConfiguration) null, rc, languageId);
}
/**
* Serialize the provider under parent XML element. This is convenience
* method not intended to be overridden on purpose. Override
* {@link #serializeAttributes(Element)} or
* Serialize the provider under parent XML element.
* This is convenience method not intended to be overridden on purpose.
* Override {@link #serializeAttributes(Element)} or
* {@link #serializeEntries(Element)} instead.
*
* @param parentElement
* - element where to serialize.
* @param parentElement - element where to serialize.
* @return - newly created "provider" element. That element will already be
* attached to the parent element.
*/
final public Element serialize(Element parentElement) {
/*
* <provider id="provider.id" ...> <language-scope id="lang.id"/>
* <language id="lang.id"> <resource project-relative-path="/"> <entry
* flags="" kind="includePath" name="path"/> </resource> </language>
* </provider>
<provider id="provider.id" ...>
<language-scope id="lang.id"/>
<language id="lang.id">
<resource project-relative-path="/">
<entry flags="" kind="includePath" name="path"/>
</resource>
</language>
</provider>
*/
Element elementProvider = serializeAttributes(parentElement);
serializeEntries(elementProvider);
@ -236,17 +199,14 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
/**
* Serialize the provider attributes under parent XML element. That is
* equivalent to serializing everything (including language scope) except
* entries.
* equivalent to serializing everything (including language scope) except entries.
*
* @param parentElement
* - element where to serialize.
* @param parentElement - element where to serialize.
* @return - newly created "provider" element. That element will already be
* attached to the parent element.
*/
public Element serializeAttributes(Element parentElement) {
// Keeps pairs: key, value. See JavaDoc XmlUtil.appendElement(Node,
// String, String[]).
// Keeps pairs: key, value. See JavaDoc XmlUtil.appendElement(Node, String, String[]).
List<String> attributes = new ArrayList<String>();
attributes.add(ATTR_ID);
@ -260,8 +220,7 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
attributes.add(entry.getValue());
}
Element elementProvider = XmlUtil.appendElement(parentElement, ELEM_PROVIDER,
attributes.toArray(new String[0]));
Element elementProvider = XmlUtil.appendElement(parentElement, ELEM_PROVIDER, attributes.toArray(new String[0]));
if (languageScope!=null) {
for (String langId : languageScope) {
@ -273,24 +232,21 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
/**
* Serialize the provider entries under parent XML element.
*
* @param elementProvider
* - element where to serialize the entries.
* @param elementProvider - element where to serialize the entries.
*/
public void serializeEntries(Element elementProvider) {
fStorage.serializeEntries(elementProvider);
}
/**
* Convenience method to persist language settings entries for the project
* or workspace as often-used operation. Note that configuration description
* is passed as an argument but the current implementation saves all
* configurations.
* Convenience method to persist language settings entries for the project or
* workspace as often-used operation.
* Note that configuration description is passed as an argument but the
* current implementation saves all configurations.
*
* @param cfgDescription
* - configuration description. If not {@code null}, all
* providers of the project are serialized. If {@code null},
* global workspace providers are serialized.
* @param cfgDescription - configuration description.
* If not {@code null}, all providers of the project are serialized.
* If {@code null}, global workspace providers are serialized.
*
* @return - status of operation.
*/
@ -303,29 +259,26 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
LanguageSettingsManager.serializeLanguageSettingsWorkspace();
}
} catch (CoreException e) {
status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, IStatus.ERROR,
"Error serializing language settings", e); //$NON-NLS-1$
status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error serializing language settings", e); //$NON-NLS-1$
CCorePlugin.log(status);
}
return status;
}
/**
* Convenience method to persist language settings entries in background for
* the project or workspace as often-used operation. Note that configuration
* description is passed as an argument but the current implementation saves
* all configurations.
* Convenience method to persist language settings entries in background for the project or
* workspace as often-used operation.
* Note that configuration description is passed as an argument but the
* current implementation saves all configurations.
*
* @param cfgDescription
* - configuration description. If not {@code null}, all
* providers of the project are serialized. If {@code null},
* global workspace providers are serialized.
* @param cfgDescription - configuration description.
* If not {@code null}, all providers of the project are serialized.
* If {@code null}, global workspace providers are serialized.
*/
public void serializeLanguageSettingsInBackground(ICConfigurationDescription cfgDescription) {
if (cfgDescription != null) {
if (isLanguageSettingsProviderStoreChanged(cfgDescription)) {
LanguageSettingsManager
.serializeLanguageSettingsInBackground(cfgDescription.getProjectDescription());
LanguageSettingsManager.serializeLanguageSettingsInBackground(cfgDescription.getProjectDescription());
}
} else {
LanguageSettingsManager.serializeLanguageSettingsWorkspaceInBackground();
@ -333,8 +286,7 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
}
/**
* Compare provider store with cached persistent store used to calculate
* delta.
* Compare provider store with cached persistent store used to calculate delta.
*/
private boolean isLanguageSettingsProviderStoreChanged(ICConfigurationDescription cfgDescription) {
if (cfgDescription instanceof IInternalCCfgInfo) {
@ -353,13 +305,12 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
}
/**
* Load provider from XML provider element. This is convenience method not
* intended to be overridden on purpose. Override
* {@link #loadAttributes(Element)} or {@link #loadEntries(Element)}
* instead.
* Load provider from XML provider element.
* This is convenience method not intended to be overridden on purpose.
* Override {@link #loadAttributes(Element)} or
* {@link #loadEntries(Element)} instead.
*
* @param providerNode
* - XML element "provider" to load provider from.
* @param providerNode - XML element "provider" to load provider from.
*/
final public void load(Element providerNode) {
fStorage.clear();
@ -386,9 +337,7 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
/**
* Load attributes from XML provider element.
*
* @param providerNode
* - XML element "provider" to load attributes from.
* @param providerNode - XML element "provider" to load attributes from.
*/
public void loadAttributes(Element providerNode) {
String providerId = XmlUtil.determineAttributeValue(providerNode, ATTR_ID);
@ -425,44 +374,37 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
/**
* Load provider entries from XML provider element.
*
* @param providerNode
* - parent XML element "provider" where entries are defined.
* @param providerNode - parent XML element "provider" where entries are defined.
*/
public void loadEntries(Element providerNode) {
fStorage.loadEntries(providerNode);
}
/**
* Set a custom property of the provider. <br>
* <br>
* A note of caution - do not use default values for a provider which are
* different from empty or {@code null} value. When providers are checked
* for equality (during internal operations in core) the missing properties
* are evaluated as empty ones.
* Set a custom property of the provider.
* <br><br>
* A note of caution - do not use default values for a provider which are different
* from empty or {@code null} value. When providers are checked for equality
* (during internal operations in core) the missing properties are evaluated as
* empty ones.
*
* @see LanguageSettingsBaseProvider#getProperty(String)
*
* @param key
* - name of the property.
* @param value
* - value of the property. If value is {@code null} the property
* is removed from the list.
* @param key - name of the property.
* @param value - value of the property.
* If value is {@code null} the property is removed from the list.
*/
public void setProperty(String key, String value) {
properties.put(key, value);
}
/**
* Set a custom boolean property of the provider. <br>
* Please, note that default value is always {@code false}.
*
* Set a custom boolean property of the provider.
* <br>Please, note that default value is always {@code false}.
* @see LanguageSettingsBaseProvider#getProperty(String)
*
* @param key
* - name of the property.
* @param value
* - {@code boolean} value of the property.
* @param key - name of the property.
* @param value - {@code boolean} value of the property.
*/
public void setPropertyBool(String key, boolean value) {
properties.put(key, Boolean.toString(value));
@ -470,8 +412,7 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
/**
* See {@link #cloneShallow()}. This method is extracted to avoid expressing
* {@link #clone()} via {@link #cloneShallow()}. Do not inline to
* "optimize"!
* {@link #clone()} via {@link #cloneShallow()}. Do not inline to "optimize"!
*/
private LanguageSettingsSerializableProvider cloneShallowInternal() throws CloneNotSupportedException {
LanguageSettingsSerializableProvider clone = (LanguageSettingsSerializableProvider)super.clone();
@ -484,12 +425,11 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
}
/**
* Shallow clone of the provider. "Shallow" is defined here as the exact
* copy except that the copy will have zero language settings entries.
* Shallow clone of the provider. "Shallow" is defined here as the exact copy except that
* the copy will have zero language settings entries.
*
* @return shallow copy of the provider.
* @throws CloneNotSupportedException
* in case {@link #clone()} throws the exception.
* @throws CloneNotSupportedException in case {@link #clone()} throws the exception.
*/
protected LanguageSettingsSerializableProvider cloneShallow() throws CloneNotSupportedException {
return cloneShallowInternal();

View file

@ -34,14 +34,14 @@ public class LanguageSettingsStorage implements Cloneable {
/** Storage to keep settings entries. */
protected Map<String, // languageId
Map<String, // resource project path
List<ICLanguageSettingEntry>>> fStorage = new HashMap<>();
List<ICLanguageSettingEntry>>> fStorage = new HashMap<String, Map<String, List<ICLanguageSettingEntry>>>();
/**
* Pool of LSE lists implemented as WeakHashSet. That allows to gain memory savings
* at the expense of CPU time. WeakHashSet handles garbage collection when a list is not
* referenced anywhere else. See JavaDoc {@link java.lang.ref.WeakReference} about weak reference objects.
*/
private static WeakHashSet<List<ICLanguageSettingEntry>> listPool = new WeakHashSetSynchronized<>();
private static WeakHashSet<List<ICLanguageSettingEntry>> listPool = new WeakHashSetSynchronized<List<ICLanguageSettingEntry>>();
/**
* Returns the list of setting entries for the given resource and language.
@ -218,13 +218,13 @@ public class LanguageSettingsStorage implements Cloneable {
@Override
public LanguageSettingsStorage clone() throws CloneNotSupportedException {
LanguageSettingsStorage storageClone = (LanguageSettingsStorage) super.clone();
storageClone.fStorage = new HashMap<>();
storageClone.fStorage = new HashMap<String, Map<String, List<ICLanguageSettingEntry>>>();
synchronized (fStorage) {
Set<Entry<String, Map<String, List<ICLanguageSettingEntry>>>> entrySetLang = fStorage.entrySet();
for (Entry<String, Map<String, List<ICLanguageSettingEntry>>> entryLang : entrySetLang) {
String langId = entryLang.getKey();
Map<String, List<ICLanguageSettingEntry>> mapRc = entryLang.getValue();
Map<String, List<ICLanguageSettingEntry>> mapRcClone = new HashMap<>();
Map<String, List<ICLanguageSettingEntry>> mapRcClone = new HashMap<String, List<ICLanguageSettingEntry>>();
Set<Entry<String, List<ICLanguageSettingEntry>>> entrySetRc = mapRc.entrySet();
for (Entry<String, List<ICLanguageSettingEntry>> entryRc : entrySetRc) {
String rcProjectPath = entryRc.getKey();
@ -262,4 +262,5 @@ public class LanguageSettingsStorage implements Cloneable {
return false;
return true;
}
}

View file

@ -71,14 +71,12 @@ import org.eclipse.cdt.internal.core.model.PathEntry;
import org.eclipse.cdt.internal.core.settings.model.CConfigurationDescriptionCache;
import org.eclipse.cdt.internal.core.settings.model.IInternalCCfgInfo;
import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
@ -128,17 +126,16 @@ public class PathEntryTranslator {
ICdtVariableManager fMngr = CCorePlugin.getDefault().getCdtVariableManager();
public VarSubstitutor(ICConfigurationDescription cfgDescription) {
super(new DefaultVariableContextInfo(ICoreVariableContextInfo.CONTEXT_CONFIGURATION,
cfgDescription), "", " "); //$NON-NLS-1$ //$NON-NLS-2$
super(new DefaultVariableContextInfo(ICoreVariableContextInfo.CONTEXT_CONFIGURATION, cfgDescription), "", " "); //$NON-NLS-1$ //$NON-NLS-2$
fCfg = cfgDescription;
}
@Override
protected ResolvedMacro resolveMacro(ICdtVariable macro) throws CdtVariableException {
protected ResolvedMacro resolveMacro(ICdtVariable macro)
throws CdtVariableException {
if (!CdtVarPathEntryVariableManager.isPathEntryVariable(macro, fCfg, fMngr))
return super.resolveMacro(macro);
return new ResolvedMacro(macro.getName(),
CdtVariableResolver.createVariableReference(macro.getName()));
return new ResolvedMacro(macro.getName(), CdtVariableResolver.createVariableReference(macro.getName()));
}
}
@ -296,6 +293,7 @@ public class PathEntryTranslator {
}
return new ICLanguageSettingEntry[0];
}
}
@ -321,9 +319,10 @@ public class PathEntryTranslator {
case IPathEntry.CDT_LIBRARY:{
if (path != null) {
ILibraryEntry libEntry = (ILibraryEntry)entry.fEntry;
return (ICLanguageSettingEntry) CDataUtil.createEntry(ICSettingEntry.LIBRARY_FILE, name, null,
null, flags, libEntry.getSourceAttachmentPath(),
libEntry.getSourceAttachmentRootPath(), libEntry.getSourceAttachmentPrefixMapping());
return (ICLanguageSettingEntry) CDataUtil.createEntry(ICSettingEntry.LIBRARY_FILE, name, null, null, flags,
libEntry.getSourceAttachmentPath(),
libEntry.getSourceAttachmentRootPath(),
libEntry.getSourceAttachmentPrefixMapping());
}
break;
}
@ -467,8 +466,7 @@ public class PathEntryTranslator {
basePath = mngr.resolvePath(basePath);
valuePath = mngr.resolvePath(valuePath);
fName = unresolvedBase.isEmpty() ? unresolvedValue.toString()
: unresolvedBase.append(unresolvedValue).toString();
fName = unresolvedBase.isEmpty() ? unresolvedValue.toString() : unresolvedBase.append(unresolvedValue).toString();
fValue = fName;
if (!basePath.isEmpty()) {
@ -490,8 +488,7 @@ public class PathEntryTranslator {
ResourceInfo rcInfo = fResolvedEntry.getResourceInfo();
if (rcInfo.fExists) {
if (rcInfo.fRc.getType() == IResource.FILE) {
rcInfo = findResourceInfo(fRoot,
rcInfo.fRc.getFullPath().removeLastSegments(1), true);
rcInfo = findResourceInfo(fRoot, rcInfo.fRc.getFullPath().removeLastSegments(1), true);
}
IPath location = rcInfo.fRc.getLocation();
if (location != null && rcInfo.fRc.getType() != IResource.FILE) {
@ -565,8 +562,7 @@ public class PathEntryTranslator {
} else {
fFilterInfos = new ResourceInfo[paths.length];
for (int i = 0; i < paths.length; i++) {
fFilterInfos[i] = processInexistingResourceFilter((IContainer) rcInfo.fRc,
paths[i]);
fFilterInfos[i] = processInexistingResourceFilter((IContainer)rcInfo.fRc, paths[i]);
}
}
}
@ -598,6 +594,7 @@ public class PathEntryTranslator {
return fResolvedValue;
}
}
private static class PathEntryComposer {
@ -607,10 +604,7 @@ public class PathEntryTranslator {
private boolean fIsExported;
private IProject fProject;
PathEntryComposer(IPath path,
IProject project/*
* , ICConfigurationDescription cfgDescription
*/) {
PathEntryComposer(IPath path, IProject project/*, ICConfigurationDescription cfgDescription*/) {
fPath = toProjectPath(path);
fProject = project;
}
@ -622,10 +616,7 @@ public class PathEntryTranslator {
return path.makeAbsolute();
}
PathEntryComposer(ICExclusionPatternPathEntry entry,
IProject project/*
* , ICConfigurationDescription cfgDescription
*/) {
PathEntryComposer(ICExclusionPatternPathEntry entry, IProject project/*, ICConfigurationDescription cfgDescription*/) {
fPath = new Path(entry.getValue());
fLangEntry = entry;
fProject = project;
@ -636,10 +627,7 @@ public class PathEntryTranslator {
}
}
PathEntryComposer(IPath path, ICLanguageSettingEntry entry, boolean exported,
IProject project/*
* , ICConfigurationDescription cfgDescription
*/) {
PathEntryComposer(IPath path, ICLanguageSettingEntry entry, boolean exported, IProject project/*, ICConfigurationDescription cfgDescription*/) {
fPath = path;
fLangEntry = entry;
fIsExported = exported;
@ -668,12 +656,10 @@ public class PathEntryTranslator {
}
private IPath[][] getEntryPath(ICSettingEntry entry, ICConfigurationDescription cfgDescription) {
return valueToEntryPath(entry.getName(),
(entry.getFlags() & ICSettingEntry.VALUE_WORKSPACE_PATH) != 0, cfgDescription);
return valueToEntryPath(entry.getName(), (entry.getFlags() & ICSettingEntry.VALUE_WORKSPACE_PATH) != 0, cfgDescription);
}
private IPath[][] valueToEntryPath(String value, boolean isWsp,
ICConfigurationDescription cfgDescription) {
private IPath[][] valueToEntryPath(String value, boolean isWsp, ICConfigurationDescription cfgDescription) {
String[] pathVarValues = resolveKeepingPathEntryFars(value, cfgDescription);
IPath result[][] = new IPath[2][pathVarValues.length];
for (int i = 0; i < pathVarValues.length; i++) {
@ -691,10 +677,8 @@ public class PathEntryTranslator {
if (pathVarPath.segmentCount() != 0) {
String resolvedProjName = projName;
String varProjName = pathVarPath.segment(0);
IPath resolvedProjPath = CCorePlugin.getDefault()
.getPathEntryVariableManager().resolvePath(new Path(varProjName));
if (resolvedProjPath.segmentCount() == 1
&& resolvedProjName.equals(resolvedProjPath.segment(0))) {
IPath resolvedProjPath = CCorePlugin.getDefault().getPathEntryVariableManager().resolvePath(new Path(varProjName));
if (resolvedProjPath.segmentCount() == 1 && resolvedProjName.equals(resolvedProjPath.segment(0))) {
projName = varProjName;
valuePath = pathVarPath.removeFirstSegments(1).makeRelative();
}
@ -728,8 +712,7 @@ public class PathEntryTranslator {
IPath paths[][] = getEntryPath(fLangEntry, cfgDescription);
result = new IPathEntry[paths[0].length];
for (int i = 0; i < result.length; i++)
result[i] = CoreModel.newIncludeFileEntry(path, null, paths[0][i], paths[1][i],
getExclusionPatterns(), fIsExported);
result[i] = CoreModel.newIncludeFileEntry(path, null, paths[0][i], paths[1][i], getExclusionPatterns(), fIsExported);
return result;
}
case ICSettingEntry.INCLUDE_PATH:{
@ -738,21 +721,18 @@ public class PathEntryTranslator {
result = new IPathEntry[paths[0].length];
for (int i = 0; i < result.length; i++)
result[i] = CoreModel.newIncludeEntry(path, paths[0][i], paths[1][i], !ipe.isLocal(),
getExclusionPatterns(), fIsExported);
result[i] = CoreModel.newIncludeEntry(path, paths[0][i], paths[1][i], !ipe.isLocal(), getExclusionPatterns(), fIsExported);
return result;
}
case ICSettingEntry.MACRO:
result = new IPathEntry[1];
result[0] = CoreModel.newMacroEntry(path, fLangEntry.getName(), fLangEntry.getValue(),
getExclusionPatterns(), fIsExported);
result[0] = CoreModel.newMacroEntry(path, fLangEntry.getName(), fLangEntry.getValue(), getExclusionPatterns(), fIsExported);
return result;
case ICSettingEntry.MACRO_FILE:{
IPath paths[][] = getEntryPath(fLangEntry, cfgDescription);
result = new IPathEntry[paths[0].length];
for (int i = 0; i < result.length; i++)
result[i] = CoreModel.newMacroFileEntry(path, paths[0][i], null, paths[1][i],
getExclusionPatterns(), fIsExported);
result[i] = CoreModel.newMacroFileEntry(path, paths[0][i], null, paths[1][i], getExclusionPatterns(), fIsExported);
return result;
}
case ICSettingEntry.LIBRARY_PATH:
@ -764,8 +744,7 @@ public class PathEntryTranslator {
// IPath paths[][] = getEntryPath(fLangEntry, cfgDescription);
// result = new IPathEntry[paths[0].length];
// for (int i = 0; i < result.length; i++)
// result[i] = CoreModel.newLibraryEntry(path, paths[0][i],
// paths[1][i], null, null, null, fIsExported);
// result[i] = CoreModel.newLibraryEntry(path, paths[0][i], paths[1][i], null, null, null, fIsExported);
// return result;
// }
case ICSettingEntry.OUTPUT_PATH:
@ -790,16 +769,14 @@ public class PathEntryTranslator {
private static String resolveAll(String value, ICConfigurationDescription cfgDescription) {
try {
return CCorePlugin.getDefault().getCdtVariableManager().resolveValue(value, "", " ", //$NON-NLS-1$ //$NON-NLS-2$
cfgDescription);
return CCorePlugin.getDefault().getCdtVariableManager().resolveValue(value, "", " ", cfgDescription); //$NON-NLS-1$ //$NON-NLS-2$
} catch (CdtVariableException e) {
CCorePlugin.log(e);
}
return value;
}
private static String[] resolveKeepingPathEntryFars(String value,
ICConfigurationDescription cfgDescription) {
private static String[] resolveKeepingPathEntryFars(String value, ICConfigurationDescription cfgDescription) {
String[] result = new String[] { value }; // default value;
try {
VarSubstitutor substitutor = new VarSubstitutor(cfgDescription);
@ -820,10 +797,7 @@ public class PathEntryTranslator {
private LinkedHashMap<IPath, PathEntryComposer> fRefProjMap;
private IProject fProject;
private PathEntryCollector(
IProject project/*
* , ICConfigurationDescription cfgDescription
*/) {
private PathEntryCollector(IProject project/*, ICConfigurationDescription cfgDescription*/) {
fStorage = PathSettingsContainer.createRootContainer();
fStorage.setValue(this);
fStore = new KindBasedStore<LinkedHashMap<ICSettingEntry, PathEntryComposer>>(false);
@ -831,11 +805,7 @@ public class PathEntryTranslator {
fProject = project;
}
private PathEntryCollector(PathSettingsContainer container,
KindBasedStore<LinkedHashMap<ICSettingEntry, PathEntryComposer>> store,
IProject project/*
* , ICConfigurationDescription cfgDescription
*/) {
private PathEntryCollector(PathSettingsContainer container, KindBasedStore<LinkedHashMap<ICSettingEntry, PathEntryComposer>> store, IProject project/*, ICConfigurationDescription cfgDescription*/) {
fStorage = container;
fStore = store;
fNameKeyMapStore = new KindBasedStore<LinkedHashMap<EntryNameKey, PathEntryComposer>>(false);
@ -851,7 +821,8 @@ public class PathEntryTranslator {
PathEntryComposer old = nameKeyMap.get(nameKey);
if (old != null) {
entry = CDataUtil.addRemoveExclusionsToEntry(entry,
((ICExclusionPatternPathEntry) old.fLangEntry).getExclusionPatterns(), true);
((ICExclusionPatternPathEntry)old.fLangEntry).getExclusionPatterns(),
true);
}
PathEntryComposer newComposer = new PathEntryComposer(entry, fProject/*, fCfg*/);
map.put(entry, newComposer);
@ -865,8 +836,7 @@ public class PathEntryTranslator {
} else {
fRefProjMap = new LinkedHashMap<IPath, PathEntryComposer>();
for (IPath path : paths) {
PathEntryComposer cs = new PathEntryComposer(path,
fProject/* , fCfg */);
PathEntryComposer cs = new PathEntryComposer(path, fProject/*, fCfg*/);
IPath composerPath = cs.getPath();
fRefProjMap.put(composerPath, cs);
}
@ -877,8 +847,7 @@ public class PathEntryTranslator {
if (path.segmentCount() == 0)
return this;
PathEntryCollector cr = (PathEntryCollector) fStorage.getChildContainer(path, false, false)
.getValue();
PathEntryCollector cr = (PathEntryCollector)fStorage.getChildContainer(path, false, false).getValue();
if (cr != this) {
IPath basePath = cr.getPath();
path = path.removeFirstSegments(basePath.segmentCount());
@ -887,21 +856,18 @@ public class PathEntryTranslator {
PathSettingsContainer newContainer = fStorage.getChildContainer(path, true, true);
@SuppressWarnings("unchecked")
KindBasedStore<LinkedHashMap<ICSettingEntry, PathEntryComposer>> cloneStore = (KindBasedStore<LinkedHashMap<ICSettingEntry, PathEntryComposer>>) fStore
.clone();
IKindBasedInfo<LinkedHashMap<ICSettingEntry, PathEntryComposer>> info[] = cloneStore
.getContents();
KindBasedStore<LinkedHashMap<ICSettingEntry, PathEntryComposer>> cloneStore =
(KindBasedStore<LinkedHashMap<ICSettingEntry, PathEntryComposer>>)fStore.clone();
IKindBasedInfo<LinkedHashMap<ICSettingEntry, PathEntryComposer>> info[] = cloneStore.getContents();
for (IKindBasedInfo<LinkedHashMap<ICSettingEntry, PathEntryComposer>> kindInfo : info) {
LinkedHashMap<ICSettingEntry, PathEntryComposer> map = kindInfo.getInfo();
if (map != null) {
@SuppressWarnings("unchecked")
LinkedHashMap<ICSettingEntry, PathEntryComposer> clone = (LinkedHashMap<ICSettingEntry, PathEntryComposer>) map
.clone();
LinkedHashMap<ICSettingEntry, PathEntryComposer> clone = (LinkedHashMap<ICSettingEntry, PathEntryComposer>)map.clone();
kindInfo.setInfo(clone);
}
}
PathEntryCollector newCr = new PathEntryCollector(newContainer, cloneStore,
fProject/* , fCfg */);
PathEntryCollector newCr = new PathEntryCollector(newContainer, cloneStore, fProject/*, fCfg*/);
newContainer.setValue(newCr);
return newCr;
}
@ -910,17 +876,16 @@ public class PathEntryTranslator {
return fStorage.getPath();
}
public void setEntries(int kind, ICLanguageSettingEntry entries[],
Set<ICSettingEntry> exportedEntries) {
public void setEntries(int kind, ICLanguageSettingEntry entries[], Set<ICSettingEntry> exportedEntries) {
IPath path = getPath();
HashSet<ICSettingEntry> parentSet = getEntriesSetCopy(kind);
@SuppressWarnings("unchecked")
HashSet<ICSettingEntry> removedParentSet = (HashSet<ICSettingEntry>)parentSet.clone();
HashSet<ICLanguageSettingEntry> addedThisSet = new HashSet<ICLanguageSettingEntry>(
Arrays.asList(entries));
HashSet<ICLanguageSettingEntry> addedThisSet = new HashSet<ICLanguageSettingEntry>(Arrays.asList(entries));
removedParentSet.removeAll(addedThisSet);
addedThisSet.removeAll(parentSet);
if (removedParentSet.size() != 0) {
PathEntryCollector parent = getParent();
IPath parentPath = parent.getPath();
@ -949,8 +914,7 @@ public class PathEntryTranslator {
continue;
ICLanguageSettingEntry entry = entries[i];
map.put(entry, new PathEntryComposer(fullPath, entry, exportedEntries.contains(entry),
fProject/* , fCfg */));
map.put(entry, new PathEntryComposer(fullPath, entry, exportedEntries.contains(entry), fProject/*, fCfg*/));
}
}
}
@ -964,8 +928,7 @@ public class PathEntryTranslator {
return map;
}
private LinkedHashMap<EntryNameKey, PathEntryComposer> getEntriesNameKeyMap(int kind,
boolean create) {
private LinkedHashMap<EntryNameKey, PathEntryComposer> getEntriesNameKeyMap(int kind, boolean create) {
LinkedHashMap<EntryNameKey, PathEntryComposer> map = fNameKeyMapStore.get(kind);
if (map == null && create) {
map = new LinkedHashMap<EntryNameKey, PathEntryComposer>();
@ -1017,8 +980,7 @@ public class PathEntryTranslator {
return list;
}
private void getLocalCollectedEntries(int kind, List<PathEntryComposer> list,
Set<PathEntryComposer> addedEntries) {
private void getLocalCollectedEntries(int kind, List<PathEntryComposer> list, Set<PathEntryComposer> addedEntries) {
Map<ICSettingEntry, PathEntryComposer> map = getEntriesMap(kind, false);
if (map == null)
return;
@ -1030,8 +992,7 @@ public class PathEntryTranslator {
}
}
public List<IPathEntry> getEntries(int peKind, List<IPathEntry> list, int flags,
ICConfigurationDescription cfgDescription) {
public List<IPathEntry> getEntries(int peKind, List<IPathEntry> list, int flags, ICConfigurationDescription cfgDescription) {
Set<IPathEntry> set = new LinkedHashSet<IPathEntry>();
int sKind = peKindToSettingKind(peKind);
@ -1098,8 +1059,7 @@ public class PathEntryTranslator {
return entry != null && (entry.isBuiltIn() || entry.isReadOnly());
}
public List<IPathEntry> getEntries(List<IPathEntry> list, int flags,
ICConfigurationDescription cfgDescription) {
public List<IPathEntry> getEntries(List<IPathEntry> list, int flags, ICConfigurationDescription cfgDescription) {
if (list == null)
list = new ArrayList<IPathEntry>();
int peKinds[] = PathEntryKyndStore.getSupportedKinds();
@ -1125,6 +1085,7 @@ public class PathEntryTranslator {
return null;
}
private static boolean areEntriesReadOnly(PathEntryResolveInfoElement el) {
switch (el.getRawEntry().getEntryKind()) {
case IPathEntry.CDT_LIBRARY:
@ -1141,6 +1102,7 @@ public class PathEntryTranslator {
return true;
}
private IPath getEntryFullPath(IPathEntry entry) {
IPath path = entry.getPath();
if (path == null)
@ -1257,8 +1219,7 @@ public class PathEntryTranslator {
ICExternalSetting extSettings[];
if (exportSettingsList.size() != 0) {
extSettings = new ICExternalSetting[1];
List<ICLanguageSettingEntry> list = new ArrayList<ICLanguageSettingEntry>(
exportSettingsList.size());
List<ICLanguageSettingEntry> list = new ArrayList<ICLanguageSettingEntry>(exportSettingsList.size());
for (int i = 0; i < exportSettingsList.size(); i++) {
ResolvedEntry re = exportSettingsList.get(i);
ICLanguageSettingEntry le = createLangEntry(re);
@ -1290,11 +1251,13 @@ public class PathEntryTranslator {
return entries;
}
private static ICSourceEntry toCSourceEntry(ISourceEntry entry, boolean makeProjRelative) {
IPath path = entry.getPath();
if (makeProjRelative && path.isAbsolute())
path = path.removeFirstSegments(1);
return new CSourceEntry(path, entry.getExclusionPatterns(),
return new CSourceEntry(path,
entry.getExclusionPatterns(),
ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
}
@ -1302,12 +1265,12 @@ public class PathEntryTranslator {
IPath path = entry.getPath();
if (makeProjRelative && path.isAbsolute())
path = path.removeFirstSegments(1);
return new COutputEntry(path, entry.getExclusionPatterns(),
return new COutputEntry(path,
entry.getExclusionPatterns(),
ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
}
private static ICSettingEntry[] replaceUserEntries(ICSettingEntry[] oldEntries,
ICSettingEntry[] newUsrEntries) {
private static ICSettingEntry[] replaceUserEntries(ICSettingEntry[] oldEntries, ICSettingEntry[] newUsrEntries) {
Set<ICSettingEntry> set = new LinkedHashSet<ICSettingEntry>();
Class<?> componentType = null;
@ -1444,8 +1407,7 @@ public class PathEntryTranslator {
return list.toArray(new CResourceData[list.size()]);
}
private CResourceData getResourceData(IPath path, boolean create, boolean exactPath)
throws CoreException {
private CResourceData getResourceData(IPath path, boolean create, boolean exactPath) throws CoreException{
PathSettingsContainer rcDataH = fRcDataHolder.getChildContainer(path, false, exactPath);
if (rcDataH != null) {
return (CResourceData)rcDataH.getValue();
@ -1460,8 +1422,7 @@ public class PathEntryTranslator {
} else {
CFolderData folderData = (CFolderData)base;
CLanguageData lDatas[] = folderData.getLanguageDatas();
CLanguageData baseLData = CDataUtil
.findLanguagDataForFile(rcInfo.fRc.getFullPath().lastSegment(), fProject, lDatas);
CLanguageData baseLData = CDataUtil.findLanguagDataForFile(rcInfo.fRc.getFullPath().lastSegment(), fProject, lDatas);
newRcData = fCfgData.createFileData(path, folderData, baseLData);
}
} else {
@ -1479,9 +1440,9 @@ public class PathEntryTranslator {
}
private void applyEntries(CResourceData rcData, RcDesInfo info, int op) {
CLanguageData lDatas[] = rcData.getType() == ICSettingBase.SETTING_FILE
? new CLanguageData[] { ((CFileData) rcData).getLanguageData() }
: ((CFolderData) rcData).getLanguageDatas();
CLanguageData lDatas[] = rcData.getType() == ICSettingBase.SETTING_FILE ?
new CLanguageData[] { ((CFileData)rcData).getLanguageData() } :
((CFolderData) rcData).getLanguageDatas();
for (CLanguageData lData : lDatas) {
if (lData == null)
@ -1491,6 +1452,7 @@ public class PathEntryTranslator {
}
}
private void applyEntries(CLanguageData lData, RcDesInfo info, int op) {
int kinds[] = KindBasedStore.getLanguageEntryKinds();
int supported = lData.getSupportedEntryKinds();
@ -1510,14 +1472,13 @@ public class PathEntryTranslator {
}
private ICLanguageSettingEntry[] composeNewEntries(ICLanguageSettingEntry oldEntries[],
ICLanguageSettingEntry newEntries[], int op) {
ICLanguageSettingEntry newEntries[],
int op) {
ICLanguageSettingEntry result[];
switch (op) {
case OP_ADD:{
Set<ICLanguageSettingEntry> oldSet = new HashSet<ICLanguageSettingEntry>(
Arrays.asList(oldEntries));
Set<ICLanguageSettingEntry> newSet = new HashSet<ICLanguageSettingEntry>(
Arrays.asList(newEntries));
Set<ICLanguageSettingEntry> oldSet = new HashSet<ICLanguageSettingEntry>(Arrays.asList(oldEntries));
Set<ICLanguageSettingEntry> newSet = new HashSet<ICLanguageSettingEntry>(Arrays.asList(newEntries));
newSet.removeAll(oldSet);
if (newSet.size() == 0) {
result = oldEntries;
@ -1529,10 +1490,8 @@ public class PathEntryTranslator {
break;
}
case OP_REMOVE:{
Set<ICLanguageSettingEntry> oldSet = new HashSet<ICLanguageSettingEntry>(
Arrays.asList(oldEntries));
Set<ICLanguageSettingEntry> newSet = new HashSet<ICLanguageSettingEntry>(
Arrays.asList(newEntries));
Set<ICLanguageSettingEntry> oldSet = new HashSet<ICLanguageSettingEntry>(Arrays.asList(oldEntries));
Set<ICLanguageSettingEntry> newSet = new HashSet<ICLanguageSettingEntry>(Arrays.asList(newEntries));
oldSet.removeAll(newSet);
if (oldSet.size() == 0) {
result = new ICLanguageSettingEntry[0];
@ -1561,8 +1520,7 @@ public class PathEntryTranslator {
RcDesInfo rcDes = (RcDesInfo)cr.getValue();
if (rcDes != null) {
List<ResolvedEntry> rEntries = rcDes.fResolvedEntries;
List<LangEntryInfo> curLanfInfos = new ArrayList<LangEntryInfo>(
rEntries.size() + langEntryInfoList.size());
List<LangEntryInfo> curLanfInfos = new ArrayList<LangEntryInfo>(rEntries.size() + langEntryInfoList.size());
for (ResolvedEntry re : rEntries) {
LangEntryInfo li = createLangEntryInfo(re);
if (li != null) {
@ -1692,6 +1650,7 @@ public class PathEntryTranslator {
return new ResolvedEntry(entry, el);
}
private ResolvedEntry[] getResolvedEntries(IPathEntry[] usrEntries, IPathEntry[] sysEntries) {
int length = usrEntries != null ? usrEntries.length : 0;
if (sysEntries != null)
@ -1719,8 +1678,7 @@ public class PathEntryTranslator {
ResourceInfo[] baseInfos = (ResourceInfo[])cr.getValue();
ResourceInfo[] result;
if (!baseInfos[0].fExists) {
// resource does not exist, always create new rc info and not add it
// to map
// resource does not exist, always create new rc info and not add it to map
ResourceInfo inexistent = new ResourceInfo(container.getFolder(path), false);
result = new ResourceInfo[]{inexistent};
} else {
@ -1944,18 +1902,18 @@ public class PathEntryTranslator {
case IPathEntry.CDT_LIBRARY: {
IPath libraryPath = new Path(getAttribute(element, ATTRIBUTE_LIBRARY));
// source attachment info (optional)
IPath sourceAttachmentPath = element.getAttribute(ATTRIBUTE_SOURCEPATH) != null
? new Path(element.getAttribute(ATTRIBUTE_SOURCEPATH)) : null;
IPath sourceAttachmentRootPath = element.getAttribute(ATTRIBUTE_ROOTPATH) != null
? new Path(element.getAttribute(ATTRIBUTE_ROOTPATH)) : null;
IPath sourceAttachmentPrefixMapping = element.getAttribute(ATTRIBUTE_PREFIXMAPPING) != null
? new Path(element.getAttribute(ATTRIBUTE_PREFIXMAPPING)) : null;
IPath sourceAttachmentPath = element.getAttribute(ATTRIBUTE_SOURCEPATH) != null ? new Path(
element.getAttribute(ATTRIBUTE_SOURCEPATH)) : null;
IPath sourceAttachmentRootPath = element.getAttribute(ATTRIBUTE_ROOTPATH) != null ? new Path(
element.getAttribute(ATTRIBUTE_ROOTPATH)) : null;
IPath sourceAttachmentPrefixMapping = element.getAttribute(ATTRIBUTE_PREFIXMAPPING) != null ? new Path(
element.getAttribute(ATTRIBUTE_PREFIXMAPPING)) : null;
if (!baseRef.isEmpty()) {
return CoreModel.newLibraryRefEntry(path, baseRef, libraryPath);
}
return CoreModel.newLibraryEntry(path, basePath, libraryPath, sourceAttachmentPath,
sourceAttachmentRootPath, sourceAttachmentPrefixMapping, isExported);
return CoreModel.newLibraryEntry(path, basePath, libraryPath, sourceAttachmentPath, sourceAttachmentRootPath,
sourceAttachmentPrefixMapping, isExported);
}
case IPathEntry.CDT_SOURCE: {
// must be an entry in this project or specify another
@ -1981,14 +1939,12 @@ public class PathEntryTranslator {
if (!baseRef.isEmpty()) {
return CoreModel.newIncludeRefEntry(path, baseRef, includePath);
}
return CoreModel.newIncludeEntry(path, basePath, includePath, isSystemInclude, exclusionPatterns,
isExported);
return CoreModel.newIncludeEntry(path, basePath, includePath, isSystemInclude, exclusionPatterns, isExported);
}
case IPathEntry.CDT_INCLUDE_FILE: {
// include path info
IPath includeFilePath = new Path(getAttribute(element, ATTRIBUTE_INCLUDE_FILE));
return CoreModel.newIncludeFileEntry(path, basePath, baseRef, includeFilePath, exclusionPatterns,
isExported);
return CoreModel.newIncludeFileEntry(path, basePath, baseRef, includeFilePath, exclusionPatterns, isExported);
}
case IPathEntry.CDT_MACRO: {
String macroName = getAttribute(element, ATTRIBUTE_NAME);
@ -2000,24 +1956,22 @@ public class PathEntryTranslator {
}
case IPathEntry.CDT_MACRO_FILE: {
IPath macroFilePath = new Path(getAttribute(element, ATTRIBUTE_MACRO_FILE));
return CoreModel.newMacroFileEntry(path, basePath, baseRef, macroFilePath, exclusionPatterns,
isExported);
return CoreModel.newMacroFileEntry(path, basePath, baseRef, macroFilePath, exclusionPatterns, isExported);
}
case IPathEntry.CDT_CONTAINER: {
IPath id = new Path(getAttribute(element, ATTRIBUTE_PATH));
return CoreModel.newContainerEntry(id, isExported);
}
default: {
ICModelStatus status = new CModelStatus(IStatus.ERROR,
"PathEntry: unknown kind (" + kindAttr + ")"); //$NON-NLS-1$ //$NON-NLS-2$
ICModelStatus status = new CModelStatus(IStatus.ERROR, "PathEntry: unknown kind (" + kindAttr + ")"); //$NON-NLS-1$ //$NON-NLS-2$
throw new CModelException(status);
}
}
}
private static CConfigurationData getCfgData(ICConfigurationDescription cfgDescription) {
return cfgDescription instanceof CConfigurationDescriptionCache ? (CConfigurationData) cfgDescription
: ((IInternalCCfgInfo) cfgDescription).getConfigurationData(false);
return cfgDescription instanceof CConfigurationDescriptionCache ?
(CConfigurationData)cfgDescription : ((IInternalCCfgInfo)cfgDescription).getConfigurationData(false);
}
private static void addOutputEntries(PathEntryCollector cr, CConfigurationData cfgData) {
@ -2030,22 +1984,20 @@ public class PathEntryTranslator {
}
}
public static PathEntryCollector collectEntries(IProject project,
final ICConfigurationDescription cfgDescription) {
public static PathEntryCollector collectEntries(IProject project, final ICConfigurationDescription cfgDescription) {
CConfigurationData cfgData = getCfgData(cfgDescription);
ReferenceSettingsInfo refInfo = new ReferenceSettingsInfo(cfgDescription);
ICConfigurationDescription[] allCfgDescriptions = cfgDescription.isPreferenceConfiguration()
? new ICConfigurationDescription[] { cfgDescription }
: cfgDescription.getProjectDescription().getConfigurations();
ICConfigurationDescription[] allCfgDescriptions = cfgDescription.isPreferenceConfiguration() ?
new ICConfigurationDescription[] { cfgDescription } :
cfgDescription.getProjectDescription().getConfigurations();
CConfigurationData[] allDatas = new CConfigurationData[allCfgDescriptions.length];
for (int i = 0; i < allCfgDescriptions.length; i++) {
allDatas[i] = getCfgData(allCfgDescriptions[i]);
}
final PathEntryCollector collector = new PathEntryCollector(
project/* , cfgDescription */);
final PathEntryCollector collector = new PathEntryCollector(project/*, cfgDescription*/);
PathSettingsContainer rcDatas = createRcDataHolder(cfgData);
ICSourceEntry sEntries[] = cfgData.getSourceEntries();
if (sEntries != null && sEntries.length != 0) {
@ -2071,8 +2023,7 @@ public class PathEntryTranslator {
for (int kind : kinds) {
Set<ICLanguageSettingEntry> set = new LinkedHashSet<ICLanguageSettingEntry>();
if (collectResourceDataEntries(cfgDescription, kind, rcData, set)) {
ICLanguageSettingEntry[] entries = set
.toArray(new ICLanguageSettingEntry[set.size()]);
ICLanguageSettingEntry[] entries = set.toArray(new ICLanguageSettingEntry[set.size()]);
child.setEntries(kind, entries, exportedSettings);
}
}
@ -2083,8 +2034,7 @@ public class PathEntryTranslator {
return collector;
}
private static boolean collectResourceDataEntries(ICConfigurationDescription cfgDescription, int kind,
CResourceData rcData, Set<ICLanguageSettingEntry> list) {
private static boolean collectResourceDataEntries(ICConfigurationDescription cfgDescription, int kind, CResourceData rcData, Set<ICLanguageSettingEntry> list) {
CLanguageData[] lDatas = null;
if (rcData instanceof CFolderData) {
lDatas = ((CFolderData)rcData).getLanguageDatas();
@ -2093,8 +2043,7 @@ public class PathEntryTranslator {
if (lData != null)
lDatas = new CLanguageData[] {lData};
} else {
Exception e = new Exception(
UtilMessages.getString("PathEntryTranslator.1") + rcData.getClass().getName()); //$NON-NLS-1$
Exception e = new Exception(UtilMessages.getString("PathEntryTranslator.1") + rcData.getClass().getName()); //$NON-NLS-1$
IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, e.getMessage(), e);
CCorePlugin.log(status);
}
@ -2106,19 +2055,13 @@ public class PathEntryTranslator {
if (ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project)) {
IResource rc = findResourceInWorkspace(project, rcData.getPath());
if (rc == null) {
// If resource does not exist make a handle to be able to supply
// the path.
// If resource does not exist make a handle to be able to supply the path.
// This does not create actual resource.
// Gotta be a folder so language settings provider won't filter
// out languages.
// Gotta be a folder so language settings provider won't filter out languages.
rc = project.getFolder(rcData.getPath());
}
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
if (config != null) {
for (CLanguageData lData : lDatas) {
list.addAll(LanguageSettingsProvidersSerializer.getSettingEntriesByKind(config, rc,
lData.getLanguageId(), kind));
}
list.addAll(LanguageSettingsProvidersSerializer.getSettingEntriesByKind(cfgDescription, rc, lData.getLanguageId(), kind));
}
return list.size() > 0;
@ -2132,8 +2075,7 @@ public class PathEntryTranslator {
return supported;
}
private static boolean collectLanguageDataEntries(int kind, CLanguageData lData,
Set<ICLanguageSettingEntry> list) {
private static boolean collectLanguageDataEntries(int kind, CLanguageData lData, Set<ICLanguageSettingEntry> list) {
if ((kind & lData.getSupportedEntryKinds()) != 0) {
ICLanguageSettingEntry[] entries = lData.getEntries(kind);
if (entries != null && entries.length != 0) {
@ -2145,8 +2087,7 @@ public class PathEntryTranslator {
return false;
}
public static IPathEntry[] getPathEntries(IProject project, ICConfigurationDescription cfgDescription,
int flags) {
public static IPathEntry[] getPathEntries(IProject project, ICConfigurationDescription cfgDescription, int flags) {
PathEntryCollector cr = collectEntries(project, cfgDescription);
return cr.getEntries(flags, cfgDescription);
}

View file

@ -42,11 +42,9 @@ import org.eclipse.cdt.internal.core.parser.ParserSettings2;
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
import org.eclipse.cdt.internal.core.settings.model.SettingsModelMessages;
import org.eclipse.cdt.utils.EFSExtensionManager;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
@ -54,15 +52,14 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.osgi.util.NLS;
/**
* Implementation of {@link IScannerInfoProvider} backed by the list of language settings providers
* of "default settings configuration" (see
* {@link ICProjectDescription#getDefaultSettingConfiguration()}).
* Implementation of {@link IScannerInfoProvider} backed by the list of
* language settings providers of "default settings configuration"
* (see {@link ICProjectDescription#getDefaultSettingConfiguration()}).
*
* @see IScannerInfo#getIncludePaths()
*
*/
public class LanguageSettingsScannerInfoProvider
implements IScannerInfoProvider, ILanguageSettingsChangeListener {
public class LanguageSettingsScannerInfoProvider implements IScannerInfoProvider, ILanguageSettingsChangeListener {
private static final String FRAMEWORK_PRIVATE_HEADERS_INCLUDE = "/__framework__.framework/PrivateHeaders/__header__"; //$NON-NLS-1$
private static final String FRAMEWORK_HEADERS_INCLUDE = "/__framework__.framework/Headers/__header__"; //$NON-NLS-1$
private static final ExtendedScannerInfo DUMMY_SCANNER_INFO = new ExtendedScannerInfo();
@ -75,8 +72,7 @@ public class LanguageSettingsScannerInfoProvider
if (project==null)
return DUMMY_SCANNER_INFO;
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance()
.getProjectDescription(project, false);
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
if (prjDescription==null)
return DUMMY_SCANNER_INFO;
@ -84,14 +80,9 @@ public class LanguageSettingsScannerInfoProvider
if (cfgDescription==null)
return DUMMY_SCANNER_INFO;
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
if (config == null)
return DUMMY_SCANNER_INFO;
List<String> languageIds = LanguageSettingsManager.getLanguages(rc, cfgDescription);
if (languageIds.isEmpty()) {
String msg = NLS.bind(SettingsModelMessages.getString(
"LanguageSettingsScannerInfoProvider.UnableToDetermineLanguage"), rc.toString()); //$NON-NLS-1$
String msg = NLS.bind(SettingsModelMessages.getString("LanguageSettingsScannerInfoProvider.UnableToDetermineLanguage"), rc.toString()); //$NON-NLS-1$
IStatus status = new Status(IStatus.WARNING, CCorePlugin.PLUGIN_ID, msg, new Exception());
CCorePlugin.log(status);
return DUMMY_SCANNER_INFO;
@ -104,24 +95,24 @@ public class LanguageSettingsScannerInfoProvider
LinkedHashSet<ICLanguageSettingEntry> macroEntries = new LinkedHashSet<ICLanguageSettingEntry>();
for (String langId : languageIds) {
List<ICLanguageSettingEntry> incSys = LanguageSettingsProvidersSerializer
.getSystemSettingEntriesByKind(config, rc, langId, ICSettingEntry.INCLUDE_PATH);
List<ICLanguageSettingEntry> incSys = LanguageSettingsProvidersSerializer.getSystemSettingEntriesByKind(cfgDescription, rc, langId,
ICSettingEntry.INCLUDE_PATH);
includePathEntries.addAll(incSys);
List<ICLanguageSettingEntry> incLocal = LanguageSettingsProvidersSerializer
.getLocalSettingEntriesByKind(config, rc, langId, ICSettingEntry.INCLUDE_PATH);
List<ICLanguageSettingEntry> incLocal = LanguageSettingsProvidersSerializer.getLocalSettingEntriesByKind(cfgDescription, rc, langId,
ICSettingEntry.INCLUDE_PATH);
includePathLocalEntries.addAll(incLocal);
List<ICLanguageSettingEntry> incFiles = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(config, rc, langId, ICSettingEntry.INCLUDE_FILE);
List<ICLanguageSettingEntry> incFiles = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(cfgDescription, rc, langId,
ICSettingEntry.INCLUDE_FILE);
includeFileEntries.addAll(incFiles);
List<ICLanguageSettingEntry> macroFiles = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(config, rc, langId, ICSettingEntry.MACRO_FILE);
List<ICLanguageSettingEntry> macroFiles = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(cfgDescription, rc, langId,
ICSettingEntry.MACRO_FILE);
macroFileEntries.addAll(macroFiles);
List<ICLanguageSettingEntry> macros = LanguageSettingsProvidersSerializer
.getSettingEntriesByKind(config, rc, langId, ICSettingEntry.MACRO);
List<ICLanguageSettingEntry> macros = LanguageSettingsProvidersSerializer.getSettingEntriesByKind(cfgDescription, rc, langId,
ICSettingEntry.MACRO);
macroEntries.addAll(macros);
}
@ -138,8 +129,7 @@ public class LanguageSettingsScannerInfoProvider
definedMacros.put(name, value);
}
ExtendedScannerInfo extendedScannerInfo = new ExtendedScannerInfo(definedMacros, includePaths,
macroFiles, includeFiles, includePathsLocal);
ExtendedScannerInfo extendedScannerInfo = new ExtendedScannerInfo(definedMacros, includePaths, macroFiles, includeFiles, includePathsLocal);
extendedScannerInfo.setParserSettings(new ParserSettings2(project));
return extendedScannerInfo;
}
@ -156,8 +146,8 @@ public class LanguageSettingsScannerInfoProvider
}
/**
* Get build working directory for the provided configuration. Returns project location if none
* defined.
* Get build working directory for the provided configuration. Returns
* project location if none defined.
*/
private static IPath getBuildCWD(ICConfigurationDescription cfgDescription) {
IPath buildCWD = cfgDescription.getBuildSetting().getBuilderCWD();
@ -190,14 +180,11 @@ public class LanguageSettingsScannerInfoProvider
}
/**
* Resolve location to file system location in a configuration context. Resolving includes
* replacing build/environment variables with values, making relative path absolute etc.
* Resolve location to file system location in a configuration context.
* Resolving includes replacing build/environment variables with values, making relative path absolute etc.
*
* @param location
* - location to resolve. If relative, it is taken to be rooted in build working
* directory.
* @param cfgDescription
* - the configuration context.
* @param location - location to resolve. If relative, it is taken to be rooted in build working directory.
* @param cfgDescription - the configuration context.
* @return resolved file system location.
*/
private static String resolveEntry(String location, ICConfigurationDescription cfgDescription) {
@ -238,8 +225,7 @@ public class LanguageSettingsScannerInfoProvider
/**
* Convert path delimiters to OS representation avoiding using org.eclipse.core.runtime.Path
* being careful to preserve "../" segments and not let collapsing them which is not correct for
* symbolic links.
* being careful to preserve "../" segments and not let collapsing them which is not correct for symbolic links.
*/
private String toOSString(String loc) {
// use OS file separators (i.e. '\' on Windows)
@ -253,14 +239,11 @@ public class LanguageSettingsScannerInfoProvider
* Convert the path entries to absolute file system locations represented as String array.
* Resolve the entries which are not resolved.
*
* @param entriesPath
* - language settings path entries.
* @param cfgDescription
* - configuration description for resolving entries.
* @param entriesPath - language settings path entries.
* @param cfgDescription - configuration description for resolving entries.
* @return array of the locations.
*/
private String[] convertToLocations(LinkedHashSet<ICLanguageSettingEntry> entriesPath,
ICConfigurationDescription cfgDescription) {
private String[] convertToLocations(LinkedHashSet<ICLanguageSettingEntry> entriesPath, ICConfigurationDescription cfgDescription) {
List<String> locations = new ArrayList<String>(entriesPath.size());
for (ICLanguageSettingEntry entry : entriesPath) {
ICPathEntry entryPath = (ICPathEntry)entry;
@ -324,8 +307,7 @@ public class LanguageSettingsScannerInfoProvider
}
if (listenersMap == null) {
listenersMap = Collections
.synchronizedMap(new HashMap<IResource, List<IScannerInfoChangeListener>>());
listenersMap = Collections.synchronizedMap(new HashMap<IResource, List<IScannerInfoChangeListener>>());
}
IProject project = resource.getProject();
@ -364,14 +346,12 @@ public class LanguageSettingsScannerInfoProvider
if (project != null) {
ICProjectDescription prjDescription = CCorePlugin.getDefault().getProjectDescription(project);
if (prjDescription != null) {
ICConfigurationDescription indexedCfgDescription = prjDescription
.getDefaultSettingConfiguration();
ICConfigurationDescription indexedCfgDescription = prjDescription.getDefaultSettingConfiguration();
String indexedCfgId = indexedCfgDescription.getId();
for (String cfgId : event.getConfigurationDescriptionIds()) {
if (cfgId.equals(indexedCfgId)) {
for (Entry<IResource, List<IScannerInfoChangeListener>> entry : listenersMap
.entrySet()) {
for (Entry<IResource, List<IScannerInfoChangeListener>> entry : listenersMap.entrySet()) {
IResource rc = entry.getKey();
List<IScannerInfoChangeListener> listeners = listenersMap.get(rc);
if (listeners != null && !listeners.isEmpty()) {

View file

@ -41,29 +41,20 @@ import org.eclipse.cdt.internal.core.model.CModelManager;
import org.eclipse.cdt.internal.core.model.DefaultPathEntryStore;
import org.eclipse.cdt.internal.core.model.PathEntryManager;
import org.eclipse.cdt.internal.core.model.PathEntryUtil;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
/**
* Wrapper class intended to provide backward compatibility with ScannerInfo
* supplied by {@link PathEntryManager}.
* Wrapper class intended to provide backward compatibility with ScannerInfo supplied by {@link PathEntryManager}.
*/
public class PathEntryScannerInfoLanguageSettingsProvider extends LanguageSettingsBaseProvider {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
if (config == null) {
return null;
}
ICConfigurationDescription cfgDescription = config.getAdapter(ICConfigurationDescription.class);
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (cfgDescription == null) {
return null;
}
ICProjectDescription prjDescription = cfgDescription.getProjectDescription();
if (prjDescription == null) {
return null;
@ -81,8 +72,7 @@ public class PathEntryScannerInfoLanguageSettingsProvider extends LanguageSettin
@Override
public int compare(IPathEntry macro1, IPathEntry macro2) {
if (macro1 instanceof IMacroEntry && macro2 instanceof IMacroEntry) {
return ((IMacroEntry) macro1).getMacroName()
.compareTo(((IMacroEntry) macro2).getMacroName());
return ((IMacroEntry)macro1).getMacroName().compareTo(((IMacroEntry)macro2).getMacroName());
}
return 0;
}
@ -92,20 +82,17 @@ public class PathEntryScannerInfoLanguageSettingsProvider extends LanguageSettin
pathEntriesMap.put(IPathEntry.CDT_LIBRARY, new LinkedHashSet<IPathEntry>());
IPathEntryStore pathEntryStore = new DefaultPathEntryStore(project);
int typesMask = IPathEntry.CDT_INCLUDE | IPathEntry.CDT_MACRO | IPathEntry.CDT_INCLUDE_FILE
| IPathEntry.CDT_MACRO_FILE | IPathEntry.CDT_LIBRARY;
int typesMask = IPathEntry.CDT_INCLUDE | IPathEntry.CDT_MACRO | IPathEntry.CDT_INCLUDE_FILE | IPathEntry.CDT_MACRO_FILE | IPathEntry.CDT_LIBRARY;
try {
IPathEntry[] storePathEntries = pathEntryStore.getRawPathEntries();
for (IPathEntry storePathEntry : storePathEntries) {
if (storePathEntry instanceof IContainerEntry) {
try {
IPathEntryContainer container = PathEntryManager.getDefault()
.getPathEntryContainer((IContainerEntry) storePathEntry, cproject);
IPathEntryContainer container = PathEntryManager.getDefault().getPathEntryContainer((IContainerEntry) storePathEntry, cproject);
if (container != null) {
IPathEntry[] pathEntries = null;
if (container instanceof IPathEntryContainerExtension) {
pathEntries = ((IPathEntryContainerExtension) container)
.getPathEntries(rc.getFullPath(), typesMask);
pathEntries = ((IPathEntryContainerExtension)container).getPathEntries(rc.getFullPath(), typesMask);
} else {
pathEntries = container.getPathEntries();
}
@ -137,12 +124,10 @@ public class PathEntryScannerInfoLanguageSettingsProvider extends LanguageSettin
}
}
return LanguageSettingsSerializableStorage
.getPooledList(new ArrayList<ICLanguageSettingEntry>(lsEntries));
return LanguageSettingsSerializableStorage.getPooledList(new ArrayList<ICLanguageSettingEntry>(lsEntries));
}
private void collectPathEntry(LinkedHashMap<Integer, Set<IPathEntry>> pathEntriesMap, IPath projectPath,
IPathEntry pathEntry) {
private void collectPathEntry(LinkedHashMap<Integer, Set<IPathEntry>> pathEntriesMap, IPath projectPath, IPathEntry pathEntry) {
switch (pathEntry.getEntryKind()) {
case IPathEntry.CDT_INCLUDE:
case IPathEntry.CDT_MACRO:
@ -161,15 +146,13 @@ public class PathEntryScannerInfoLanguageSettingsProvider extends LanguageSettin
switch (pathEntry.getEntryKind()) {
case IPathEntry.CDT_INCLUDE:
IIncludeEntry includeEntry = (IIncludeEntry)pathEntry;
return CDataUtil.createCIncludePathEntry(includeEntry.getFullIncludePath().toOSString(),
includeEntry.isSystemInclude() ? 0 : ICSettingEntry.LOCAL);
return CDataUtil.createCIncludePathEntry(includeEntry.getFullIncludePath().toOSString(), includeEntry.isSystemInclude() ? 0 : ICSettingEntry.LOCAL);
case IPathEntry.CDT_MACRO:
IMacroEntry macroEntry = (IMacroEntry) pathEntry;
return CDataUtil.createCMacroEntry(macroEntry.getMacroName(), macroEntry.getMacroValue(), 0);
case IPathEntry.CDT_INCLUDE_FILE:
IIncludeFileEntry includeFileEntry = (IIncludeFileEntry) pathEntry;
return CDataUtil.createCIncludeFileEntry(includeFileEntry.getFullIncludeFilePath().toOSString(),
0);
return CDataUtil.createCIncludeFileEntry(includeFileEntry.getFullIncludeFilePath().toOSString(), 0);
case IPathEntry.CDT_MACRO_FILE:
IMacroFileEntry macroFileEntry = (IMacroFileEntry) pathEntry;
return CDataUtil.createCMacroFileEntry(macroFileEntry.getFullMacroFilePath().toOSString(), 0);

View file

@ -22,9 +22,7 @@ import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Adapters;
/**
* Language settings provider to provide entries exported from referenced projects.
@ -41,8 +39,7 @@ public class ReferencedProjectsLanguageSettingsProvider extends LanguageSettings
};
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (recursiveCallIndicator.get()) {
// Recursive call indicates that the provider of a referenced project is called.
// Only exported entries of the original configuration should be considered,
@ -50,11 +47,6 @@ public class ReferencedProjectsLanguageSettingsProvider extends LanguageSettings
return null;
}
if (config == null) {
return null;
}
ICConfigurationDescription cfgDescription = config.getAdapter(ICConfigurationDescription.class);
if (cfgDescription == null) {
return null;
}
@ -66,18 +58,14 @@ public class ReferencedProjectsLanguageSettingsProvider extends LanguageSettings
try {
recursiveCallIndicator.set(true);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
ICConfigurationDescription[] refCfgDescriptions = CoreModelUtil
.getReferencedConfigurationDescriptions(cfgDescription, false);
ICConfigurationDescription[] refCfgDescriptions = CoreModelUtil.getReferencedConfigurationDescriptions(cfgDescription, false);
for (ICConfigurationDescription refCfgDescription : refCfgDescriptions) {
IBuildConfiguration refConfig = Adapters.adapt(refCfgDescription, IBuildConfiguration.class);
List<ICLanguageSettingEntry> refEntries = LanguageSettingsManager
.getSettingEntriesByKind(refConfig, rc, languageId, ICSettingEntry.ALL);
List<ICLanguageSettingEntry> refEntries = LanguageSettingsManager.getSettingEntriesByKind(refCfgDescription, rc, languageId, ICSettingEntry.ALL);
for (ICLanguageSettingEntry refEntry : refEntries) {
int flags = refEntry.getFlags();
if ((flags & ICSettingEntry.EXPORTED) == ICSettingEntry.EXPORTED) {
// create a new entry with EXPORTED flag cleared
ICLanguageSettingEntry entry = CDataUtil.createEntry(refEntry,
flags & ~ICSettingEntry.EXPORTED);
ICLanguageSettingEntry entry = CDataUtil.createEntry(refEntry, flags & ~ICSettingEntry.EXPORTED);
entries.add(entry);
}
}

View file

@ -28,29 +28,16 @@ import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.core.settings.model.util.CExtensionUtil;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
/**
* Wrapper class intended to provide backward compatibility with
* ScannerInfoProvider defined by org.eclipse.cdt.core.ScannerInfoProvider
* extension point
* Wrapper class intended to provide backward compatibility with ScannerInfoProvider defined by org.eclipse.cdt.core.ScannerInfoProvider extension point
*/
public class ScannerInfoExtensionLanguageSettingsProvider extends LanguageSettingsBaseProvider {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
if (config == null) {
return null;
}
ICConfigurationDescription cfgDescription = config.getAdapter(ICConfigurationDescription.class);
if (cfgDescription == null) {
return null;
}
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
IScannerInfoProvider scannerInfoProvider = getScannerInfoProvider(cfgDescription);
if (scannerInfoProvider != null) {
@ -77,11 +64,9 @@ public class ScannerInfoExtensionLanguageSettingsProvider extends LanguageSettin
}
/**
* Return ScannerInfoProvider defined in configuration metadata in
* .cproject.
* Return ScannerInfoProvider defined in configuration metadata in .cproject.
*
* @param cfgDescription
* - configuration description.
* @param cfgDescription - configuration description.
* @return an instance of ScannerInfoProvider or {@code null}.
*/
public IScannerInfoProvider getScannerInfoProvider(ICConfigurationDescription cfgDescription) {
@ -95,8 +80,7 @@ public class ScannerInfoExtensionLanguageSettingsProvider extends LanguageSettin
ICConfigExtensionReference ref = refs[0];
try {
AbstractCExtension cExtension = null;
IConfigurationElement el = CExtensionUtil.getFirstConfigurationElement(ref, "cextension", //$NON-NLS-1$
false);
IConfigurationElement el = CExtensionUtil.getFirstConfigurationElement(ref, "cextension", false); //$NON-NLS-1$
cExtension = (AbstractCExtension)el.createExecutableExtension("run"); //$NON-NLS-1$
cExtension.setExtensionReference(ref);
cExtension.setProject(ref.getConfiguration().getProjectDescription().getProject());

View file

@ -1,38 +0,0 @@
/*******************************************************************************
* Copyright (c) 2016 QNX Software Systems and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.cdt.internal.core.settings.model;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.runtime.IAdapterFactory;
public class BuildConfigAdapterFactory implements IAdapterFactory {
@Override
@SuppressWarnings("unchecked")
public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
if (adaptableObject instanceof IBuildConfiguration
&& adapterType.equals(ICConfigurationDescription.class)) {
IBuildConfiguration buildConfig = (IBuildConfiguration) adaptableObject;
ICProjectDescription prjDesc = CCorePlugin.getDefault()
.getProjectDescription(buildConfig.getProject());
if (prjDesc != null) {
return (T) prjDesc.getConfigurationById(buildConfig.getName());
}
}
return null;
}
@Override
public Class<?>[] getAdapterList() {
return new Class<?>[] { ICConfigurationDescription.class };
}
}

View file

@ -1,73 +0,0 @@
/*******************************************************************************
* Copyright (c) 2016 QNX Software Systems and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.cdt.internal.core.settings.model;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResourceStatus;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.core.runtime.NullProgressMonitor;
public class CConfigurationAdapterFactory implements IAdapterFactory {
@Override
@SuppressWarnings("unchecked")
public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
if (adaptableObject instanceof ICConfigurationDescription
&& adapterType.equals(IBuildConfiguration.class)) {
ICConfigurationDescription cfgDesc = (ICConfigurationDescription) adaptableObject;
IProject project = cfgDesc.getProjectDescription().getProject();
if (project != null) {
String configId = cfgDesc.getId();
try {
IBuildConfiguration config = project.getBuildConfig(configId);
if (config == null) {
CCorePlugin.log(String.format("null config %s: %s", project.getName(), configId)); //$NON-NLS-1$
}
return (T) config;
} catch (CoreException e) {
if (!ResourcesPlugin.getWorkspace().isTreeLocked() &&
e.getStatus().getCode() == IResourceStatus.BUILD_CONFIGURATION_NOT_FOUND) {
try {
Set<String> configNames = new HashSet<>();
for (IBuildConfiguration config : project.getBuildConfigs()) {
configNames.add(config.getName());
}
configNames.add(configId);
IProjectDescription projectDesc = project.getDescription();
projectDesc.setBuildConfigs(
configNames.toArray(new String[configNames.size()]));
project.setDescription(projectDesc, new NullProgressMonitor());
return (T) project.getBuildConfig(configId);
} catch (CoreException e2) {
CCorePlugin.log(e2.getStatus());
}
} else {
CCorePlugin.log(e.getStatus());
}
}
}
}
return null;
}
@Override
public Class<?>[] getAdapterList() {
return new Class<?>[] { IBuildConfiguration.class };
}
}

View file

@ -35,11 +35,9 @@ import org.eclipse.core.runtime.QualifiedName;
public class CProjectDescription implements ICProjectDescription, ICDataProxyContainer {
private static final String ACTIVE_CFG = "activeConfiguration"; //$NON-NLS-1$
private static final QualifiedName ACTIVE_CFG_PROPERTY = new QualifiedName(CCorePlugin.PLUGIN_ID,
ACTIVE_CFG);
private static final QualifiedName ACTIVE_CFG_PROPERTY = new QualifiedName(CCorePlugin.PLUGIN_ID, ACTIVE_CFG);
private static final String SETTING_CFG = "settingConfiguration"; //$NON-NLS-1$
private static final QualifiedName SETTING_CFG_PROPERTY = new QualifiedName(CCorePlugin.PLUGIN_ID,
SETTING_CFG);
private static final QualifiedName SETTING_CFG_PROPERTY = new QualifiedName(CCorePlugin.PLUGIN_ID, SETTING_CFG);
private CfgIdPair fActiveCfgInfo;
private CfgIdPair fSettingCfgInfo;
@ -155,8 +153,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
}
public CProjectDescription(IProject project, ICSettingsStorage storage, ICStorageElement element,
boolean loading, boolean isCreating) throws CoreException {
public CProjectDescription(IProject project, ICSettingsStorage storage, ICStorageElement element, boolean loading, boolean isCreating) throws CoreException {
fProject = project;
fStorage = storage;
fRootStorageElement = element;
@ -233,8 +230,10 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
}
/**
* Called when the read-only project description has / is being set fIsApplying => false
* setModified (false) set the ICSettingsStorage to readonly
* Called when the read-only project description has / is being set
* fIsApplying => false
* setModified (false)
* set the ICSettingsStorage to readonly
*/
public void doneApplying() {
doneInitializing();
@ -260,8 +259,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
private void doneInitializing() {
for (ICConfigurationDescription cfg : fCfgMap.values()) {
// FIXME How and why are we down casting to a
// CConfigurationDescriptionCache. Comments, please!
// FIXME How and why are we down casting to a CConfigurationDescriptionCache. Comments, please!
CConfigurationDescriptionCache cache = (CConfigurationDescriptionCache) cfg;
cache.doneInitialization();
}
@ -287,8 +285,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
* @param el
* @param isCreating
*/
public CProjectDescription(CProjectDescription base, boolean saving, ICSettingsStorage storage,
ICStorageElement el, boolean isCreating) {
public CProjectDescription(CProjectDescription base, boolean saving, ICSettingsStorage storage, ICStorageElement el, boolean isCreating) {
fActiveCfgInfo = new CfgIdPair(base.fActiveCfgInfo);
fSettingCfgInfo = new CfgIdPair(base.fSettingCfgInfo);
fProject = base.fProject;
@ -299,10 +296,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
fIsApplying = saving || base.fIsApplying;
fIsCreating = isCreating;
fPrefs = new CProjectDescriptionPreferences(base.fPrefs,
(CProjectDescriptionPreferences) CProjectDescriptionManager.getInstance()
.getProjectDescriptionWorkspacePreferences(false),
false);
fPrefs = new CProjectDescriptionPreferences(base.fPrefs, (CProjectDescriptionPreferences)CProjectDescriptionManager.getInstance().getProjectDescriptionWorkspacePreferences(false), false);
for (Iterator<ICConfigurationDescription> iter = base.fCfgMap.values().iterator(); iter.hasNext();) {
try {
@ -314,9 +308,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
baseCache = (CConfigurationDescriptionCache) baseData;
baseData = baseCache.getConfigurationData();
}
CConfigurationDescriptionCache cache = new CConfigurationDescriptionCache(
(ICConfigurationDescription) cfgDes, baseData, baseCache,
cfgDes.getSpecSettings(), this, null);
CConfigurationDescriptionCache cache = new CConfigurationDescriptionCache((ICConfigurationDescription) cfgDes, baseData, baseCache, cfgDes.getSpecSettings(), this, null);
configurationCreated(cache);
} else {
CConfigurationData baseData = cfgDes.getConfigurationData(false);
@ -329,8 +321,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
}
// Shallow cloning the base map
Map<QualifiedName, Object> cloneMap = Collections
.synchronizedMap(new HashMap<QualifiedName, Object>());
Map<QualifiedName, Object> cloneMap = Collections.synchronizedMap(new HashMap<QualifiedName, Object>());
synchronized(base.fPropertiesMap) {
cloneMap.putAll(base.fPropertiesMap);
}
@ -338,8 +329,8 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
}
/**
* Convert the current CConfigurationDescriptions to cached versions This occurs during the
* SetCProjectDescription Operation
* Convert the current CConfigurationDescriptions to cached versions
* This occurs during the SetCProjectDescription Operation
*/
void switchToCachedConfigurationDescriptions() throws CoreException {
for (Map.Entry<String, ICConfigurationDescription> e : fCfgMap.entrySet()) {
@ -351,8 +342,8 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
baseCache = (CConfigurationDescriptionCache) baseData;
baseData = baseCache.getConfigurationData();
}
CConfigurationDescriptionCache cache = new CConfigurationDescriptionCache(cfgDes, baseData,
baseCache, cfgDes.getSpecSettings(), this, null);
CConfigurationDescriptionCache cache = new CConfigurationDescriptionCache(cfgDes, baseData, baseCache,
cfgDes.getSpecSettings(), this, null);
e.setValue(cache);
}
}
@ -409,6 +400,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
if (fIsReadOnly)
throw ExceptionFactory.createIsReadOnlyException();
CConfigurationDescription cfgDes = (CConfigurationDescription) getConfigurationByName(name);
if (cfgDes != null) {
cfgDes.removeConfiguration();
@ -432,7 +424,8 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
}
@Override
public void setActiveConfiguration(ICConfigurationDescription cfg) throws WriteAccessException {
public void setActiveConfiguration(
ICConfigurationDescription cfg) throws WriteAccessException {
if (fIsReadOnly)
throw ExceptionFactory.createIsReadOnlyException();
if (cfg == null)
@ -455,8 +448,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
}
@Override
public ICStorageElement importStorage(String id, ICStorageElement el)
throws UnsupportedOperationException, CoreException {
public ICStorageElement importStorage(String id, ICStorageElement el) throws UnsupportedOperationException, CoreException {
return getStorageBase().importStorage(id, el);
}
@ -526,8 +518,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
throw ExceptionFactory.createCoreException("CProjectDescription ICStorageElement == null"); //$NON-NLS-1$
// if (fRootStorageElement == null) {
// fRootStorageElement = CProjectDescriptionManager.getInstance().createStorage(fProject,
// true, true, isReadOnly());
// fRootStorageElement = CProjectDescriptionManager.getInstance().createStorage(fProject, true, true, isReadOnly());
// }
return fRootStorageElement;
}
@ -544,8 +535,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
}
@Override
public ICConfigurationDescription createConfiguration(String buildSystemId, CConfigurationData data)
throws CoreException {
public ICConfigurationDescription createConfiguration(String buildSystemId, CConfigurationData data) throws CoreException {
if (fIsReadOnly)
throw ExceptionFactory.createIsReadOnlyException();
CConfigurationDescription cfg = new CConfigurationDescription(data, buildSystemId, this);
@ -553,8 +543,7 @@ public class CProjectDescription implements ICProjectDescription, ICDataProxyCon
return cfg;
}
public CConfigurationDescription createConvertedConfiguration(String id, String name, ICStorageElement el)
throws CoreException {
public CConfigurationDescription createConvertedConfiguration(String id, String name, ICStorageElement el) throws CoreException{
if (fIsReadOnly)
throw ExceptionFactory.createIsReadOnlyException();
CConfigurationDescription cfg = new CConfigurationDescription(id, name, el, this);

View file

@ -98,12 +98,10 @@ import org.eclipse.cdt.internal.core.settings.model.xml.InternalXmlStorageElemen
import org.eclipse.cdt.internal.core.settings.model.xml.XmlStorage;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceStatus;
import org.eclipse.core.resources.ISavedState;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRoot;
@ -136,30 +134,27 @@ import org.xml.sax.SAXException;
import com.ibm.icu.text.MessageFormat;
/**
* The CProjectDescriptionManager is to marshall the loading and storing of CDT Project
* Descriptions.
* The CProjectDescriptionManager is to marshall the loading and storing
* of CDT Project Descriptions.
*
* This class delegates loading and store of the project model to the appropriate
* AbstractCProjectDescriptionStorage for the Project Description. [ Discovered at Project load
* time.]
*
* Users should not synchronize on the singleton instance of this class. It is the job of the
* AbstractCProjectDescriptionStorage to ensure thread safe access to the backing store as described
* in that interface.
* Users should not synchronize on the singleton instance of this class. It is the job of
* the AbstractCProjectDescriptionStorage to ensure thread safe access to the backing store
* as described in that interface.
*
* Previously this class created and persisted
*
* @see ICProjectDescriptionManager
*/
public class CProjectDescriptionManager implements ICProjectDescriptionManager {
public static final int INTERNAL_GET_IGNORE_CLOSE = 1 << 31 ;
private static final String VERSION_ELEMENT_NAME = "fileVersion"; //$NON-NLS-1$
/**
* Preference Version 4.0 & 5.0 are equivalent for us. Version was inadvertently bumped when
* during project description storage work. This is the minimum preference version we support
* loading.
*/
/** Preference Version 4.0 & 5.0 are equivalent for us. Version was inadvertently bumped
* when during project description storage work.
* This is the minimum preference version we support loading.*/
public static final Version MIN_DESCRIPTION_VERSION = new Version("4.0"); //$NON-NLS-1$
/** Current preference file storage version */
public static final Version DESCRIPTION_VERSION = new Version("5.0"); //$NON-NLS-1$
@ -178,8 +173,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
private static final String DEFAULT_CFG_ID_PREFIX = CCorePlugin.PLUGIN_ID + ".default.config"; //$NON-NLS-1$
private static final String DEFAULT_CFG_NAME = "Configuration"; //$NON-NLS-1$
private static final QualifiedName SCANNER_INFO_PROVIDER_PROPERTY = new QualifiedName(CCorePlugin.PLUGIN_ID,
"scannerInfoProvider"); //$NON-NLS-1$
private static final QualifiedName SCANNER_INFO_PROVIDER_PROPERTY = new QualifiedName(CCorePlugin.PLUGIN_ID, "scannerInfoProvider"); //$NON-NLS-1$
static class CompositeWorkspaceRunnable implements IWorkspaceRunnable {
private List<IWorkspaceRunnable> fRunnables = new ArrayList<IWorkspaceRunnable>();
@ -274,8 +268,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
/** The CProjectDescriptionManager instance */
private static volatile CProjectDescriptionManager fInstance;
private CProjectDescriptionManager() {
}
private CProjectDescriptionManager(){}
public static CProjectDescriptionManager getInstance(){
if(fInstance == null)
@ -308,12 +301,10 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
/**
*
* @param from
* Project to move the description from
* @param to
* Project where the description is moved to
* @return <b>ICProjectDescription</b> - non serialized, modified, writable project description.
* To serialize, call <code>setProjectDescription()</code>
* @param from Project to move the description from
* @param to Project where the description is moved to
* @return <b>ICProjectDescription</b> - non serialized, modified, writable
* project description. To serialize, call <code>setProjectDescription()</code>
*
*/
public ICProjectDescription projectMove(IProject from, IProject to) {
@ -331,6 +322,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return des;
}
public Job startup(){
if(fRcChangeHandler == null){
fRcChangeHandler = new ResourceChangeHandler();
@ -359,43 +351,6 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
protected IStatus run(IProgressMonitor monitor) {
try{
startSaveParticipant();
// startup mapping of ICConfigurationDescriptors to IBuildConfigurations
CProjectDescriptionManager manager = CProjectDescriptionManager.getInstance();
manager.addCProjectDescriptionListener(new ICProjectDescriptionListener() {
@Override
public void handleEvent(CProjectDescriptionEvent event) {
ICProjectDescription projDesc = event.getNewCProjectDescription();
IProject project = projDesc.getProject();
for (ICConfigurationDescription desc : projDesc.getConfigurations()) {
String id = desc.getId();
try {
project.getBuildConfig(id);
} catch (CoreException e) {
if (e.getStatus().getCode() == IResourceStatus.BUILD_CONFIGURATION_NOT_FOUND) {
try {
Set<String> configNames = new HashSet<>();
for (IBuildConfiguration config : project.getBuildConfigs()) {
configNames.add(config.getName());
}
configNames.add(id);
// CCorePlugin.log(String.format("adding %s: %s", project.getName(), id)); //$NON-NLS-1$
IProjectDescription projectDesc = project.getDescription();
projectDesc.setBuildConfigs(
configNames.toArray(new String[configNames.size()]));
project.setDescription(projectDesc, new NullProgressMonitor());
// CCorePlugin.log(
// String.format("Config added %s: %s", project.getName(), id)); //$NON-NLS-1$
} catch (CoreException e2) {
CCorePlugin.log(e2.getStatus());
}
} else {
CCorePlugin.log(e.getStatus());
}
}
}
}
}, CProjectDescriptionEvent.LOADED | CProjectDescriptionEvent.ABOUT_TO_APPLY);
} catch (CoreException e){
CCorePlugin.log(e);
return e.getStatus();
@ -413,18 +368,17 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
rcJob.setPriority(Job.INTERACTIVE);
rcJob.setSystem(true);
return rcJob;
}
/*
* This method adds a save participant and resource change listener Throws CoreException if the
* methods fails to add a save participant. The resource change listener in not added in this
* case either.
* This method adds a save participant and resource change listener
* Throws CoreException if the methods fails to add a save participant.
* The resource change listener in not added in this case either.
*/
private void startSaveParticipant() throws CoreException{
// Set up a listener for resource change events
ISavedState lastState = ResourcesPlugin.getWorkspace().addSaveParticipant(CCorePlugin.PLUGIN_ID,
fRcChangeHandler);
ISavedState lastState =
ResourcesPlugin.getWorkspace().addSaveParticipant(CCorePlugin.PLUGIN_ID, fRcChangeHandler);
if (lastState != null) {
lastState.processResourceChangeEvents(fRcChangeHandler);
@ -473,12 +427,10 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
/**
* Base method for getting a Project's Description
*
* @param project
* @param flags
* @return ICProjectDescription
* @throws CoreException
* if project description isn't available
* @throws CoreException if project description isn't available
*/
private ICProjectDescription getProjectDescriptionInternal(IProject project, int flags) throws CoreException {
AbstractCProjectDescriptionStorage storage = getProjectDescriptionStorage(project);
@ -487,17 +439,14 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
/**
* Run the workspace modification in the current thread using the workspace scheduling rule
* Equivalent to:
* <code>runWspModification(IWorkspaceRunnable, ResourcecPlugin.getWorkspace().getRoot(), IProgressMonitor)</code>
* <br/>
* <br/>
* Note that if the workspace is locked, or the current job / thread doesn't contain the
* workspace scheduling rule, then we schedule a job to run the {@link IWorkspaceRunnable} <br/>
* <br/>
* Equivalent to: <code>runWspModification(IWorkspaceRunnable, ResourcecPlugin.getWorkspace().getRoot(), IProgressMonitor)</code>
*<br/><br/>
* Note that if the workspace is locked, or the current job / thread doesn't contain the workspace
* scheduling rule, then we schedule a job to run the {@link IWorkspaceRunnable}
*<br/><br/>
* The scheduled job is returned, or null if the operation was run immediately.
*
* @param runnable
* the IWorkspaceRunnable to run
* @param runnable the IWorkspaceRunnable to run
* @param monitor
* @return scheduled job or null if the operation was run immediately
*/
@ -506,15 +455,13 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
/**
* Either runs the modification in the current thread (if the workspace is not locked) or
* schedules a runnable to perform the operation
*
* Either runs the modification in the current thread (if the workspace is not locked)
* or schedules a runnable to perform the operation
* @param runnable
* @param monitor
* @return scheduled job or null if the operation was run immediately
*/
public static Job runWspModification(final IWorkspaceRunnable runnable, final ISchedulingRule rule,
IProgressMonitor monitor) {
public static Job runWspModification(final IWorkspaceRunnable runnable, final ISchedulingRule rule, IProgressMonitor monitor){
if(monitor == null)
monitor = new NullProgressMonitor();
@ -567,8 +514,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return null;
}
private static void runAtomic(final IWorkspaceRunnable r, ISchedulingRule rule, IProgressMonitor monitor)
throws CoreException {
private static void runAtomic(final IWorkspaceRunnable r, ISchedulingRule rule, IProgressMonitor monitor) throws CoreException{
IWorkspace wsp = ResourcesPlugin.getWorkspace();
wsp.run(new IWorkspaceRunnable(){
@Override
@ -669,8 +615,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
if(fConverters != null)
return;
IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
.getExtensionPoint(CProjectConverterDesciptor.PROJECT_CONVERTER_EXTPOINT_ID);
IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(CProjectConverterDesciptor.PROJECT_CONVERTER_EXTPOINT_ID);
IExtension exts[] = extensionPoint.getExtensions();
CProjectConverterDesciptor[] dess = new CProjectConverterDesciptor[exts.length];
@ -687,8 +632,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
@Override
public ICProjectDescription createProjectDescription(IProject project, boolean loadIfExists, boolean creating)
throws CoreException {
public ICProjectDescription createProjectDescription(IProject project, boolean loadIfExists, boolean creating) throws CoreException{
int flags = ICProjectDescriptionManager.GET_WRITABLE | ICProjectDescriptionManager.GET_CREATE_DESCRIPTION;
flags |= loadIfExists ? 0 : ICProjectDescriptionManager.GET_EMPTY_PROJECT_DESCRIPTION;
flags |= creating ? ICProjectDescriptionManager.PROJECT_CREATING : 0;
@ -702,8 +646,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return new ScannerInfoProviderProxy(project);
}
ScannerInfoProviderProxy provider = (ScannerInfoProviderProxy) des
.getSessionProperty(SCANNER_INFO_PROVIDER_PROPERTY);
ScannerInfoProviderProxy provider = (ScannerInfoProviderProxy)des.getSessionProperty(SCANNER_INFO_PROVIDER_PROPERTY);
if(provider == null){
provider = new ScannerInfoProviderProxy(project);
des.setSessionProperty(SCANNER_INFO_PROVIDER_PROPERTY, provider);
@ -722,8 +665,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
/*
* returns true if the project description was modified false - otherwise
*/
public boolean checkHandleActiveCfgChange(CProjectDescription newDes, ICProjectDescription oldDes,
IProjectDescription eDes, IProgressMonitor monitor) {
public boolean checkHandleActiveCfgChange(CProjectDescription newDes, ICProjectDescription oldDes, IProjectDescription eDes, IProgressMonitor monitor){
if(newDes == null)
return false;
ICConfigurationDescription newCfg = newDes.getActiveConfiguration();
@ -780,9 +722,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
* Fix up platform references having changed CDT configuration references
*/
@SuppressWarnings("unchecked")
private boolean checkProjectRefChange(IProjectDescription des, ICProjectDescription newCDesc,
ICConfigurationDescription newCfg, ICConfigurationDescription oldCfg, IProgressMonitor monitor)
throws CoreException {
private boolean checkProjectRefChange(IProjectDescription des, ICProjectDescription newCDesc, ICConfigurationDescription newCfg, ICConfigurationDescription oldCfg, IProgressMonitor monitor) throws CoreException{
if(newCfg == null)
return false;
@ -824,6 +764,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return true;
}
// private void checkBuildSystemChange(IProject project, String newBsId, String oldBsId, IProgressMonitor monitor) throws CoreException{
// checkBuildSystemChange(project, null, newBsId, oldBsId, monitor);
// }
@ -837,6 +778,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
// String newId = newCfg.getId();
String oldId = oldCfg != null ? oldCfg.getId() : null;
return des.checkPersistActiveCfg(oldId, false);
}
@ -849,6 +791,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
// String newId = newCfg.getId();
String oldId = oldCfg != null ? oldCfg.getId() : null;
return des.checkPersistSettingCfg(oldId, false);
}
@ -898,8 +841,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
@Override
public void setProjectDescription(IProject project, ICProjectDescription des, boolean force,
IProgressMonitor monitor) throws CoreException {
public void setProjectDescription(IProject project, ICProjectDescription des, boolean force, IProgressMonitor monitor) throws CoreException {
int flags = force ? SET_FORCE : 0;
setProjectDescription(project, des, flags, monitor);
}
@ -909,16 +851,9 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
/** ThreadLocal flag to let CDescriptor know whether already in a setProjectDescription */
ThreadLocal<Boolean> settingProjectDescription = new ThreadLocal<Boolean>() {
ThreadLocal<Boolean> settingProjectDescription = new ThreadLocal<Boolean>(){@Override protected Boolean initialValue() {return false;}};
@Override
protected Boolean initialValue() {
return false;
}
};
@Override
public void setProjectDescription(IProject project, ICProjectDescription des, int flags, IProgressMonitor monitor)
throws CoreException {
public void setProjectDescription(IProject project, ICProjectDescription des, int flags, IProgressMonitor monitor) throws CoreException {
boolean originalState = isCurrentThreadSetProjectDescription();
try {
if (originalState) {
@ -926,19 +861,15 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
// But it is quite likely to be an error on part of the caller unaware that their listener can be called from inside setProjectDescription().
// To avoid the log entry the callers should check CProjectDescriptionManager.isCurrentThreadSetProjectDescription()
// and schedule the update in background thread themselves.
CCorePlugin.logStackTrace(IStatus.INFO,
"Recursive setProjectDescription from event listener, project=" + project); //$NON-NLS-1$
CCorePlugin.logStackTrace(IStatus.INFO, "Recursive setProjectDescription from event listener, project=" + project); //$NON-NLS-1$
}
settingProjectDescription.set(true);
if(des != null){
if (!project.isAccessible())
throw ExceptionFactory.createCoreException(MessageFormat.format(
CCorePlugin.getResourceString("ProjectDescription.ProjectNotAccessible"), //$NON-NLS-1$
new Object[] { project.getName() }));
throw ExceptionFactory.createCoreException(MessageFormat.format(CCorePlugin.getResourceString("ProjectDescription.ProjectNotAccessible"), new Object[] {project.getName()})); //$NON-NLS-1$
if(!des.isValid() && (!fAllowEmptyCreatingDescription || !des.isCdtProjectCreating()))
throw ExceptionFactory.createCoreException(
SettingsModelMessages.getString("CProjectDescriptionManager.17") + project.getName()); //$NON-NLS-1$
throw ExceptionFactory.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.17") + project.getName()); //$NON-NLS-1$
if(!checkFlags(flags, SET_FORCE) && !des.isModified())
return;
@ -958,9 +889,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
/**
* Indicates that a setProjectDescription is currently in progress to prevent recursive
* setProjectDescription
*
* Indicates that a setProjectDescription is currently in progress to prevent recursive setProjectDescription
* @return boolean
*/
public boolean isCurrentThreadSetProjectDescription() {
@ -969,29 +898,22 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
/**
* Base for getting a project desc's storage. project must be accessible.
*
* @param project
* @return ProjectDescription storage
* @throws CoreException
* if Project isn't accessible
* @throws CoreException if Project isn't accessible
*/
private AbstractCProjectDescriptionStorage getProjectDescriptionStorage(IProject project) throws CoreException {
if (project == null || !project.isAccessible())
throw ExceptionFactory.createCoreException(
MessageFormat.format(CCorePlugin.getResourceString("ProjectDescription.ProjectNotAccessible"), //$NON-NLS-1$
new Object[] { project != null ? project.getName() : "<null>" })); //$NON-NLS-1$
AbstractCProjectDescriptionStorage storage = CProjectDescriptionStorageManager.getInstance()
.getProjectDescriptionStorage(project);
throw ExceptionFactory.createCoreException(MessageFormat.format(CCorePlugin.getResourceString("ProjectDescription.ProjectNotAccessible"), new Object[] {project != null ? project.getName() : "<null>"})); //$NON-NLS-1$ //$NON-NLS-2$
AbstractCProjectDescriptionStorage storage = CProjectDescriptionStorageManager.getInstance().getProjectDescriptionStorage(project);
if (storage == null)
throw ExceptionFactory.createCoreException(
SettingsModelMessages.getString("CProjectDescriptionManager.FailedToGetStorage") //$NON-NLS-1$
+ project.getName());
throw ExceptionFactory.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.FailedToGetStorage") + project.getName()); //$NON-NLS-1$
return storage;
}
/**
* Return an ICSettingsStorage based on the provided ICStorageElement in the given IProject
*
* Return an ICSettingsStorage based on the provided ICStorageElement
* in the given IProject
* @param project
* @return ICSettingsStorages
*/
@ -1085,11 +1007,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return setting;
}
public ICLanguageSetting findLanguageSettingForContentTypeId(String id, ICLanguageSetting settings[]/*
* ,
* boolean
* src
*/) {
public ICLanguageSetting findLanguageSettingForContentTypeId(String id, ICLanguageSetting settings[]/*, boolean src*/){
for (ICLanguageSetting setting : settings) {
String ids[] = setting.getSourceContentTypeIds();
if(ListComparator.indexOf(id, ids) != -1)
@ -1098,11 +1016,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return null;
}
public ICLanguageSetting[] findCompatibleSettingsForContentTypeId(String id, ICLanguageSetting[] settings/*
* ,
* boolean
* src
*/) {
public ICLanguageSetting[] findCompatibleSettingsForContentTypeId(String id, ICLanguageSetting[] settings/*, boolean src*/){
IContentTypeManager manager = Platform.getContentTypeManager();
IContentType cType = manager.getContentType(id);
if(cType != null){
@ -1121,17 +1035,18 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return EMPTY_LANGUAGE_SETTINGS_ARRAY;
}
public ICLanguageSetting findLanguageSettingForExtension(String ext, ICLanguageSetting settings[]/*
* ,
* boolean
* src
*/) {
public ICLanguageSetting findLanguageSettingForExtension(String ext, ICLanguageSetting settings[]/*, boolean src*/){
for (ICLanguageSetting setting : settings) {
String exts[] = setting.getSourceExtensions();
/*
* if(src){ if(setting.getSourceContentType() == null){ exts =
* setting.getSourceExtensions(); } } else { if(setting.getHeaderContentType() == null){
* exts = setting.getHeaderExtensions(); } }
/* if(src){
if(setting.getSourceContentType() == null){
exts = setting.getSourceExtensions();
}
} else {
if(setting.getHeaderContentType() == null){
exts = setting.getHeaderExtensions();
}
}
*/
if(exts != null && exts.length != 0){
for (String ex: exts) {
@ -1144,8 +1059,8 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
/**
* Returns a map of configurations elements as discovered from the supplied project description
*
* Returns a map of configurations elements as discovered from the supplied project
* description
* @param des
* @return Map String -> ICStorageElement: configuration name -> configuration ICStorageElement
* @throws CoreException
@ -1169,15 +1084,10 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
/**
* Create the configuration storage cfgId in the project description
*
* @param storage
* the root settingsStorage of the project
* @param cfgId
* the configuration Id desire
* @return the cfgId as discovered in the project description or a new ICStorageElement with
* that Id
* @throws CoreException
* on failure to create storage
* @param storage the root settingsStorage of the project
* @param cfgId the configuration Id desire
* @return the cfgId as discovered in the project description or a new ICStorageElement with that Id
* @throws CoreException on failure to create storage
*/
ICStorageElement createStorage(ICSettingsStorage storage, String cfgId) throws CoreException {
ICStorageElement rootElement = storage.getStorage(MODULE_ID, true); // throws CoreException
@ -1201,21 +1111,16 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
/**
* Creates a new configuration storage based on an existing 'base' storage. If a configuration
* with the new ID already exists in the passed in project storage a CoreException is thrown.
*
* @param storage
* the setting storage of the current project description
* @param cfgId
* configID of the new configuration - must be unique in
* @param base
* the base (spec settings) storage element from which settings should be copied.
* Creates a new configuration storage based on an existing 'base' storage.
* If a configuration with the new ID already exists in the passed in project storage
* a CoreException is thrown.
* @param storage the setting storage of the current project description
* @param cfgId configID of the new configuration - must be unique in
* @param base the base (spec settings) storage element from which settings should be copied.
* @return ICStorageElement representing the new configuration
* @throws CoreException
* on failure
* @throws CoreException on failure
*/
ICStorageElement createStorage(ICSettingsStorage storage, String cfgId, ICStorageElement base)
throws CoreException {
ICStorageElement createStorage(ICSettingsStorage storage, String cfgId, ICStorageElement base) throws CoreException{
ICStorageElement rootElement = storage.getStorage(MODULE_ID, true);
ICStorageElement children[] = rootElement.getChildren();
for (ICStorageElement child : children) {
@ -1232,11 +1137,8 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
/**
* Remove the storage with the supplied configuration Id from the project
*
* @param storage
* The root settingsStorage of the project
* @param cfgId
* the configuration ID which would be
* @param storage The root settingsStorage of the project
* @param cfgId the configuration ID which would be
* @throws CoreException
*/
void removeStorage(ICSettingsStorage storage, String cfgId) throws CoreException{
@ -1266,8 +1168,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
}
void removeData(ICConfigurationDescription des, CConfigurationData data, IProgressMonitor monitor)
throws CoreException {
void removeData(ICConfigurationDescription des, CConfigurationData data, IProgressMonitor monitor) throws CoreException{
if(monitor == null)
monitor = new NullProgressMonitor();
@ -1275,8 +1176,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
provider.removeConfiguration(des, data, monitor);
}
CConfigurationData createData(ICConfigurationDescription des, ICConfigurationDescription baseDescription,
CConfigurationData base, boolean clone, IProgressMonitor monitor) throws CoreException {
CConfigurationData createData(ICConfigurationDescription des, ICConfigurationDescription baseDescription, CConfigurationData base, boolean clone, IProgressMonitor monitor) throws CoreException{
if(monitor == null)
monitor = new NullProgressMonitor();
@ -1309,8 +1209,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
if(fProviderMap != null)
return;
IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
.getExtensionPoint(CConfigurationDataProviderDescriptor.DATA_PROVIDER_EXTPOINT_ID);
IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(CConfigurationDataProviderDescriptor.DATA_PROVIDER_EXTPOINT_ID);
IExtension exts[] = extensionPoint.getExtensions();
fProviderMap = new HashMap<String, CConfigurationDataProviderDescriptor>(exts.length);
@ -1321,21 +1220,24 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
}
/*
* CConfigurationSpecSettings createConfigurationSpecSettings(ICConfigurationDescription cfg)
* throws CoreException{ CConfigurationSpecSettings settings = null; if(cfg instanceof
* CConfigurationDescriptionCache){ settings = new CConfigurationSpecSettings(cfg,
* createStorage(cfg.getProjectDescription(), cfg.getId())); } else { ICProjectDescription des =
* getProjecDescription(cfg.getProjectDescription().getProject(), false);
* CConfigurationDescriptionCache cache =
* (CConfigurationDescriptionCache)des.getConfigurationById(cfg.getId()); if(cache != null){
* settings = new CConfigurationSpecSettings(cfg, cache.getSpecSettings()); } else { settings =
* new CConfigurationSpecSettings(cfg, createStorage(cfg.getProjectDescription(), cfg.getId()));
* } } return settings; }
/* CConfigurationSpecSettings createConfigurationSpecSettings(ICConfigurationDescription cfg) throws CoreException{
CConfigurationSpecSettings settings = null;
if(cfg instanceof CConfigurationDescriptionCache){
settings = new CConfigurationSpecSettings(cfg, createStorage(cfg.getProjectDescription(), cfg.getId()));
} else {
ICProjectDescription des = getProjecDescription(cfg.getProjectDescription().getProject(), false);
CConfigurationDescriptionCache cache = (CConfigurationDescriptionCache)des.getConfigurationById(cfg.getId());
if(cache != null){
settings = new CConfigurationSpecSettings(cfg, cache.getSpecSettings());
} else {
settings = new CConfigurationSpecSettings(cfg, createStorage(cfg.getProjectDescription(), cfg.getId()));
}
}
return settings;
}
*/
public ICStorageElement createPreferenceStorage(String key, boolean createEmptyIfNotFound, boolean readOnly)
throws CoreException {
public ICStorageElement createPreferenceStorage(String key, boolean createEmptyIfNotFound, boolean readOnly) throws CoreException{
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = null;
@ -1351,33 +1253,27 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
Node rootElement = doc.getFirstChild();
if (rootElement.getNodeType() != Node.PROCESSING_INSTRUCTION_NODE) {
throw ExceptionFactory
.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.2")); //$NON-NLS-1$
throw ExceptionFactory.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.2")); //$NON-NLS-1$
} else {
String fileVersion = rootElement.getNodeValue();
Version version = new Version(fileVersion);
// Make sure that the version is compatible with the manager
// Version must between min version and current version inclusive
if (MIN_DESCRIPTION_VERSION.compareTo(version) > 0
|| DESCRIPTION_VERSION.compareTo(version) < 0) {
throw ExceptionFactory.createCoreException(
SettingsModelMessages.getString("CProjectDescriptionManager.3")); //$NON-NLS-1$
if (MIN_DESCRIPTION_VERSION.compareTo(version) > 0 || DESCRIPTION_VERSION.compareTo(version) < 0) {
throw ExceptionFactory.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.3")); //$NON-NLS-1$
}
}
// Now get the project root element (there should be only one)
NodeList nodes = doc.getElementsByTagName(ROOT_PREFERENCE_ELEMENT);
if (nodes.getLength() == 0)
throw ExceptionFactory
.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.4")); //$NON-NLS-1$
throw ExceptionFactory.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.4")); //$NON-NLS-1$
Node node = nodes.item(0);
if(node.getNodeType() != Node.ELEMENT_NODE)
throw ExceptionFactory
.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.5")); //$NON-NLS-1$
throw ExceptionFactory.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.5")); //$NON-NLS-1$
element = (Element)node;
} else if(!createEmptyIfNotFound){
throw ExceptionFactory
.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.6")); //$NON-NLS-1$
throw ExceptionFactory.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.6")); //$NON-NLS-1$
}
} catch (FactoryConfigurationError e) {
if(!createEmptyIfNotFound)
@ -1399,8 +1295,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
if(element == null) {
doc = builder.newDocument();
ProcessingInstruction instruction = doc.createProcessingInstruction(VERSION_ELEMENT_NAME,
DESCRIPTION_VERSION.toString());
ProcessingInstruction instruction = doc.createProcessingInstruction(VERSION_ELEMENT_NAME, DESCRIPTION_VERSION.toString());
doc.appendChild(instruction);
element = doc.createElement(ROOT_PREFERENCE_ELEMENT);
doc.appendChild(element);
@ -1490,19 +1385,22 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return !newCfg.getId().equals(oldCfg.getId());
}
/*
* void postProcessNewDescriptionCache(CProjectDescription des, ICProjectDescriptionDelta
* delta){ if(delta == null && delta.getDeltaKind() != ICProjectDescriptionDelta.CHANGED)
* return;
*
* ICConfigurationDescription indexCfg = des.getIndexConfiguration(); ICConfigurationDescription
* activeCfg = des.getActiveConfiguration(); ICProjectDescriptionDelta activeCfgDelta =
* findDelta(activeCfg.getId(), delta); if(indexCfg != activeCfg){
* switch(activeCfgDelta.getDeltaKind()){ case ICProjectDescriptionDelta.CHANGED:
* des.setIndexConfiguration(activeCfg); } }
*
*
* }
/* void postProcessNewDescriptionCache(CProjectDescription des, ICProjectDescriptionDelta delta){
if(delta == null && delta.getDeltaKind() != ICProjectDescriptionDelta.CHANGED)
return;
ICConfigurationDescription indexCfg = des.getIndexConfiguration();
ICConfigurationDescription activeCfg = des.getActiveConfiguration();
ICProjectDescriptionDelta activeCfgDelta = findDelta(activeCfg.getId(), delta);
if(indexCfg != activeCfg){
switch(activeCfgDelta.getDeltaKind()){
case ICProjectDescriptionDelta.CHANGED:
des.setIndexConfiguration(activeCfg);
}
}
}
*/
private ICDescriptionDelta findDelta(String id, ICDescriptionDelta delta){
ICDescriptionDelta children[] = delta.getChildren();
@ -1614,8 +1512,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
if(bsDelta != null)
delta.addChild(bsDelta);
CProjectDescriptionDelta tpsDelta = createDelta(newCfg.getTargetPlatformSetting(),
oldCfg.getTargetPlatformSetting());
CProjectDescriptionDelta tpsDelta = createDelta(newCfg.getTargetPlatformSetting(), oldCfg.getTargetPlatformSetting());
if(tpsDelta != null)
delta.addChild(tpsDelta);
@ -1760,6 +1657,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return flags;
}
private ExtSettingsDelta[] getSettingChange(ICConfigurationDescription newDes, ICConfigurationDescription oldDes){
CExternalSetting[] newSettings = newDes != null ? (CExternalSetting[])newDes.getExternalSettings() : null;
CExternalSetting[] oldSettings = oldDes != null ? (CExternalSetting[])oldDes.getExternalSettings() : null;
@ -1955,11 +1853,13 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
if(!Arrays.equals(newCtIds, oldCtIds))
delta.addChangeFlags(ICDescriptionDelta.SOURCE_CONTENT_TYPE);
String[] newExts = newLs.getSourceExtensions();
String[] oldExts = oldLs.getSourceExtensions();
if(!Arrays.equals(newExts, oldExts))
delta.addChangeFlags(ICDescriptionDelta.SOURCE_EXTENSIONS);
// newCt = newLs.getHeaderContentType();
// oldCt = oldLs.getHeaderContentType();
@ -1975,8 +1875,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return delta.isEmpty() ? null : delta;
}
private boolean[] calculateSettingsChanges(ICLanguageSettingEntry newEntries[],
ICLanguageSettingEntry oldEntries[]) {
private boolean[] calculateSettingsChanges(ICLanguageSettingEntry newEntries[], ICLanguageSettingEntry oldEntries[]) {
boolean result[] = new boolean[3];
// if nothing was known before do not generate any deltas.
@ -2034,14 +1933,17 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return result;
}
/*
* public boolean entriesEqual(ICLanguageSettingEntry entries1[], ICLanguageSettingEntry
* entries2[]){ if(entries1.length != entries2.length) return false;
*
* for(int i = 0; i < entries1.length; i++){ if(!entries1[i].equals(entries2[i])) return false;
* }
*
* return true; }
/* public boolean entriesEqual(ICLanguageSettingEntry entries1[], ICLanguageSettingEntry entries2[]){
if(entries1.length != entries2.length)
return false;
for(int i = 0; i < entries1.length; i++){
if(!entries1[i].equals(entries2[i]))
return false;
}
return true;
}
*/
private CProjectDescriptionDelta createDelta(ICBuildSetting newBuildSetting, ICBuildSetting oldBuildSetting){
CProjectDescriptionDelta delta = new CProjectDescriptionDelta(newBuildSetting, oldBuildSetting);
@ -2098,8 +2000,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return EMPTY_CELEMENT_DELTA;
}
private List<CElementDelta> generateCElementDeltasFromCfgDelta(ICProject cProject, ICDescriptionDelta cfgDelta,
List<CElementDelta> list) {
private List<CElementDelta> generateCElementDeltasFromCfgDelta(ICProject cProject, ICDescriptionDelta cfgDelta, List<CElementDelta> list){
int kind = cfgDelta.getDeltaKind();
switch(kind){
case ICDescriptionDelta.CHANGED:
@ -2133,13 +2034,11 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
/**
* The method maps {@link ICDescriptionDelta} to {@link CElementDelta} which are added to the
* {@code list}. The delta will indicate modification of CElement for a given resource plus
* language settings if they changed (relative to parent resource description if the resource
* has no its own).
* The method maps {@link ICDescriptionDelta} to {@link CElementDelta} which are added to the {@code list}.
* The delta will indicate modification of CElement for a given resource plus language settings
* if they changed (relative to parent resource description if the resource has no its own).
*/
private void generateCElementDeltasFromResourceDelta(ICProject cProject, ICDescriptionDelta delta,
List<CElementDelta> list) {
private void generateCElementDeltasFromResourceDelta(ICProject cProject, ICDescriptionDelta delta, List<CElementDelta> list){
int kind = delta.getDeltaKind();
ICDescriptionDelta parentDelta = delta.getParent();
@ -2164,8 +2063,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
break;
default:
// Not possible
CCorePlugin.log(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID,
SettingsModelMessages.getString("CProjectDescriptionManager.illegalDeltaKind") + kind)); //$NON-NLS-1$
CCorePlugin.log(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, SettingsModelMessages.getString("CProjectDescriptionManager.illegalDeltaKind")+kind)); //$NON-NLS-1$
return;
}
path = path.makeRelative();
@ -2191,17 +2089,13 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
generateCElementDeltasFromLanguageDelta(el, ld, list);
} else {
if(newRcDes.getType() != ICSettingBase.SETTING_FOLDER){
CCorePlugin.log(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID,
SettingsModelMessages.getString("CProjectDescriptionManager.wrongTypeOfResourceDescription") //$NON-NLS-1$
+ newRcDes));
CCorePlugin.log(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, SettingsModelMessages.getString("CProjectDescriptionManager.wrongTypeOfResourceDescription")+newRcDes)); //$NON-NLS-1$
return;
}
ICFolderDescription newFoDes = (ICFolderDescription)newRcDes;
if(oldRcDes.getType() != ICSettingBase.SETTING_FOLDER){
CCorePlugin.log(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID,
SettingsModelMessages.getString("CProjectDescriptionManager.wrongTypeOfResourceDescription") //$NON-NLS-1$
+ oldRcDes));
CCorePlugin.log(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, SettingsModelMessages.getString("CProjectDescriptionManager.wrongTypeOfResourceDescription")+oldRcDes)); //$NON-NLS-1$
return;
}
ICFolderDescription oldFoDes = (ICFolderDescription)oldRcDes;
@ -2226,8 +2120,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return ((ICFolderDescription)rcDes).getLanguageSettingForFile(fileName);
}
private List<CElementDelta> generateCElementDeltasFromLanguageDelta(ICElement el, ICDescriptionDelta delta,
List<CElementDelta> list) {
private List<CElementDelta> generateCElementDeltasFromLanguageDelta(ICElement el, ICDescriptionDelta delta, List<CElementDelta> list){
if(delta == null)
return list;
@ -2352,8 +2245,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
@Override
public ICConfigurationDescription getPreferenceConfiguration(String buildSystemId, boolean write)
throws CoreException {
public ICConfigurationDescription getPreferenceConfiguration(String buildSystemId, boolean write) throws CoreException {
ICConfigurationDescription des = getLoaddedPreference(buildSystemId);
if(des == null){
try {
@ -2394,14 +2286,12 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
setLoaddedPreference(buildSystemId, cache);
}
private void savePreferenceConfiguration(String buildStystemId, CConfigurationDescriptionCache cache)
throws CoreException {
private void savePreferenceConfiguration(String buildStystemId, CConfigurationDescriptionCache cache) throws CoreException{
ICStorageElement el = cache.getSpecSettings().getRootStorageElement();
saveBuildSystemConfigPreferenceStorage(buildStystemId, el);
}
private void saveBuildSystemConfigPreferenceStorage(String buildSystemId, ICStorageElement el)
throws CoreException {
private void saveBuildSystemConfigPreferenceStorage(String buildSystemId, ICStorageElement el) throws CoreException{
ICStorageElement cur = getBuildSystemConfigPreferenceStorage(buildSystemId);
ICStorageElement parent = cur.getParent();
parent.removeChild(cur);
@ -2418,8 +2308,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return false;
}
private ICConfigurationDescription createWritablePreference(CConfigurationDescriptionCache cache)
throws CoreException {
private ICConfigurationDescription createWritablePreference(CConfigurationDescriptionCache cache) throws CoreException{
return new CConfigurationDescription(cache, fPrefUpdater);
}
@ -2437,8 +2326,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
rootParent.removeChild(rootEl);
ICStorageElement baseRootEl = settings.getRootStorageElement();
rootEl = rootParent.importChild(baseRootEl);
CConfigurationDescriptionCache cache = new CConfigurationDescriptionCache(des, baseData, baseCache,
cfgDes.getSpecSettings(), null, rootEl);
CConfigurationDescriptionCache cache = new CConfigurationDescriptionCache(des, baseData, baseCache, cfgDes.getSpecSettings(), null, rootEl);
SettingsContext context = new SettingsContext(null);
cache.applyData(context);
cache.doneInitialization();
@ -2450,8 +2338,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
ICStorageElement cfgEl = getBuildSystemConfigPreferenceStorage(buildSystemId, true, false);
String id = PREFERENCE_CFG_ID_PREFIX + buildSystemId;
CConfigurationDescription des = new CConfigurationDescription(id, PREFERENCE_CFG_NAME, buildSystemId, cfgEl,
fPrefUpdater);
CConfigurationDescription des = new CConfigurationDescription(id, PREFERENCE_CFG_NAME, buildSystemId, cfgEl, fPrefUpdater);
return createPreferenceCache(des);
}
@ -2476,8 +2363,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return getBuildSystemConfigPreferenceStorage(buildSystemId, true, false);
}
private ICStorageElement getBuildSystemConfigPreferenceStorage(String buildSystemId, boolean createIfNotDound,
boolean readOnly) throws CoreException {
private ICStorageElement getBuildSystemConfigPreferenceStorage(String buildSystemId, boolean createIfNotDound, boolean readOnly) throws CoreException{
ICStorageElement el = getPreferenceStorage(PREFERENCES_STORAGE, MODULE_ID, createIfNotDound, readOnly);
ICStorageElement cfgEl = null;
@ -2523,15 +2409,13 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return cache;
}
public ICStorageElement getPreferenceStorage(String prefKey, String storageId, boolean createIfNotDound,
boolean readOnly) throws CoreException {
public ICStorageElement getPreferenceStorage(String prefKey, String storageId, boolean createIfNotDound, boolean readOnly) throws CoreException{
XmlStorage store = getPreferenceStore(prefKey, createIfNotDound, readOnly);
return store.getStorage(storageId, createIfNotDound);
}
private XmlStorage getPreferenceStore(String prefKey, boolean createIfNotDound, boolean readOnly)
throws CoreException {
private XmlStorage getPreferenceStore(String prefKey, boolean createIfNotDound, boolean readOnly) throws CoreException{
ICStorageElement el = createPreferenceStorage(prefKey, createIfNotDound, readOnly);
XmlStorage store = new XmlStorage((InternalXmlStorageElement)el);
@ -2563,8 +2447,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return createDefaultConfigData(project, CDataUtil.genId(DEFAULT_CFG_ID_PREFIX), DEFAULT_CFG_NAME, factory);
}
public CConfigurationData createDefaultConfigData(IProject project, String id, String name, CDataFactory factory)
throws CoreException {
public CConfigurationData createDefaultConfigData(IProject project, String id, String name, CDataFactory factory) throws CoreException{
if(factory == null)
factory = new CDataFactory();
@ -2650,8 +2533,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
// return CDataUtil.getExtensionsFromContentTypes(project, typeIds);
// }
static ICLanguageSetting getLanguageSettingForFile(ICConfigurationDescription cfgDes, IPath path,
boolean ignoreExcludeStatus) {
static ICLanguageSetting getLanguageSettingForFile(ICConfigurationDescription cfgDes, IPath path, boolean ignoreExcludeStatus){
int segCount = path.segmentCount();
if(segCount == 0)
return null;
@ -2666,8 +2548,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return ((ICFileDescription)rcDes).getLanguageSetting();
}
static private HashMap<HashSet<String>, CLanguageData> createExtSetToLDataMap(IProject project,
CLanguageData[] lDatas) {
static private HashMap<HashSet<String>, CLanguageData> createExtSetToLDataMap(IProject project, CLanguageData[] lDatas){
HashMap<HashSet<String>, CLanguageData> map = new HashMap<HashSet<String>, CLanguageData>();
for (CLanguageData lData : lDatas) {
@ -2689,12 +2570,12 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
childRcData = (CResourceData)child.getValue();
if(childRcData.getType() == ICSettingBase.SETTING_FOLDER){
CResourceData parentRcData = null;
for (parent = child.getParentContainer(); (parentRcData = (CResourceData) parent.getValue())
.getType() != ICSettingBase.SETTING_FOLDER; parent = parent.getParentContainer()) {
for(parent = child.getParentContainer();
(parentRcData = (CResourceData)parent.getValue()).getType() != ICSettingBase.SETTING_FOLDER;
parent = parent.getParentContainer()) {
// no body, this loop is to find the parent
}
if (!settingsCustomized(project, (CFolderData) parentRcData, (CFolderData) childRcData,
parent.isRoot())) {
if(!settingsCustomized(project, (CFolderData)parentRcData, (CFolderData)childRcData, parent.isRoot())){
try {
data.removeResourceData(childRcData);
child.remove();
@ -2720,8 +2601,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return modified;
}
static private boolean settingsCustomized(IProject project, CFolderData parent, CFolderData child,
boolean isParentRoot) {
static private boolean settingsCustomized(IProject project, CFolderData parent, CFolderData child, boolean isParentRoot){
if(baseSettingsCustomized(parent, child))
return true;
@ -2799,6 +2679,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return false;
}
@Override
public ICProjectDescriptionWorkspacePreferences getProjectDescriptionWorkspacePreferences(
boolean write) {
@ -2879,8 +2760,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return new CProjectDescriptionWorkspacePreferences(el, null, true);
}
private ICStorageElement getCProjectDescriptionPreferencesElement(boolean createIfNotFound, boolean readOnly)
throws CoreException {
private ICStorageElement getCProjectDescriptionPreferencesElement(boolean createIfNotFound, boolean readOnly) throws CoreException{
ICStorageElement el = getPreferenceStorage(PREFERENCES_STORAGE, MODULE_ID, createIfNotFound, readOnly);
ICStorageElement[] children = el.getChildren();
for (ICStorageElement child : children) {

View file

@ -856,22 +856,5 @@
ordering="first">
</filterMatcher>
</extension>
<extension
point="org.eclipse.core.runtime.adapters">
<factory
adaptableType="org.eclipse.cdt.core.settings.model.ICConfigurationDescription"
class="org.eclipse.cdt.internal.core.settings.model.CConfigurationAdapterFactory">
<adapter
type="org.eclipse.core.resources.IBuildConfiguration">
</adapter>
</factory>
<factory
adaptableType="org.eclipse.core.resources.IBuildConfiguration"
class="org.eclipse.cdt.internal.core.settings.model.BuildConfigAdapterFactory">
<adapter
type="org.eclipse.cdt.core.settings.model.ICConfigurationDescription">
</adapter>
</factory>
</extension>
</plugin>

View file

@ -92,8 +92,8 @@ import org.osgi.framework.BundleContext;
import com.ibm.icu.text.MessageFormat;
/**
* CCorePlugin is the life-cycle owner of the core plug-in, and starting point for access to many
* core APIs.
* CCorePlugin is the life-cycle owner of the core plug-in, and starting point
* for access to many core APIs.
*
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
@ -103,7 +103,8 @@ public class CCorePlugin extends Plugin {
public static final int STATUS_CDTPROJECT_MISMATCH = 2;
public static final int CDT_PROJECT_NATURE_ID_MISMATCH = 3;
/**
* Status code for core exception that is thrown if a pdom grew larger than the supported limit.
* Status code for core exception that is thrown if a pdom grew larger than
* the supported limit.
*
* @since 5.2
*/
@ -275,7 +276,8 @@ public class CCorePlugin extends Plugin {
}
/**
* Returns the shared working copies currently registered for the default buffer factory.
* Returns the shared working copies currently registered for the default
* buffer factory.
*
* @since 5.1
*/
@ -380,21 +382,25 @@ public class CCorePlugin extends Plugin {
pdomManager = new PDOMManager();
final Job post2 = pdomManager.startup();
// bug 186755, when started after the platform has been started the job manager
// is no longer suspended. So we have to start a job at the very end to make
// sure we don't trigger a concurrent plug-in activation from within the job.
// bug 186755, when started after the platform has been started the job
// manager
// is no longer suspended. So we have to start a job at the very end to
// make
// sure we don't trigger a concurrent plug-in activation from within the
// job.
post1.schedule();
post2.schedule();
}
/**
* TODO: Add all options here Returns a table of all known configurable options with their
* default values. These options allow to configure the behavior of the underlying components.
* The client may safely use the result as a template that they can modify and then pass to
* TODO: Add all options here Returns a table of all known configurable
* options with their default values. These options allow to configure the
* behavior of the underlying components. The client may safely use the
* result as a template that they can modify and then pass to
* <code>setOptions</code>.
*
* Helper constants have been defined on CCorePlugin for each of the option ID and their
* possible constant values.
* Helper constants have been defined on CCorePlugin for each of the option
* ID and their possible constant values.
*
* Note: more options might be added in further releases.
*
@ -409,8 +415,9 @@ public class CCorePlugin extends Plugin {
* - default: <platform default>
* </pre>
*
* @return a mutable map containing the default settings of all known options (key type:
* <code>String</code>; value type: <code>String</code>)
* @return a mutable map containing the default settings of all known
* options (key type: <code>String</code>; value type:
* <code>String</code>)
* @see #setOptions
*/
public static HashMap<String, String> getDefaultOptions() {
@ -439,10 +446,11 @@ public class CCorePlugin extends Plugin {
/**
* Helper method for returning one option value only. Equivalent to
* <code>(String)CCorePlugin.getOptions().get(optionName)</code> Note that it may answer
* <code>null</code> if this option does not exist.
* <code>(String)CCorePlugin.getOptions().get(optionName)</code> Note that
* it may answer <code>null</code> if this option does not exist.
* <p>
* For a complete description of the configurable options, see <code>getDefaultOptions</code>.
* For a complete description of the configurable options, see
* <code>getDefaultOptions</code>.
* </p>
*
* @param optionName
@ -463,14 +471,16 @@ public class CCorePlugin extends Plugin {
}
/**
* Returns the table of the current options. Initially, all options have their default values,
* and this method returns a table that includes all known options.
* Returns the table of the current options. Initially, all options have
* their default values, and this method returns a table that includes all
* known options.
* <p>
* For a complete description of the configurable options, see <code>getDefaultOptions</code>.
* For a complete description of the configurable options, see
* <code>getDefaultOptions</code>.
* </p>
*
* @return table of current settings of all options (key type: <code>String</code>; value type:
* <code>String</code>)
* @return table of current settings of all options (key type:
* <code>String</code>; value type: <code>String</code>)
* @see CCorePlugin#getDefaultOptions
*/
public static HashMap<String, String> getOptions() {
@ -502,16 +512,18 @@ public class CCorePlugin extends Plugin {
}
/**
* Sets the current table of options. All and only the options explicitly included in the given
* table are remembered; all previous option settings are forgotten, including ones not
* explicitly mentioned.
* Sets the current table of options. All and only the options explicitly
* included in the given table are remembered; all previous option settings
* are forgotten, including ones not explicitly mentioned.
* <p>
* For a complete description of the configurable options, see <code>getDefaultOptions</code>.
* For a complete description of the configurable options, see
* <code>getDefaultOptions</code>.
* </p>
*
* @param newOptions
* the new options (key type: <code>String</code>; value type: <code>String</code>),
* or <code>null</code> to reset all options to their default values
* the new options (key type: <code>String</code>; value type:
* <code>String</code>), or <code>null</code> to reset all
* options to their default values
* @see CCorePlugin#getDefaultOptions
*/
public static void setOptions(HashMap<String, String> newOptions) {
@ -538,22 +550,24 @@ public class CCorePlugin extends Plugin {
/**
* Create CDT console adapter for build console defined as an extension. See
* {@code org.eclipse.cdt.core.CBuildConsole} extension point. If the console class is instance
* of {@link ICConsole} it is initialized with context id, name and icon to be shown in the list
* of consoles in the Console view.
* {@code org.eclipse.cdt.core.CBuildConsole} extension point. If the
* console class is instance of {@link ICConsole} it is initialized with
* context id, name and icon to be shown in the list of consoles in the
* Console view.
*
* @param extConsoleId
* - console id defined in the extension point.
* @param contextId
* - context menu id in the Console view. A caller needs to define a distinct one for
* own use.
* - context menu id in the Console view. A caller needs to
* define a distinct one for own use.
* @param name
* - name of console to appear in the list of consoles in context menu in the Console
* view.
* - name of console to appear in the list of consoles in context
* menu in the Console view.
* @param iconUrl
* - a {@link URL} of the icon for the context menu of the Console view. The url is
* expected to point to an image in eclipse OSGi bundle. Here is an example how to
* retrieve URL: <br/>
* - a {@link URL} of the icon for the context menu of the
* Console view. The url is expected to point to an image in
* eclipse OSGi bundle. Here is an example how to retrieve URL:
* <br/>
* <code>
* URL iconUrl = CUIPlugin.getDefault().getBundle().getEntry("icons/obj16/flask.png");
* </code>
@ -590,11 +604,13 @@ public class CCorePlugin extends Plugin {
}
/**
* Create CDT console adapter. The adapter serves as a bridge between core plugin and UI console
* API in a way that a user can create a UI console from plugins having no dependencies to UI.
* Create CDT console adapter. The adapter serves as a bridge between core
* plugin and UI console API in a way that a user can create a UI console
* from plugins having no dependencies to UI.
*
* @param id
* - id of the console specified in extension point to instantiate console adapter.
* - id of the console specified in extension point to
* instantiate console adapter.
* @return CDT console adapter.
*/
public IConsole getConsole(String id) {
@ -603,23 +619,25 @@ public class CCorePlugin extends Plugin {
/**
* Create CDT console adapter for build console. A new instance of class
* {@code org.eclipse.cdt.internal.ui.buildconsole.CBuildConsole} is created and initialized
* with the parameters.
* {@code org.eclipse.cdt.internal.ui.buildconsole.CBuildConsole} is created
* and initialized with the parameters.
*
* @param contextId
* - context menu id in the Console view. A caller needs to define a distinct one for
* own use.
* - context menu id in the Console view. A caller needs to
* define a distinct one for own use.
* @param name
* - name of console to appear in the list of consoles in context menu in the Console
* view.
* - name of console to appear in the list of consoles in context
* menu in the Console view.
* @param iconUrl
* - a {@link URL} of the icon for the context menu of the Console view. The url is
* expected to point to an image in eclipse OSGi bundle. Here is an example how to
* retrieve URL: <br/>
* - a {@link URL} of the icon for the context menu of the
* Console view. The url is expected to point to an image in
* eclipse OSGi bundle. Here is an example how to retrieve URL:
* <br/>
* <code>
* URL iconUrl = CUIPlugin.getDefault().getBundle().getResource("icons/obj16/flask.png");
* </code> <br/>
* {@code iconUrl} can be <b>null</b>, in that case the default image is used. See
* {@code iconUrl} can be <b>null</b>, in that case the default
* image is used. See
* {@code org.eclipse.cdt.internal.ui.buildconsole.BuildConsole(IBuildConsoleManager, String, String, URL)}
*
* @return CDT console adapter.
@ -639,7 +657,8 @@ public class CCorePlugin extends Plugin {
}
/**
* @deprecated Use {@link #getDefaultBinaryParserExtensions(IProject)} instead.
* @deprecated Use {@link #getDefaultBinaryParserExtensions(IProject)}
* instead.
*/
@Deprecated
public ICExtensionReference[] getBinaryParserExtensions(IProject project) throws CoreException {
@ -660,7 +679,8 @@ public class CCorePlugin extends Plugin {
}
/**
* Returns the binary parser extensions for the default settings configuration.
* Returns the binary parser extensions for the default settings
* configuration.
*
* @since 5.2
*/
@ -774,14 +794,14 @@ public class CCorePlugin extends Plugin {
* Please use {@link #getProjectDescription(IProject, boolean)} to fetch the
* ICProjectDescription for the project. And use
* {@link ICProjectDescription#getConfigurations()} to get an array of
* ICConfigurationDescriptions, which have similar API to ICDescriptor, allowing you to store
* settings and configure extensions at the Configuration level rather than at the project
* level.
* ICConfigurationDescriptions, which have similar API to ICDescriptor,
* allowing you to store settings and configure extensions at the
* Configuration level rather than at the project level.
*
* @param project
* @param create
* @return ICDescriptor or <b>null</b> if <b>create</b> is <b>false</b> and no .cdtproject file
* exists on disk.
* @return ICDescriptor or <b>null</b> if <b>create</b> is <b>false</b> and
* no .cdtproject file exists on disk.
* @throws CoreException
* @deprecated
*/
@ -803,13 +823,15 @@ public class CCorePlugin extends Plugin {
}
/**
* @deprecated Settings should be set per ICConfigurationDescription rather than global to the
* project. Please use {@link #getProjectDescription(IProject, boolean)} to fetch
* @deprecated Settings should be set per ICConfigurationDescription rather
* than global to the project. Please use
* {@link #getProjectDescription(IProject, boolean)} to fetch
* the ICProjectDescription for the project. And use
* {@link ICProjectDescription#getConfigurations()} to get an array of
* ICConfigurationDescriptions, which have similar API to ICDescriptor, allowing you
* to store settings and configure extensions at the Configuration level rather than
* at the project level.
* {@link ICProjectDescription#getConfigurations()} to get an
* array of ICConfigurationDescriptions, which have similar API
* to ICDescriptor, allowing you to store settings and configure
* extensions at the Configuration level rather than at the
* project level.
*/
@Deprecated
public ICDescriptorManager getCDescriptorManager() {
@ -932,8 +954,9 @@ public class CCorePlugin extends Plugin {
}
/**
* Method convertProjectFromCtoCC converts a C Project to a C++ Project The newProject MUST, not
* be null, already have a C Nature && must NOT already have a C++ Nature
* Method convertProjectFromCtoCC converts a C Project to a C++ Project The
* newProject MUST, not be null, already have a C Nature && must NOT already
* have a C++ Nature
*
* @param projectHandle
* @param monitor
@ -949,8 +972,9 @@ public class CCorePlugin extends Plugin {
}
/**
* Method to convert a project to a C nature All checks should have been done externally (as in
* the Conversion Wizards). This method blindly does the conversion.
* Method to convert a project to a C nature All checks should have been
* done externally (as in the Conversion Wizards). This method blindly does
* the conversion.
*/
public void convertProjectToC(IProject projectHandle, IProgressMonitor monitor, String projectID)
throws CoreException {
@ -1033,7 +1057,8 @@ public class CCorePlugin extends Plugin {
}
/**
* @deprecated since CDT 6.1. Use {@link ErrorParserManager#getErrorParserAvailableIds()}
* @deprecated since CDT 6.1. Use
* {@link ErrorParserManager#getErrorParserAvailableIds()}
* instead
* @return array of error parsers ids
*/
@ -1045,7 +1070,8 @@ public class CCorePlugin extends Plugin {
}
/**
* @deprecated since CDT 6.1. Use {@link ErrorParserManager#getErrorParserCopy(String)} instead
* @deprecated since CDT 6.1. Use
* {@link ErrorParserManager#getErrorParserCopy(String)} instead
* @param id
* - id of error parser
* @return array of error parsers
@ -1097,8 +1123,9 @@ public class CCorePlugin extends Plugin {
}
/**
* Clears cached scanner info provider for the given project so that the next call to
* {@link #getScannerInfoProvider(IProject)} would return an up to date scanner info provider.
* Clears cached scanner info provider for the given project so that the
* next call to {@link #getScannerInfoProvider(IProject)} would return an up
* to date scanner info provider.
*
* @noreference This method is not intended to be referenced by clients.
*/
@ -1114,8 +1141,8 @@ public class CCorePlugin extends Plugin {
}
/**
* Find {@link IScannerInfoProvider} registered as extension via extension point
* org.eclipse.cdt.core.ScannerInfoProvider2.
* Find {@link IScannerInfoProvider} registered as extension via extension
* point org.eclipse.cdt.core.ScannerInfoProvider2.
*/
private IScannerInfoProvider getExtensionScannerInfoProvider2(IProject project) throws CoreException {
IScannerInfoProvider provider = null;
@ -1155,11 +1182,13 @@ public class CCorePlugin extends Plugin {
}
/**
* Returns the content type for a filename. The method respects project specific content type
* definitions. The lookup prefers case- sensitive matches over the others.
* Returns the content type for a filename. The method respects project
* specific content type definitions. The lookup prefers case- sensitive
* matches over the others.
*
* @param project
* a project with possible project specific settings. Can be <code>null</code>
* a project with possible project specific settings. Can be
* <code>null</code>
* @param filename
* a filename to compute the content type for
* @return the content type found or <code>null</code>
@ -1189,7 +1218,8 @@ public class CCorePlugin extends Plugin {
private static final String DELTA = CCorePlugin.PLUGIN_ID + "/debug/deltaprocessor"; //$NON-NLS-1$
/**
* Configure the plug-in with respect to option settings defined in ".options" file
* Configure the plug-in with respect to option settings defined in
* ".options" file
*/
public void configurePluginDebugOptions() {
if (CCorePlugin.getDefault().isDebugging()) {
@ -1227,7 +1257,8 @@ public class CCorePlugin extends Plugin {
}
/**
* @deprecated use {@link ITranslationUnit} or {@link ILanguage} to construct ASTs, instead.
* @deprecated use {@link ITranslationUnit} or {@link ILanguage} to
* construct ASTs, instead.
*/
@Deprecated
public org.eclipse.cdt.core.dom.CDOM getDOM() {
@ -1257,7 +1288,8 @@ public class CCorePlugin extends Plugin {
}
/**
* Equivalent to <code>createProjectDescription(IProject, boolean, false)</code>.
* Equivalent to
* <code>createProjectDescription(IProject, boolean, false)</code>.
*
* @see #createProjectDescription(IProject, boolean, boolean)
*/
@ -1272,19 +1304,23 @@ public class CCorePlugin extends Plugin {
* @param project
* project for which the project description is requested
* @param loadIfExists
* if true the method first tries to load and return the project description from the
* settings file (.cproject), if false, the stored settings are ignored and the new
* (empty) project description is created
* if true the method first tries to load and return the project
* description from the settings file (.cproject), if false, the
* stored settings are ignored and the new (empty) project
* description is created
* @param creating
* if true the created project description will be contain the true
* "isCdtProjectCreating" state. <br>
* NOTE: in case the project already contains the project description AND its
* "isCdtProjectCreating" is false the resulting description will be created with the
* false "isCdtProjectCreating" state.
* if true the created project description will be contain the
* true "isCdtProjectCreating" state. <br>
* NOTE: in case the project already contains the project
* description AND its "isCdtProjectCreating" is false the
* resulting description will be created with the false
* "isCdtProjectCreating" state.
*
* <br>
* NOTE: changes made to the returned project description will not be applied until
* the {@link #setProjectDescription(IProject, ICProjectDescription)} is called.
* NOTE: changes made to the returned project description will
* not be applied until the
* {@link #setProjectDescription(IProject, ICProjectDescription)}
* is called.
* @return {@link ICProjectDescription}
* @throws CoreException
*/
@ -1294,17 +1330,20 @@ public class CCorePlugin extends Plugin {
}
/**
* Returns the project description associated with this project or null if the project does not
* contain the CDT data associated with it.
* Returns the project description associated with this project or null if
* the project does not contain the CDT data associated with it.
*
* This is a convenience method fully equivalent to getProjectDescription(project, true) see
* This is a convenience method fully equivalent to
* getProjectDescription(project, true) see
* {@link #getProjectDescription(IProject, boolean)} for more detail.
*
* @param project
* @return a writable copy of the ICProjectDescription or null if the project does not contain
* the CDT data associated with it. <br>
* Note: changes to the project description will not be reflected/used by the core until
* the {@link #setProjectDescription(IProject, ICProjectDescription)} is called.
* @return a writable copy of the ICProjectDescription or null if the
* project does not contain the CDT data associated with it. <br>
* Note: changes to the project description will not be
* reflected/used by the core until the
* {@link #setProjectDescription(IProject, ICProjectDescription)} is
* called.
*
* @see #getProjectDescription(IProject, boolean)
*/
@ -1313,8 +1352,8 @@ public class CCorePlugin extends Plugin {
}
/**
* Called to save/apply the project description. The method should be called to apply changes
* made to the project description returned by the
* Called to save/apply the project description. The method should be called
* to apply changes made to the project description returned by the
* {@link #getProjectDescription(IProject, boolean)} or
* {@link #createProjectDescription(IProject, boolean)}
*
@ -1335,37 +1374,40 @@ public class CCorePlugin extends Plugin {
}
/**
* Returns the project description associated with this project or null if the project does not
* contain the CDT data associated with it.
* Returns the project description associated with this project or null if
* the project does not contain the CDT data associated with it.
*
* @param project
* project for which the description is requested
* @param write
* if true, the writable description copy is returned. If false the cached read-only
* description is returned.
* if true, the writable description copy is returned. If false
* the cached read-only description is returned.
*
* <br>
* CDT core maintains the cached project description settings. If only read access is
* needed to description, then the read-only project description should be obtained.
* This description always operates with cached data and thus it is better to use it
* for performance reasons. All set* calls to the read-only description result in the
* {@link WriteAccessException}.
* CDT core maintains the cached project description settings. If
* only read access is needed to description, then the read-only
* project description should be obtained. This description
* always operates with cached data and thus it is better to use
* it for performance reasons. All set* calls to the read-only
* description result in the {@link WriteAccessException}.
*
* When the writable description is requested, the description copy is created.
* Changes to this description will not be reflected/used by the core and the Build
* System until the {@link #setProjectDescription(IProject, ICProjectDescription)} is
* called.
* When the writable description is requested, the description
* copy is created. Changes to this description will not be
* reflected/used by the core and the Build System until the
* {@link #setProjectDescription(IProject, ICProjectDescription)}
* is called.
*
* Each getProjectDescription(project, true) returns a new copy of the project
* description.
* Each getProjectDescription(project, true) returns a new copy
* of the project description.
*
* The writable description uses the cached data until the first set call after that
* the description communicates directly to the Build System i.e. the implementer of
* the org.eclipse.cdt.core.CConfigurationDataProvider extension This ensures the
* Core<->Build System settings integrity.
* The writable description uses the cached data until the first
* set call after that the description communicates directly to
* the Build System i.e. the implementer of the
* org.eclipse.cdt.core.CConfigurationDataProvider extension This
* ensures the Core<->Build System settings integrity.
*
* @return {@link ICProjectDescription} or null if the project does not contain the CDT data
* associated with it.
* @return {@link ICProjectDescription} or null if the project does not
* contain the CDT data associated with it.
*/
public ICProjectDescription getProjectDescription(IProject project, boolean write) {
return fNewCProjectDescriptionManager.getProjectDescription(project, write);
@ -1375,7 +1417,8 @@ public class CCorePlugin extends Plugin {
* Forces the cached data of the specified projects to be re-calculated.
*
* @param projects
* if <code>null</code>, all projects within the workspace are updated
* if <code>null</code>, all projects within the workspace are
* updated
* @param monitor
* @throws CoreException
*/
@ -1414,7 +1457,8 @@ public class CCorePlugin extends Plugin {
// NON-API
/**
* @noreference This constructor is not intended to be referenced by clients.
* @noreference This constructor is not intended to be referenced by
* clients.
*/
public CCorePlugin() {
super();
@ -1432,8 +1476,9 @@ public class CCorePlugin extends Plugin {
* Prints a message in the log
*
* @param severity
* - desired severity of the message in the log, one of {@link IStatus#INFO},
* {@link IStatus#WARNING} or {@link IStatus#ERROR}
* - desired severity of the message in the log, one of
* {@link IStatus#INFO}, {@link IStatus#WARNING} or
* {@link IStatus#ERROR}
* @param msg
* - message
*
@ -1448,8 +1493,9 @@ public class CCorePlugin extends Plugin {
* Prints a message in the log accompanied by stack trace
*
* @param severity
* - desired severity of the message in the log, one of {@link IStatus#INFO},
* {@link IStatus#WARNING} or {@link IStatus#ERROR}
* - desired severity of the message in the log, one of
* {@link IStatus#INFO}, {@link IStatus#WARNING} or
* {@link IStatus#ERROR}
* @param msg
* - message
*
@ -1515,8 +1561,9 @@ public class CCorePlugin extends Plugin {
}
/**
* Returns the preference controlling whether source roots are shown at the top of projects or
* embedded within the resource tree of projects when they are not top level folders.
* Returns the preference controlling whether source roots are shown at the
* top of projects or embedded within the resource tree of projects when
* they are not top level folders.
*
* @return boolean preference value
* @since 5.2

View file

@ -79,4 +79,287 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
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.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
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_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
org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=110
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

View file

@ -1,4 +1,5 @@
eclipse.preferences.version=1
formatter_profile=_CDT
formatter_settings_version=12
org.eclipse.jdt.ui.ignorelowercasenames=true
org.eclipse.jdt.ui.importorder=java;javax;org;com;org.eclipse.cdt;org.eclipse.cdt.internal;org.eclipse.cdt.internal.ui;

View file

@ -21,12 +21,10 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@ -71,7 +69,8 @@ import org.eclipse.cdt.internal.ui.newui.Messages;
import org.eclipse.cdt.internal.ui.newui.StatusMessageLine;
/**
* This tab presents language settings entries categorized by language settings providers.
* This tab presents language settings entries categorized by language
* settings providers.
*
* @noinstantiate This class is not intended to be instantiated by clients.
* @noextend This class is not intended to be subclassed by clients.
@ -134,23 +133,17 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
if (entriesParent != null) {
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_PARENT;
}
} else if (provider instanceof ILanguageSettingsBroadcastingProvider
&& (page.isForFile() || page.isForFolder())) {
} else if (provider instanceof ILanguageSettingsBroadcastingProvider && (page.isForFile() || page.isForFolder())) {
// Assuming that the default entries for a resource are always null.
// Using that for performance reasons. See note in performDefaults().
List<ICLanguageSettingEntry> entriesParent = provider
.getSettingEntries((ICConfigurationDescription) null, null, currentLanguageId);
if (entriesParent == null) {
entriesParent = provider.getSettingEntries((IBuildConfiguration) null, null, currentLanguageId);
}
List<ICLanguageSettingEntry> entriesParent = provider.getSettingEntries(null, null, currentLanguageId);
if (entries != null && !entries.equals(entriesParent)) {
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_SETTING;
}
}
ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> initialProviders = initialProvidersMap
.get(cfgDescription.getId());
List<ILanguageSettingsProvider> initialProviders = initialProvidersMap.get(cfgDescription.getId());
if (initialProviders != null && !initialProviders.contains(provider)) {
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_EDITED;
}
@ -309,28 +302,19 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
*/
private List<ICLanguageSettingEntry> getSettingEntriesUpResourceTree(ILanguageSettingsProvider provider) {
ICConfigurationDescription cfgDescription = getConfigurationDescription();
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
IResource rc = getResource();
List<ICLanguageSettingEntry> entries = LanguageSettingsManager
.getSettingEntriesUpResourceTree(provider, config, rc, currentLanguageId);
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, cfgDescription, rc, currentLanguageId);
return entries;
}
/**
* Shortcut for getting setting entries for current context without checking the parent
* resource.
*
* Shortcut for getting setting entries for current context without checking the parent resource.
* @return list of setting entries for the current context.
*/
private List<ICLanguageSettingEntry> getSettingEntries(ILanguageSettingsProvider provider) {
IResource rc = getResource();
ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(cfgDescription, rc, currentLanguageId);
if (entries == null) {
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
entries = provider.getSettingEntries(config, rc, currentLanguageId);
}
return entries;
IResource rc = getResource();
return provider.getSettingEntries(cfgDescription, rc, currentLanguageId);
}
/**
@ -342,8 +326,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
String cfgId = cfgDescription.getId();
List<ILanguageSettingsProvider> initialProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> initialProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
initialProvidersMap.put(cfgId, initialProviders);
}
}
@ -460,8 +443,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
* Create check-box to control whether to show built-in entries or not.
*/
private void createBuiltInsCheckBox() {
builtInCheckBox = setupCheck(usercomp, Messages.AbstractLangsListTab_ShowBuiltin, 1,
GridData.FILL_HORIZONTAL);
builtInCheckBox = setupCheck(usercomp, Messages.AbstractLangsListTab_ShowBuiltin, 1, GridData.FILL_HORIZONTAL);
builtInCheckBox.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
@ -612,14 +594,12 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
boolean isAllowedEditing = provider instanceof ILanguageSettingsEditableProvider
&& LanguageSettingsProviderAssociationManager.isAllowedToEditEntries(provider);
if (provider != null && !isAllowedEditing) {
status = new Status(IStatus.INFO, CUIPlugin.PLUGIN_ID,
Messages.LanguageSettingsEntriesTab_Entries_Not_Editable);
status = new Status(IStatus.INFO, CUIPlugin.PLUGIN_ID, Messages.LanguageSettingsEntriesTab_Entries_Not_Editable);
}
}
if (status == null || status == Status.OK_STATUS) {
if (treeLanguages.getItemCount() <= 0) {
status = new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID,
Messages.LanguageSettingsEntriesTab_Cannot_Determine_Languages);
status = new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, Messages.LanguageSettingsEntriesTab_Cannot_Determine_Languages);
}
}
fStatusLine.setErrorStatus(status);
@ -658,9 +638,9 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
}
/**
* That method returns exact position of an element in the list. Note that
* {@link List#indexOf(Object)} returns position of the first element equals to the given one,
* not exact element.
* That method returns exact position of an element in the list.
* Note that {@link List#indexOf(Object)} returns position of the first element
* equals to the given one, not exact element.
*
* @param entries
* @param entry
@ -757,34 +737,27 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
private void saveEntries(ILanguageSettingsProvider provider, List<ICLanguageSettingEntry> entries) {
if (provider instanceof ILanguageSettingsEditableProvider) {
ICConfigurationDescription cfgDescription = getConfigurationDescription();
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
IResource rc = getResource();
if (entries != null && rc != null) {
IContainer parent = rc instanceof IProject ? null : rc.getParent();
List<ICLanguageSettingEntry> parentEntries = LanguageSettingsManager
.getSettingEntriesUpResourceTree(provider, config, parent, currentLanguageId);
List<ICLanguageSettingEntry> parentEntries = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, cfgDescription, parent, currentLanguageId);
if (entries.equals(parentEntries)) {
// to use parent entries instead
entries = null;
}
}
((ILanguageSettingsEditableProvider) provider).setSettingEntries(config, rc, currentLanguageId,
entries);
((ILanguageSettingsEditableProvider)provider).setSettingEntries(cfgDescription, rc, currentLanguageId, entries);
}
}
/**
* Get list of setting entries shown to user. If current resource has no entries assigned the
* parent resource is inspected.
* Get list of setting entries shown to user. If current resource has no entries assigned the parent
* resource is inspected.
*/
private List<ICLanguageSettingEntry> getEntriesShownToUser(ILanguageSettingsProvider provider) {
IResource rc = getResource();
ICConfigurationDescription cfgDescription = getConfigurationDescription();
IResource rc = getResource();
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(cfgDescription, rc, currentLanguageId);
if (entries == null) {
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
entries = provider.getSettingEntries(config, rc, currentLanguageId);
}
if (entries == null) {
entries = getSettingEntriesUpResourceTree(provider);
}
@ -799,8 +772,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
if (selectedProvider instanceof ILanguageSettingsEditableProvider) {
ICConfigurationDescription cfgDescription = getConfigurationDescription();
ICLanguageSettingEntry selectedEntry = getSelectedEntry();
LanguageSettingEntryDialog addDialog = new LanguageSettingEntryDialog(usercomp.getShell(),
cfgDescription, selectedEntry, true);
LanguageSettingEntryDialog addDialog = new LanguageSettingEntryDialog(usercomp.getShell(), cfgDescription, selectedEntry, true);
if (addDialog.open()) {
ICLanguageSettingEntry settingEntry = addDialog.getEntries()[0];
if (settingEntry != null) {
@ -812,22 +784,20 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
}
/**
* Return working copy of the provider to edit in current session. If the supplied provider is
* already the working copy return it. If not, create a copy to be edited.
* Return working copy of the provider to edit in current session. If the supplied provider is already
* the working copy return it. If not, create a copy to be edited.
*/
private ILanguageSettingsEditableProvider getWorkingCopy(ILanguageSettingsEditableProvider provider) {
ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> initialProviders = initialProvidersMap.get(cfgDescription.getId());
if (initialProviders.contains(provider)) {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(
((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
int pos = providers.indexOf(provider);
if (pos >= 0) {
try {
provider = provider.clone();
providers.set(pos, provider);
((ILanguageSettingsProvidersKeeper) cfgDescription)
.setLanguageSettingProviders(providers);
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
} catch (CloneNotSupportedException e) {
CUIPlugin.log("Internal Error: cannot clone provider "+provider.getId(), e); //$NON-NLS-1$
}
@ -841,12 +811,10 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
/**
* Call dialog to edit settings entry.
*/
private void performEdit(ILanguageSettingsProvider selectedProvider,
ICLanguageSettingEntry selectedEntry) {
private void performEdit(ILanguageSettingsProvider selectedProvider, ICLanguageSettingEntry selectedEntry) {
if (selectedProvider instanceof ILanguageSettingsEditableProvider && selectedEntry != null) {
ICConfigurationDescription cfgDecsription = getConfigurationDescription();
LanguageSettingEntryDialog editDialog = new LanguageSettingEntryDialog(usercomp.getShell(),
cfgDecsription, selectedEntry);
LanguageSettingEntryDialog editDialog = new LanguageSettingEntryDialog(usercomp.getShell(), cfgDecsription, selectedEntry);
if (editDialog.open()) {
ICLanguageSettingEntry newEntry = editDialog.getEntries()[0];
if (newEntry != null) {
@ -882,8 +850,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
/**
* Replace provider's entry and update UI.
*/
private void replaceEntry(ILanguageSettingsProvider provider, ICLanguageSettingEntry oldEntry,
ICLanguageSettingEntry newEntry) {
private void replaceEntry(ILanguageSettingsProvider provider, ICLanguageSettingEntry oldEntry, ICLanguageSettingEntry newEntry) {
if (provider != null && oldEntry != null && newEntry != null) {
String providerId = provider.getId();
@ -911,8 +878,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
/**
* Clear provider's entries for the given resource or remove one entry depending on selection.
*/
private void performDelete(ILanguageSettingsProvider selectedProvider,
ICLanguageSettingEntry selectedEntry) {
private void performDelete(ILanguageSettingsProvider selectedProvider, ICLanguageSettingEntry selectedEntry) {
if (selectedProvider instanceof ILanguageSettingsEditableProvider) {
selectedProvider = getWorkingCopy((ILanguageSettingsEditableProvider)selectedProvider);
if (selectedEntry != null) {
@ -926,8 +892,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
/**
* Change "Export" flag of provider's entry and update UI.
*/
private void exportEntry(ILanguageSettingsProvider provider, ICLanguageSettingEntry entry,
boolean isExport) {
private void exportEntry(ILanguageSettingsProvider provider, ICLanguageSettingEntry entry, boolean isExport) {
if (provider instanceof ILanguageSettingsEditableProvider && entry != null) {
int flags = entry.getFlags();
if (isExport) {
@ -971,8 +936,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
/**
* Export or un-export provider's entry or entries.
*/
private void performExport(ILanguageSettingsProvider selectedProvider,
ICLanguageSettingEntry selectedEntry) {
private void performExport(ILanguageSettingsProvider selectedProvider, ICLanguageSettingEntry selectedEntry) {
if (selectedProvider instanceof ILanguageSettingsEditableProvider) {
boolean isExport = isExportMode(selectedProvider, selectedEntry);
if (selectedEntry != null) {
@ -1003,8 +967,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
/**
* Move provider's entry up.
*/
private void performMoveUp(ILanguageSettingsProvider selectedProvider,
ICLanguageSettingEntry selectedEntry) {
private void performMoveUp(ILanguageSettingsProvider selectedProvider, ICLanguageSettingEntry selectedEntry) {
if (selectedEntry != null && (selectedProvider instanceof ILanguageSettingsEditableProvider)) {
selectedProvider = getWorkingCopy((ILanguageSettingsEditableProvider)selectedProvider);
moveEntry(selectedProvider, selectedEntry, true);
@ -1014,8 +977,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
/**
* Move provider's entry down.
*/
private void performMoveDown(ILanguageSettingsProvider selectedProvider,
ICLanguageSettingEntry selectedEntry) {
private void performMoveDown(ILanguageSettingsProvider selectedProvider, ICLanguageSettingEntry selectedEntry) {
if (selectedEntry != null && (selectedProvider instanceof ILanguageSettingsEditableProvider)) {
selectedProvider = getWorkingCopy((ILanguageSettingsEditableProvider)selectedProvider);
moveEntry(selectedProvider, selectedEntry, false);
@ -1030,14 +992,12 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
IResource rc = getResource();
ICConfigurationDescription cfgDescription = getConfigurationDescription();
if (rc != null && cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> cfgProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> cfgProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
for (ILanguageSettingsProvider cfgProvider : cfgProviders) {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(cfgProvider);
if (rawProvider instanceof LanguageSettingsBaseProvider) {
// filter out providers incapable of providing entries for this language
List<String> languageIds = ((LanguageSettingsBaseProvider) rawProvider)
.getLanguageScope();
List<String> languageIds = ((LanguageSettingsBaseProvider)rawProvider).getLanguageScope();
if (languageIds != null && !languageIds.contains(currentLanguageId)) {
continue;
}
@ -1051,11 +1011,9 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
/**
* Re-reads and refreshes the entries tree.
*
* @param selectedProviderId
* - provider of the entry to select after update. If the entry is {@code null} the
* provider itself will be selected.
* @param selectedEntry
* - entry to select in the tree after update.
* @param selectedProviderId - provider of the entry to select after update.
* If the entry is {@code null} the provider itself will be selected.
* @param selectedEntry - entry to select in the tree after update.
*/
private void updateTreeForEntries(String selectedProviderId, ICLanguageSettingEntry selectedEntry) {
Object[] expandedElements = treeEntriesViewer.getExpandedElements();
@ -1073,8 +1031,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
if (provider.getId().equals(selectedProviderId)) {
for (int i = 0; i < expandedElements.length; i++) {
if (expandedElements[i] instanceof ILanguageSettingsProvider) {
if (((ILanguageSettingsProvider) expandedElements[i]).getId()
.equals(selectedProviderId)) {
if (((ILanguageSettingsProvider) expandedElements[i]).getId().equals(selectedProviderId)) {
expandedElements[i] = provider;
break;
}
@ -1105,8 +1062,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
// remove null language when some real ones are defined
languageIds.remove(null);
} else if (languageIds.isEmpty()) {
// if no languages are defined keep null language as "Unspecified
// language"
// if no languages are defined keep null language as "Unspecified language"
languageIds.add(null);
}
@ -1116,8 +1072,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
for (String langId : languageIds) {
ILanguage language = LanguageManager.getInstance().getLanguage(langId);
String langName = language != null ? language.getName()
: Messages.LanguageSettingsEntriesTab_UnspecifiedLanguage;
String langName = language != null ? language.getName() : Messages.LanguageSettingsEntriesTab_UnspecifiedLanguage;
if (langName == null || langName.length() == 0)
continue;
List<String> langIds = map.get(langName);
@ -1215,33 +1170,26 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
return;
}
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
boolean changed = false;
IResource rc = getResource();
List<ILanguageSettingsProvider> oldProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>(
oldProviders.size());
List<ILanguageSettingsProvider> oldProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>(oldProviders.size());
// clear entries for a given resource for all languages where
// applicable
// clear entries for a given resource for all languages where applicable
providers: for (ILanguageSettingsProvider provider : oldProviders) {
ILanguageSettingsEditableProvider providerCopy = null;
if (provider instanceof ILanguageSettingsEditableProvider) {
for (TreeItem langItems : treeLanguages.getItems()) {
String langId = (String)langItems.getData();
if (provider.getSettingEntries(cfgDescription, rc, langId) != null
|| provider.getSettingEntries(config, rc, langId) != null) {
if (provider.getSettingEntries(cfgDescription, rc, langId) != null) {
if (providerCopy == null) {
// copy providers to be able to "Cancel" in UI
providerCopy = LanguageSettingsManager
.getProviderCopy((ILanguageSettingsEditableProvider) provider, true);
providerCopy = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) provider, true);
if (providerCopy == null) {
continue providers;
}
}
providerCopy.setSettingEntries(config, rc, langId, null);
providerCopy.setSettingEntries(cfgDescription, rc, langId, null);
changed = true;
}
}
@ -1260,15 +1208,12 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
}
@Override
protected void performApply(ICResourceDescription srcRcDescription,
ICResourceDescription destRcDescription) {
protected void performApply(ICResourceDescription srcRcDescription, ICResourceDescription destRcDescription) {
if (!page.isForPrefs()) {
ICConfigurationDescription sd = srcRcDescription.getConfiguration();
ICConfigurationDescription dd = destRcDescription.getConfiguration();
if (sd instanceof ILanguageSettingsProvidersKeeper
&& dd instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> newProviders = ((ILanguageSettingsProvidersKeeper) sd)
.getLanguageSettingProviders();
if (sd instanceof ILanguageSettingsProvidersKeeper && dd instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> newProviders = ((ILanguageSettingsProvidersKeeper) sd).getLanguageSettingProviders();
((ILanguageSettingsProvidersKeeper) dd).setLanguageSettingProviders(newProviders);
}
}
@ -1300,8 +1245,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
IResource rc = getResource();
if (rc instanceof IFile) {
try {
ILanguage language = LanguageManager.getInstance().getLanguageForFile((IFile) rc,
null);
ILanguage language = LanguageManager.getInstance().getLanguageForFile((IFile)rc, null);
return language != null;
} catch (CoreException e) {
// who cares, not even logging

View file

@ -12,12 +12,10 @@ package org.eclipse.cdt.internal.ui.viewsupport;
import java.util.List;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.jface.viewers.IDecoration;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ILightweightLabelDecorator;
@ -36,18 +34,15 @@ import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.internal.ui.CPluginImages;
/**
* Determines if a file or folder got customized build settings and if so decorates with the
* "wrench" overlay.
* Determines if a file or folder got customized build settings and if so decorates with the "wrench" overlay.
*/
public class CustomBuildSettingsDecorator implements ILightweightLabelDecorator {
@Override
public void decorate(Object element, IDecoration decoration) {
if (element instanceof IFile || element instanceof IFolder) {
IResource rc = (IResource) element;
ICProjectDescriptionManager projectDescriptionManager = CoreModel.getDefault()
.getProjectDescriptionManager();
ICProjectDescription prjDescription = projectDescriptionManager
.getProjectDescription(rc.getProject(), ICProjectDescriptionManager.GET_IF_LOADDED);
ICProjectDescriptionManager projectDescriptionManager = CoreModel.getDefault().getProjectDescriptionManager();
ICProjectDescription prjDescription = projectDescriptionManager.getProjectDescription(rc.getProject(), ICProjectDescriptionManager.GET_IF_LOADDED);
if (prjDescription != null) {
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
if (cfgDescription != null) {
@ -59,23 +54,14 @@ public class CustomBuildSettingsDecorator implements ILightweightLabelDecorator
}
private static boolean isCustomizedResource(ICConfigurationDescription cfgDescription, IResource rc) {
IBuildConfiguration config = Adapters.adapt(cfgDescription, IBuildConfiguration.class);
if (config != null
&& ScannerDiscoveryLegacySupport
.isLanguageSettingsProvidersFunctionalityEnabled(rc.getProject())
&& cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
if (ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(rc.getProject()) && cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
IContainer parent = rc.getParent();
List<String> languages = LanguageSettingsManager.getLanguages(rc, cfgDescription);
for (ILanguageSettingsProvider provider : ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders()) {
for (ILanguageSettingsProvider provider: ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders()) {
for (String languageId : languages) {
List<ICLanguageSettingEntry> list = provider.getSettingEntries(cfgDescription, rc, languageId);
if (list == null) {
list = provider.getSettingEntries(config, rc, languageId);
}
if (list != null) {
List<ICLanguageSettingEntry> listDefault = provider.getSettingEntries(config, parent,
languageId);
List<ICLanguageSettingEntry> listDefault = provider.getSettingEntries(cfgDescription, parent, languageId);
// != is OK here due as the equal lists will have the same reference in WeakHashSet
if (list != listDefault)
return true;
@ -84,8 +70,7 @@ public class CustomBuildSettingsDecorator implements ILightweightLabelDecorator
}
}
ICResourceDescription rcDescription = cfgDescription
.getResourceDescription(rc.getProjectRelativePath(), true);
ICResourceDescription rcDescription = cfgDescription.getResourceDescription(rc.getProjectRelativePath(), true);
return rcDescription != null;
}

View file

@ -18,25 +18,24 @@ import java.util.List;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider;
import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.utils.spawner.ProcessFactory;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IResource;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
* Discovers and persists the list of Qt include paths for a particular
* installation of Qt. The Qt installation is described by the path to qmake.
* Discovers and persists the list of Qt include paths for a particular installation of
* Qt. The Qt installation is described by the path to qmake.
* <p>
* Qt uses a tool called qmake to generate makefiles for Qt projects. The tool
* has a query mode that can be used to discover information about the Qt
* installation. Here qmake is used to build a list of all installed Qt include
* paths.
* Qt uses a tool called qmake to generate makefiles for Qt projects. The tool has a
* query mode that can be used to discover information about the Qt installation. Here
* qmake is used to build a list of all installed Qt include paths.
* <p>
* These paths are persisted into a file called language-settings.xml in the
* workspace metadata area.
* These paths are persisted into a file called language-settings.xml in the workspace
* metadata area.
*
* @see QtIncludePathsProvider
*/
@ -53,34 +52,34 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
private long qmakeModTime;
/**
* The cached data is reloaded when the folder holding the include paths is
* removed.
* The cached data is reloaded when the folder holding the include paths
* is removed.
*/
private String qtInstallHeadersPath;
/**
* The cached data is reloaded when the folder containing the include
* folders is modified.
* The cached data is reloaded when the folder containing the include folders is
* modified.
*/
private long qtInstallHeadersModTime;
private static final String ATTR_QMAKE = "qmake"; //$NON-NLS-1$
private static final String ATTR_QMAKE_MOD = "qmakeModification"; //$NON-NLS-1$
private static final String ATTR_QT_INSTALL_HEADERS = "QT_INSTALL_HEADERS"; //$NON-NLS-1$
private static final String ATTR_QT_INSTALL_HEADERS_MOD = "qtInstallHeadersModification"; //$NON-NLS-1$
private static final String ATTR_QMAKE = "qmake";
private static final String ATTR_QMAKE_MOD = "qmakeModification";
private static final String ATTR_QT_INSTALL_HEADERS = "QT_INSTALL_HEADERS";
private static final String ATTR_QT_INSTALL_HEADERS_MOD = "qtInstallHeadersModification";
/**
* Create a new instance of the include path wrapper for the Qt installation
* for the given qmake binary.
* Create a new instance of the include path wrapper for the Qt installation for
* the given qmake binary.
*/
public QtIncludePaths(String qmakePath) {
this.qmakePath = qmakePath;
}
/**
* Create and load an instance of QtIncludePaths from data that was
* serialized into the given XML element. Return null if an instance cannot
* be loaded or if the installation is no longer valid.
* Create and load an instance of QtIncludePaths from data that was serialized into the
* given XML element. Return null if an instance cannot be loaded or if the installation
* is no longer valid.
*/
public static QtIncludePaths loadFrom(Node node) {
if (node.getNodeType() != Node.ELEMENT_NODE)
@ -88,7 +87,8 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
Element element = (Element) node;
String qmakePath = element.getAttribute(ATTR_QMAKE);
if (qmakePath == null || qmakePath.isEmpty())
if (qmakePath == null
|| qmakePath.isEmpty())
return null;
QtIncludePaths qtIncludePaths = new QtIncludePaths(qmakePath);
@ -101,16 +101,18 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
}
/**
* Return true if the receiver points to a valid Qt installation and false
* otherwise. The installation is considered valid if an executable qmake
* binary exists at the expected location.
* Return true if the receiver points to a valid Qt installation and false otherwise.
* The installation is considered valid if an executable qmake binary exists at the
* expected location.
*/
public boolean isValid() {
if (qmakePath == null || qmakePath.isEmpty())
if (qmakePath == null
|| qmakePath.isEmpty())
return false;
File qmake = new File(qmakePath);
return qmake.exists() && qmake.canExecute();
return qmake.exists()
&& qmake.canExecute();
}
@Override
@ -118,10 +120,8 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
if (!(obj instanceof QtIncludePaths))
return super.equals(obj);
// Include paths are equivalent when they point to the same qmake
// binary. All other
// values are reloaded from that binary and do not need to be directly
// compared.
// Include paths are equivalent when they point to the same qmake binary. All other
// values are reloaded from that binary and do not need to be directly compared.
QtIncludePaths other = (QtIncludePaths) obj;
return qmakePath == null ? other.qmakePath == null : qmakePath.equals(other.qmakePath);
}
@ -132,32 +132,33 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
}
/**
* Return a current list of the include paths for this Qt installation.
* Return null if no such paths can be found.
* Return a current list of the include paths for this Qt installation. Return null if
* no such paths can be found.
* <p>
* Updates the cached results if needed. If the settings are updated then
* the new list will be serialized into the workspace metadata area.
* Updates the cached results if needed. If the settings are updated then the new list
* will be serialized into the workspace metadata area.
*/
@Override
public List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc, String languageId) {
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription configDesc, IResource rc, String languageId) {
List<ICLanguageSettingEntry> entries = null;
File qmake = new File(qmakePath);
if (!qmake.exists() || qmakeModTime != qmake.lastModified())
if (!qmake.exists()
|| qmakeModTime != qmake.lastModified())
entries = reload();
else {
File qtInstallHeadersDir = new File(qtInstallHeadersPath);
if (!qtInstallHeadersDir.exists() || qtInstallHeadersModTime != qtInstallHeadersDir.lastModified())
if (!qtInstallHeadersDir.exists()
|| qtInstallHeadersModTime != qtInstallHeadersDir.lastModified())
entries = reload();
}
// If the cache was not reloaded, then return the previously discovered
// entries.
// If the cache was not reloaded, then return the previously discovered entries.
if (entries == null)
return super.getSettingEntries(config, rc, languageId);
return super.getSettingEntries(configDesc, rc, languageId);
// Otherwise store, persist, and return the newly discovered values.
setSettingEntries(config, rc, languageId, entries);
setSettingEntries(configDesc, rc, languageId, entries);
serializeLanguageSettingsInBackground(null);
return entries;
}
@ -169,10 +170,8 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
parentElement.setAttribute(ATTR_QT_INSTALL_HEADERS, qtInstallHeadersPath);
parentElement.setAttribute(ATTR_QT_INSTALL_HEADERS_MOD, Long.toString(qtInstallHeadersModTime));
// The parent implementation tries to create a new child node (provider)
// that is used
// as the part for later entries. This isn't needed in this case, we
// just want to
// The parent implementation tries to create a new child node (provider) that is used
// as the part for later entries. This isn't needed in this case, we just want to
// use the part that serializes the languages.
return parentElement;
}
@ -183,26 +182,25 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
qtInstallHeadersPath = element.getAttribute(ATTR_QT_INSTALL_HEADERS);
qtInstallHeadersModTime = getLongAttribute(element, ATTR_QT_INSTALL_HEADERS_MOD);
// The parent implementation tries to create a new child node (provider)
// that is used
// as the part for later entries. This isn't needed in this case, we
// just want to
// The parent implementation tries to create a new child node (provider) that is used
// as the part for later entries. This isn't needed in this case, we just want to
// use the part that serializes the languages.
}
/**
* Parse and return the given attribute as a long. Return 0 if the attribute
* does not have a valid value.
* Parse and return the given attribute as a long. Return 0 if the attribute does
* not have a valid value.
*/
private static long getLongAttribute(Element element, String attr) {
String value = element.getAttribute(attr);
if (value == null || value.isEmpty())
if (value == null
|| value.isEmpty())
return 0;
try {
return Long.parseLong(value);
} catch(NumberFormatException e) {
Activator.log("attribute name:" + attr + " value:" + value, e); //$NON-NLS-1$ //$NON-NLS-2$
Activator.log("attribute name:" + attr + " value:" + value, e);
return 0;
}
}
@ -211,25 +209,24 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
* Reload and return the entries if possible, return null otherwise.
*/
private List<ICLanguageSettingEntry> reload() {
// All keys are reset and then updated as their values are discovered.
// This allows partial
// All keys are reset and then updated as their values are discovered. This allows partial
// success to skip over previously calculated values.
qmakeModTime = 0;
qtInstallHeadersPath = null;
qtInstallHeadersModTime = 0;
File qmake = new File(qmakePath);
if (!qmake.exists() || !qmake.canExecute())
if (!qmake.exists()
|| !qmake.canExecute())
return Collections.emptyList();
qmakeModTime = qmake.lastModified();
// Run `qmake -query QT_INSTALL_HEADERS` to get output like
// "/opt/qt-5.0.0/include".
// Run `qmake -query QT_INSTALL_HEADERS` to get output like "/opt/qt-5.0.0/include".
BufferedReader reader = null;
Process process = null;
try {
process = ProcessFactory.getFactory().exec(new String[] { qmakePath, "-query", "QT_INSTALL_HEADERS" }); //$NON-NLS-1$ //$NON-NLS-2$
process = ProcessFactory.getFactory().exec(new String[]{ qmakePath, "-query", "QT_INSTALL_HEADERS" });
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
qtInstallHeadersPath = reader.readLine();
} catch(IOException e) {
@ -252,11 +249,12 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
File qtInstallHeadersDir = new File(qtInstallHeadersPath);
qtInstallHeadersModTime = qtInstallHeadersDir.lastModified();
if (!qtInstallHeadersDir.exists() || !qtInstallHeadersDir.canRead() || !qtInstallHeadersDir.isDirectory())
if (!qtInstallHeadersDir.exists()
|| !qtInstallHeadersDir.canRead()
|| !qtInstallHeadersDir.isDirectory())
return Collections.emptyList();
// Create an include path entry for all sub-folders in the
// QT_INSTALL_HEADERS location, including
// Create an include path entry for all sub-folders in the QT_INSTALL_HEADERS location, including
// the QT_INSTALL_HEADERS folder itself.
File[] files = qtInstallHeadersDir.listFiles(new FileFilter() {
@Override
@ -275,8 +273,7 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
private static void safeAdd(List<ICLanguageSettingEntry> entries, File file) {
try {
entries.add(
new CIncludePathEntry(file.getCanonicalPath(), ICSettingEntry.READONLY | ICSettingEntry.RESOLVED));
entries.add(new CIncludePathEntry(file.getCanonicalPath(), ICSettingEntry.READONLY | ICSettingEntry.RESOLVED));
} catch(IOException e) {
Activator.log(e);
}

View file

@ -16,7 +16,6 @@ import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IResource;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@ -25,8 +24,8 @@ import org.w3c.dom.NodeList;
/**
* This provider uses persistent cache to store the include paths for different
* Qt installations. A Qt installation is uniquely identified by the path to the
* qmake binary within the installation.
* Qt installations. A Qt installation is uniquely identified by the path to
* the qmake binary within the installation.
* <p>
* This result is shared among all Build Configurations that use the provider
* with the same value for the QMAKE environment variable.
@ -34,19 +33,17 @@ import org.w3c.dom.NodeList;
public class QtIncludePathsProvider extends LanguageSettingsSerializableProvider {
/**
* The provider identifies Qt installations by the absolute path to the
* qmake binary. The include paths relevant to the installations are
* computed and persisted in {@link QtIncludePaths}.
* The provider identifies Qt installations by the absolute path to the qmake binary. The
* include paths relevant to the installations are computed and persisted in {@link QtIncludePaths}.
*/
private final Map<String, QtIncludePaths> qtInstallHeaders = new HashMap<String, QtIncludePaths>();
/**
* The build configuration stores the path to the qmake binary as an
* environment variable.
* The build configuration stores the path to the qmake binary as an environment variable.
*/
private static final String ENVVAR_QMAKE = "QMAKE"; //$NON-NLS-1$
private static final String ENVVAR_QMAKE = "QMAKE";
private static final String ELEMENT_QMAKE = "qmake"; //$NON-NLS-1$
private static final String ELEMENT_QMAKE = "qmake";
@Override
public boolean equals(Object obj) {
@ -71,19 +68,17 @@ public class QtIncludePathsProvider extends LanguageSettingsSerializableProvider
public void loadEntries(Element providerNode) {
super.loadEntries(providerNode);
// Find and load all qmake child nodes. There will be one node for each
// Qt
// installation that has been used. Qt installations that are no longer
// valid
// are not loaded. This means they will be removed from the file the
// next time
// Find and load all qmake child nodes. There will be one node for each Qt
// installation that has been used. Qt installations that are no longer valid
// are not loaded. This means they will be removed from the file the next time
// that the language setting providers are serialized.
NodeList children = providerNode.getChildNodes();
for (int i = 0; i < children.getLength(); ++i) {
Node child = children.item(i);
if (ELEMENT_QMAKE.equals(child.getNodeName())) {
QtIncludePaths qtIncludePaths = QtIncludePaths.loadFrom(child);
if (qtIncludePaths != null && qtIncludePaths.isValid())
if (qtIncludePaths != null
&& qtIncludePaths.isValid())
qtInstallHeaders.put(qtIncludePaths.getQMakePath(), qtIncludePaths);
}
}
@ -91,12 +86,9 @@ public class QtIncludePathsProvider extends LanguageSettingsSerializableProvider
@Override
public void serializeEntries(Element parent) {
// NOTE: This creates its own XML structure where children of the
// provider node are qmake nodes.
// Within each qmake node is a list of include paths for that
// installation. Calling the
// base #serializeEntries here would try to write this instance's
// (empty) list of settings
// NOTE: This creates its own XML structure where children of the provider node are qmake nodes.
// Within each qmake node is a list of include paths for that installation. Calling the
// base #serializeEntries here would try to write this instance's (empty) list of settings
// to the file.
// Each value is serialized into a new element in the XML document.
@ -109,24 +101,19 @@ public class QtIncludePathsProvider extends LanguageSettingsSerializableProvider
}
/**
* The given build configuration's QMAKE environment variable is used to
* identify the appropriate Qt installation. The language settings are then
* either returned from the previously persisted data or loaded, serialized,
* and returned.
* The given build configuration's QMAKE environment variable is used to identify the appropriate
* Qt installation. The language settings are then either returned from the previously persisted
* data or loaded, serialized, and returned.
*/
@Override
public synchronized List<ICLanguageSettingEntry> getSettingEntries(IBuildConfiguration config, IResource rc,
String languageId) {
public synchronized List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription configDesc, IResource rc, String languageId) {
// Make sure the requested language is in scope for this provider.
if (!getLanguageScope().contains(languageId))
return null;
// The value of the build configuration's QMAKE environment variable is
// used to select the
// The value of the build configuration's QMAKE environment variable is used to select the
// right version of qmake.
ICConfigurationDescription configDesc = config.getAdapter(ICConfigurationDescription.class);
IEnvironmentVariable qmake_var = CCorePlugin.getDefault().getBuildEnvironmentManager().getVariable(ENVVAR_QMAKE,
configDesc, true);
IEnvironmentVariable qmake_var = CCorePlugin.getDefault().getBuildEnvironmentManager().getVariable(ENVVAR_QMAKE, configDesc, true);
if (qmake_var == null)
return null;
@ -134,14 +121,13 @@ public class QtIncludePathsProvider extends LanguageSettingsSerializableProvider
if (qmake == null)
return null;
// The path to qmake is used as the key into the in-memory cache of
// header paths.
// The path to qmake is used as the key into the in-memory cache of header paths.
QtIncludePaths paths = qtInstallHeaders.get(qmake);
if (paths == null) {
paths = new QtIncludePaths(qmake);
qtInstallHeaders.put(qmake, paths);
}
return paths.getSettingEntries(config, null, languageId);
return paths.getSettingEntries(configDesc, null, languageId);
}
}