Bug 459732 - Bower IDE contribution
Bower IDE is added. This includes the following plug-ins:
Node.js Core (SemVer) API plug-in is added
Bower Core plug-in is added
Bower IDE plug-in is added
Bower IDE UI plug-in is added
Node.js Core (SemVer) Tests plug-in is added
Features are updated with new plug-ins
Signed-off-by: Stéphane Bégaudeau <stephane.begaudeau@obeo.fr>
Change-Id: I58623383c9f9ec57f56c27b1da3d320f6edb8f3e
Signed-off-by: vrubezhny <vrubezhny@exadel.com>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.classpath b/bundles/org.eclipse.wst.jsdt.bower.core/.classpath
new file mode 100644
index 0000000..32a9aa4
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.project b/bundles/org.eclipse.wst.jsdt.bower.core/.project
new file mode 100644
index 0000000..ed8a542
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.wst.jsdt.bower.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..fb89267
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,410 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=warning
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=error
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=error
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=error
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=52
+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=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+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=1
+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=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+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.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=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+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=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=do not 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=do not 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=do not 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=false
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..03a084a
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_JSDT
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * Returns the ${bare_field_name}.\n * \n * @return The ${bare_field_name}\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * Sets the ${bare_field_name}.\n *\n * @param ${param} The ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * The constructor.\n * \n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) 2015.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * ${user} - initial API and implementation\n *******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * {@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="false" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return this.${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=false
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..fdcba94
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..52f7384
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.jsdt.bower.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6f5fe64
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.wst.jsdt.bower.core;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-Localization: bundle
+Export-Package: org.eclipse.wst.jsdt.bower.core.api;version="1.0.0",
+ org.eclipse.wst.jsdt.bower.core.api.utils;version="1.0.0"
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.wst.jsdt.nodejs.core,
+ org.apache.httpcomponents.httpcore,
+ org.apache.httpcomponents.httpclient,
+ org.eclipse.jgit,
+ com.google.gson,
+ com.google.guava
+Bundle-Activator: org.eclipse.wst.jsdt.bower.core.internal.BowerCorePlugin
+Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/OSGI-INF/i18n/messages.properties b/bundles/org.eclipse.wst.jsdt.bower.core/OSGI-INF/i18n/messages.properties
new file mode 100644
index 0000000..79981dd
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/OSGI-INF/i18n/messages.properties
@@ -0,0 +1,11 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+Downloading.Label=Downloading {0}...
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/about.html b/bundles/org.eclipse.wst.jsdt.bower.core/about.html
new file mode 100644
index 0000000..4602330
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 2, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/build.properties b/bundles/org.eclipse.wst.jsdt.bower.core/build.properties
new file mode 100644
index 0000000..db70be9
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/build.properties
@@ -0,0 +1,23 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+source.. = src/main/java/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ bundle.properties,\
+ OSGI-INF/
+javacProjectSettings = true
+additional.bundles = com.google.guava,\
+ com.google.gson,\
+ org.apache.httpcomponents.httpclient,\
+ org.apache.httpcomponents.httpcore,\
+ org.eclipse.jgit,\
+ org.eclipse.wst.jsdt.nodejs.core
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/bundle.properties b/bundles/org.eclipse.wst.jsdt.bower.core/bundle.properties
new file mode 100644
index 0000000..bb46f5b
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/bundle.properties
@@ -0,0 +1,12 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+Bundle-Name = JSDT Bower Core
+Bundle-Vendor = Eclipse Web Tools Platform
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/pom.xml b/bundles/org.eclipse.wst.jsdt.bower.core/pom.xml
new file mode 100644
index 0000000..3e1d561
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 2014 Eclipse Foundation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Distribution License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/org/documents/edl-v10.php
+
+ Contributors:
+ Thanh Ha (Eclipse Foundation) - initial implementation
+ Mickael Istria (Red Hat Inc.) - 425796 intermediary pom for factorization
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.webtools.jsdt</groupId>
+ <artifactId>bundles</artifactId>
+ <version>3.6.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.webtools.jsdt.bundles</groupId>
+ <artifactId>org.eclipse.wst.jsdt.bower.core</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/AbstractBowerCommand.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/AbstractBowerCommand.java
new file mode 100644
index 0000000..eda1e8f
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/AbstractBowerCommand.java
@@ -0,0 +1,317 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.api;
+
+import com.google.common.base.Optional;
+import com.google.common.io.Files;
+import com.google.gson.Gson;
+import com.google.gson.JsonSyntaxException;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.util.List;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.eclipse.jgit.lib.ProgressMonitor;
+import org.eclipse.wst.jsdt.bower.core.api.utils.IBowerConstants;
+import org.eclipse.wst.jsdt.bower.core.internal.BowerCorePlugin;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * The bower command is used to perform a bower-related operation.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ * @param <BOWER_COMMAND>
+ * The type of the subclass
+ */
+public abstract class AbstractBowerCommand<BOWER_COMMAND extends AbstractBowerCommand<?>> {
+ /**
+ * The prefixes to consider to determines if a package id is the URL of a Git repository or just its name.
+ */
+ private static String[] PREFIXES = new String[] {IBowerConstants.GIT_PREFIX, IBowerConstants.HTTP_PREFIX,
+ IBowerConstants.HTTPS_PREFIX, IBowerConstants.SSH_PREFIX };
+
+ /**
+ * The URL of the bower server on which the request should be made.
+ */
+ protected String bowerServerURL = IBowerConstants.DEFAULT_BOWER_SERVER_URL;
+
+ /**
+ * The progress monitor.
+ */
+ protected Optional<ProgressMonitor> monitor = Optional.absent();
+
+ /**
+ * The logger.
+ */
+ protected ILogger logger = BowerCorePlugin.getInstance().getLogger();
+
+ /**
+ * The content of the bower.json file.
+ */
+ protected Optional<BowerJson> bowerJson = Optional.absent();
+
+ /**
+ * The directory in which the dependencies will be downloaded.
+ */
+ protected Optional<File> outputDirectory = Optional.absent();
+
+ /**
+ * Indicates if the given package id is the URL of a Git repository.
+ *
+ * @param packageId
+ * The package id
+ * @return <code>true</code> if it is the URL of a Git repository, <code>false</code> otherwise.
+ */
+ protected boolean isGitUrl(String packageId) {
+ for (String prefix : PREFIXES) {
+ if (packageId.startsWith(prefix)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the name of a package from its package id.
+ *
+ * @param packageId
+ * The package id
+ * @return The package id itself if it is not the URL of a Git repository or the last segment of the
+ * package id minus the Git extension if it is the URL of a Git repository
+ */
+ protected String getNameFromPackageId(String packageId) {
+ if (this.isGitUrl(packageId)) {
+ String name = packageId;
+ if (name.endsWith(IBowerConstants.GIT_EXTENSION)) {
+ name = name.substring(0, name.length() - IBowerConstants.GIT_EXTENSION.length());
+ if (name.contains(IBowerConstants.SEPARATOR)) {
+ name = name.substring(name.lastIndexOf(IBowerConstants.SEPARATOR
+ + IBowerConstants.SEPARATOR.length()));
+ }
+ }
+ }
+ return packageId;
+ }
+
+ /**
+ * Returns the Git URL from a package id.
+ *
+ * @param packageId
+ * The package id
+ * @return The package id itself if it is a Git URL or the Git URL from the Bower package descriptor
+ * retrieved from a Bower registry.
+ */
+ protected Optional<String> getGitUrlFromPackageId(String packageId) {
+ if (this.isGitUrl(packageId)) {
+ return Optional.of(packageId);
+ }
+
+ Optional<String> result = Optional.absent();
+
+ Optional<BowerPackageDescriptor> descriptor = this.getDescriptor(packageId);
+ if (descriptor.isPresent()) {
+ result = Optional.of(descriptor.get().getUrl());
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns the folder where the bower components should be downloaded for the given project.
+ *
+ * @param bowerProject
+ * The folder containing the file bower.json.
+ * @return The older where the bower components should be downloaded
+ */
+ protected File getBowerComponentsFolder(File bowerProject) {
+ File bowerComponents = new File(bowerProject, IBowerConstants.BOWER_COMPONENTS);
+
+ File bowerrc = new File(bowerProject, IBowerConstants.BOWER_RC);
+ if (bowerrc.exists()) {
+ BufferedReader bufferedReader = null;
+ try {
+ bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(bowerrc)));
+
+ BowerRc bowerRcContent = new Gson().fromJson(bufferedReader, BowerRc.class);
+ if (bowerRcContent.getDirectory() != null && bowerRcContent.getDirectory().length() > 0) {
+ bowerComponents = new File(bowerProject, bowerRcContent.getDirectory());
+ }
+ } catch (IOException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ } finally {
+ if (bufferedReader != null) {
+ try {
+ bufferedReader.close();
+ } catch (IOException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ }
+ }
+ }
+ }
+
+ return bowerComponents;
+ }
+
+ /**
+ * Returns the bower package descriptor from a bower registry.
+ *
+ * @param packageId
+ * The package id
+ * @return The bower packaged descriptor for the package with the given id
+ */
+ protected Optional<BowerPackageDescriptor> getDescriptor(String packageId) {
+ HttpClient client = new DefaultHttpClient();
+ HttpGet request = new HttpGet(this.bowerServerURL + IBowerConstants.PACKAGES_PATH + packageId);
+
+ try {
+ HttpResponse response = client.execute(request);
+ InputStreamReader inputStreamReader = new InputStreamReader(response.getEntity().getContent());
+
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(inputStreamReader);
+
+ Gson gson = new Gson();
+ BowerPackageDescriptor bowerPackageDescriptor = gson.fromJson(reader,
+ BowerPackageDescriptor.class);
+ return Optional.of(bowerPackageDescriptor);
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (Exception e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ }
+ }
+ }
+ } catch (IOException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ }
+ return Optional.absent();
+ }
+
+ /**
+ * Executes the command.
+ */
+ public abstract void call();
+
+ /**
+ * Sets the monitor.
+ *
+ * @param monitor
+ * The monitor to set
+ * @return The current object
+ */
+ @SuppressWarnings("unchecked")
+ public BOWER_COMMAND setMonitor(ProgressMonitor monitor) {
+ this.monitor = Optional.fromNullable(monitor);
+ return (BOWER_COMMAND)this;
+ }
+
+ /**
+ * Sets URL of the bowser server.
+ *
+ * @param bowerServerURL
+ * The URL of the bowser server
+ * @return The current object
+ */
+ @SuppressWarnings("unchecked")
+ public BOWER_COMMAND setBowerServerURL(String bowerServerURL) {
+ if (bowerServerURL != null) {
+ this.bowerServerURL = bowerServerURL;
+ if (this.bowerServerURL.endsWith(IBowerConstants.SEPARATOR)) {
+ this.bowerServerURL = this.bowerServerURL.substring(0, this.bowerServerURL.length() - 1
+ - IBowerConstants.SEPARATOR.length());
+ }
+ }
+ return (BOWER_COMMAND)this;
+ }
+
+ /**
+ * Sets the bowerJson.
+ *
+ * @param bowerJson
+ * The bowerJson to set
+ * @return The current object
+ */
+ @SuppressWarnings("unchecked")
+ public BOWER_COMMAND setBowerJson(BowerJson bowerJson) {
+ this.bowerJson = Optional.fromNullable(bowerJson);
+ return (BOWER_COMMAND)this;
+ }
+
+ /**
+ * Sets the outputDirectory, where the dependencies will be downloaded.
+ *
+ * @param outputDirectory
+ * The outputDirectory to set
+ * @return The current object
+ */
+ @SuppressWarnings("unchecked")
+ public BOWER_COMMAND setOutputDirectory(File outputDirectory) {
+ this.outputDirectory = Optional.fromNullable(outputDirectory);
+ return (BOWER_COMMAND)this;
+ }
+
+ /**
+ * Delete the given file. If it is a directory, delete its content recursively.
+ *
+ * @param file
+ * The file
+ * @throws IOException
+ * In case of error during the deletion.
+ */
+ protected void delete(File file) throws IOException {
+ if (file.isDirectory()) {
+ for (File c : file.listFiles()) {
+ delete(c);
+ }
+ }
+ if (!file.delete()) {
+ throw new FileNotFoundException(file.getAbsolutePath());
+ }
+ }
+
+ /**
+ * Returns the content of the file bower.json.
+ *
+ * @param bowerJsonFile
+ * The file bower.json
+ * @return The content of the file
+ */
+ protected Optional<BowerJson> getBowerJson(File bowerJsonFile) {
+ if (bowerJsonFile.exists()) {
+ try {
+ List<String> lines = Files.readLines(bowerJsonFile, Charset.forName("UTF-8")); //$NON-NLS-1$
+
+ StringBuilder content = new StringBuilder();
+ for (String line : lines) {
+ content.append(line);
+ }
+ return Optional.fromNullable(new Gson().fromJson(content.toString(), BowerJson.class));
+ } catch (JsonSyntaxException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ } catch (IOException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ }
+ }
+ return Optional.absent();
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/Bower.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/Bower.java
new file mode 100644
index 0000000..390ba39
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/Bower.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.api;
+
+/**
+ * This class will be used to configure and run bower-related operations. This is the main entry point to be
+ * used by clients.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class Bower {
+ /**
+ * Creates an install command used to download all the dependencies of a bower project.
+ *
+ * @return An {@link InstallCommand}.
+ */
+ public static InstallCommand install() {
+ return new InstallCommand();
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerJson.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerJson.java
new file mode 100644
index 0000000..15147f5
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerJson.java
@@ -0,0 +1,291 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.api;
+
+import com.google.gson.annotations.SerializedName;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * The bower.json file content. See <a href="https://github.com/bower/bower.json-spec">the bower.json
+ * specification for more details</a>.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerJson {
+ /**
+ * The name.
+ */
+ private String name = ""; //$NON-NLS-1$
+
+ /**
+ * The description.
+ */
+ private String description = ""; //$NON-NLS-1$
+
+ /**
+ * The version.
+ */
+ private String version = ""; //$NON-NLS-1$
+
+ /**
+ * The main files.
+ */
+ private List<String> main = new ArrayList<String>();
+
+ /**
+ * The licenses
+ */
+ private List<String> licenses = new ArrayList<String>();
+
+ /**
+ * The files to ignore.
+ */
+ private List<String> ignore = new ArrayList<String>();
+
+ /**
+ * The authors.
+ */
+ private List<String> authors = new ArrayList<String>();
+
+ /**
+ * The homepage.
+ */
+ private String homepage = ""; //$NON-NLS-1$
+
+ /**
+ * The dependencies.
+ */
+ private Map<String, String> dependencies = new HashMap<String, String>();
+
+ /**
+ * The development dependencies.
+ */
+ private Map<String, String> devDependencies = new HashMap<String, String>();
+
+ /**
+ * Indicates if the package is private.
+ */
+ @SerializedName("private")
+ private boolean isPrivate;
+
+ /**
+ * Returns the name.
+ *
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the name
+ *
+ * @param name
+ * the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Returns the description.
+ *
+ * @return The description
+ */
+ public String getDescription() {
+ return this.description;
+ }
+
+ /**
+ * Sets the description.
+ *
+ * @param description
+ * The description to set
+ */
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ /**
+ * Returns the version
+ *
+ * @return the version
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ * Sets the version
+ *
+ * @param version
+ * the version to set
+ */
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ /**
+ * Returns the main.
+ *
+ * @return The main
+ */
+ public List<String> getMain() {
+ return this.main;
+ }
+
+ /**
+ * Sets the main.
+ *
+ * @param main
+ * The main to set
+ */
+ public void setMain(List<String> main) {
+ this.main = main;
+ }
+
+ /**
+ * Returns the licenses.
+ *
+ * @return The licenses
+ */
+ public List<String> getLicenses() {
+ return this.licenses;
+ }
+
+ /**
+ * Sets the licenses.
+ *
+ * @param licenses
+ * The licenses to set
+ */
+ public void setLicenses(List<String> licenses) {
+ this.licenses = licenses;
+ }
+
+ /**
+ * Returns the ignore.
+ *
+ * @return The ignore
+ */
+ public List<String> getIgnore() {
+ return this.ignore;
+ }
+
+ /**
+ * Sets the ignore.
+ *
+ * @param ignore
+ * The ignore to set
+ */
+ public void setIgnore(List<String> ignore) {
+ this.ignore = ignore;
+ }
+
+ /**
+ * Returns the authors.
+ *
+ * @return The authors
+ */
+ public List<String> getAuthors() {
+ return this.authors;
+ }
+
+ /**
+ * Sets the authors.
+ *
+ * @param authors
+ * The authors to set
+ */
+ public void setAuthors(List<String> authors) {
+ this.authors = authors;
+ }
+
+ /**
+ * Returns the homepage.
+ *
+ * @return The homepage
+ */
+ public String getHomepage() {
+ return this.homepage;
+ }
+
+ /**
+ * Sets the homepage.
+ *
+ * @param homepage
+ * The homepage to set
+ */
+ public void setHomepage(String homepage) {
+ this.homepage = homepage;
+ }
+
+ /**
+ * Returns the dependencies.
+ *
+ * @return the dependencies
+ */
+ public Map<String, String> getDependencies() {
+ return dependencies;
+ }
+
+ /**
+ * The dependencies to set.
+ *
+ * @param dependencies
+ * the dependencies to set
+ */
+ public void setDependencies(Map<String, String> dependencies) {
+ this.dependencies = dependencies;
+ }
+
+ /**
+ * Returns the devDependencies.
+ *
+ * @return the devDependencies
+ */
+ public Map<String, String> getDevDependencies() {
+ return devDependencies;
+ }
+
+ /**
+ * The devDependencies to set.
+ *
+ * @param devDependencies
+ * the devDependencies to set
+ */
+ public void setDevDependencies(Map<String, String> devDependencies) {
+ this.devDependencies = devDependencies;
+ }
+
+ /**
+ * Returns the isPrivate.
+ *
+ * @return The isPrivate
+ */
+ public boolean isPrivate() {
+ return this.isPrivate;
+ }
+
+ /**
+ * Sets the isPrivate.
+ *
+ * @param isPrivate
+ * The isPrivate to set
+ */
+ public void setPrivate(boolean isPrivate) {
+ this.isPrivate = isPrivate;
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerPackageDescriptor.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerPackageDescriptor.java
new file mode 100644
index 0000000..04f061f
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerPackageDescriptor.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo.
+ * 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.api;
+
+/**
+ * This descriptor only contains the name of a bower package and its repository URL.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerPackageDescriptor {
+ /**
+ * The name of the package.
+ */
+ private String name;
+
+ /**
+ * The URL of the package.
+ */
+ private String url;
+
+ /**
+ * Sets the name.
+ *
+ * @param name
+ * The name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Returns the name.
+ *
+ * @return The name
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ /**
+ * Sets the url.
+ *
+ * @param url
+ * The url to set
+ */
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ /**
+ * Returns the URL.
+ *
+ * @return The url
+ */
+ public String getUrl() {
+ return this.url;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerRc.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerRc.java
new file mode 100644
index 0000000..0409793
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerRc.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.api;
+
+/**
+ * This class will be used to hold the content of the file ".bowerrc". This file is used to store preferences
+ * for bower.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerRc {
+ /**
+ * The directory where the bower dependencies will be stored.
+ */
+ private String directory = ""; //$NON-NLS-1$
+
+ /**
+ * Returns the directory.
+ *
+ * @return The directory
+ */
+ public String getDirectory() {
+ return this.directory;
+ }
+
+ /**
+ * Sets the directory.
+ *
+ * @param directory
+ * The directory to set
+ */
+ public void setDirectory(String directory) {
+ this.directory = directory;
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerReaders.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerReaders.java
new file mode 100644
index 0000000..2714b57
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/BowerReaders.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.api;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonIOException;
+import com.google.gson.JsonSyntaxException;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.eclipse.wst.jsdt.bower.core.api.utils.IBowerConstants;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * Utility class used to read the content of the bower files.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerReaders {
+ /**
+ * Returns the content of bower.json from the given input stream.
+ *
+ * @param inputStream
+ * The input stream
+ * @param logger
+ * The logger
+ * @return The content of bower.json
+ */
+ public static final BowerJson getBowerJson(InputStream inputStream, ILogger logger) {
+ BowerJson bowerJson = null;
+ BufferedReader bowerJsonBufferedReader = null;
+
+ try {
+ bowerJsonBufferedReader = new BufferedReader(new InputStreamReader(inputStream));
+ bowerJson = new Gson().fromJson(bowerJsonBufferedReader, BowerJson.class);
+ } catch (JsonSyntaxException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ } catch (JsonIOException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ } finally {
+ if (bowerJsonBufferedReader != null) {
+ try {
+ bowerJsonBufferedReader.close();
+ } catch (IOException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ }
+ }
+ }
+
+ return bowerJson;
+ }
+
+ /**
+ * Returns the content of .bowerrc from the given input stream.
+ *
+ * @param inputStream
+ * The input stream
+ * @param logger
+ * The logger
+ * @return The content of .bowerrc
+ */
+ public static final BowerRc getBowerRc(InputStream inputStream, ILogger logger) {
+ BowerRc bowerRc = null;
+ BufferedReader bowerRcBufferedReader = null;
+
+ try {
+ bowerRcBufferedReader = new BufferedReader(new InputStreamReader(inputStream));
+ bowerRc = new Gson().fromJson(bowerRcBufferedReader, BowerRc.class);
+ } catch (JsonSyntaxException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ } catch (JsonIOException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ } finally {
+ if (bowerRcBufferedReader != null) {
+ try {
+ bowerRcBufferedReader.close();
+ } catch (IOException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ }
+ }
+ }
+
+ return bowerRc;
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/InstallCommand.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/InstallCommand.java
new file mode 100644
index 0000000..d0171b4
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/InstallCommand.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.api;
+
+import com.google.common.base.Optional;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.api.errors.GitAPIException;
+import org.eclipse.jgit.lib.Ref;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
+import org.eclipse.wst.jsdt.bower.core.api.utils.IBowerConstants;
+import org.eclipse.wst.jsdt.bower.core.internal.utils.I18n;
+import org.eclipse.wst.jsdt.bower.core.internal.utils.I18nKeys;
+import org.eclipse.wst.jsdt.nodejs.core.api.semver.Range;
+import org.eclipse.wst.jsdt.nodejs.core.api.semver.Version;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * This command let you install recursively all the packages described in the bower.json description of the
+ * dependencies of the project. You can specify where you want the dependencies to be downloaded.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class InstallCommand extends AbstractBowerCommand<InstallCommand> {
+ /**
+ * Install all the dependencies detailled in the bower.json file into the given location.
+ */
+ @Override
+ public void call() {
+ if (this.bowerJson.isPresent()) {
+ Map<String, String> dependenciesToDownload = new HashMap<String, String>();
+ dependenciesToDownload.putAll(this.bowerJson.get().getDependencies());
+ dependenciesToDownload.putAll(this.bowerJson.get().getDevDependencies());
+
+ Map<String, String> dependencies = new HashMap<String, String>();
+
+ Set<Entry<String, String>> entrySet = dependenciesToDownload.entrySet();
+ for (Entry<String, String> entry : entrySet) {
+ String packageId = entry.getKey();
+ String rangeExpression = entry.getValue();
+
+ Map<String, String> additionalDependencies = this.download(packageId, rangeExpression);
+ dependencies.putAll(additionalDependencies);
+ }
+
+ // Download recursively the additional dependencies
+ this.downloadAdditionalDependencies(dependencies);
+ }
+ }
+
+ /**
+ * Download recursively the given dependencies.
+ *
+ * @param dependencies
+ * The map of dependencies to download
+ */
+ private void downloadAdditionalDependencies(Map<String, String> dependencies) {
+ Map<String, String> additionalDependencies = new HashMap<String, String>();
+
+ Set<Entry<String, String>> entrySet = dependencies.entrySet();
+ for (Entry<String, String> entry : entrySet) {
+ String packageId = entry.getKey();
+ String rangeExpression = entry.getValue();
+
+ additionalDependencies.putAll(this.download(packageId, rangeExpression));
+ }
+
+ if (additionalDependencies.size() > 0) {
+ this.downloadAdditionalDependencies(additionalDependencies);
+ }
+ }
+
+ /**
+ * Downloads the package with the given packageId matching the given range.
+ *
+ * @param packageId
+ * The package id
+ * @param rangeExpression
+ * The range
+ * @return The dependencies of the downloaded package
+ */
+ private Map<String, String> download(String packageId, String rangeExpression) {
+ Map<String, String> dependencies = new HashMap<String, String>();
+
+ Optional<String> packageUrl = this.getGitUrlFromPackageId(packageId);
+ String packageName = this.getNameFromPackageId(packageId);
+
+ if (packageUrl.isPresent() && this.monitor.isPresent() && !this.monitor.get().isCancelled()) {
+ if (this.monitor.isPresent()) {
+ this.monitor.get().beginTask(I18n.getString(I18nKeys.DOWNLOADING_LABEL, packageName), 10);
+ }
+
+ try {
+ File tempFile = new File("/tmp"); //$NON-NLS-1$
+ final Repository db = FileRepositoryBuilder.create(tempFile);
+ Collection<Ref> refs = new Git(db).lsRemote().setRemote(packageUrl.get()).setTags(true)
+ .call();
+
+ Optional<Ref> bestMatch = this.findBestMatch(refs, rangeExpression);
+ if (bestMatch.isPresent() && outputDirectory.isPresent()) {
+ File downloadedDependencyFolder = new File(outputDirectory.get(), packageName);
+ if (!downloadedDependencyFolder.exists()) {
+ Git git = Git.cloneRepository().setProgressMonitor(monitor.get()).setURI(
+ packageUrl.get()).setDirectory(downloadedDependencyFolder).setBranch(
+ bestMatch.get().getName()).setBare(false).setNoCheckout(false).call();
+ git.close();
+
+ File gitFolder = new File(downloadedDependencyFolder, IBowerConstants.GIT_EXTENSION);
+ this.delete(gitFolder);
+
+ File bowerJsonFile = new File(downloadedDependencyFolder, IBowerConstants.BOWER_JSON);
+ Optional<BowerJson> dependencyBowerJson = this.getBowerJson(bowerJsonFile);
+ if (dependencyBowerJson.isPresent()) {
+ dependencies.putAll(dependencyBowerJson.get().getDependencies());
+ }
+ }
+ }
+
+ db.close();
+ } catch (GitAPIException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ } catch (IOException e) {
+ logger.log(IBowerConstants.BOWER_CORE_BUNDLE_ID, ILogger.ERROR, e);
+ }
+
+ if (this.monitor.isPresent()) {
+ this.monitor.get().endTask();
+ }
+ }
+ return dependencies;
+ }
+
+ /**
+ * Finds the Git reference that matches the best the version that we are looking for.
+ *
+ * @param refs
+ * The references of the Git repository
+ * @param rangeExpression
+ * The expression defining the ranges of the accepted references
+ * @return The Git references which matches the best the given range expression
+ */
+ private Optional<Ref> findBestMatch(Collection<Ref> refs, String rangeExpression) {
+ Optional<Ref> refToDownload = Optional.absent();
+
+ Range range = Range.fromString(rangeExpression);
+ for (Ref ref : refs) {
+ String refName = ref.getName();
+ if (refName.startsWith(IBowerConstants.REFS_TAGS)) {
+ try {
+ Version version = Version.fromString(refName
+ .substring(IBowerConstants.REFS_TAGS.length()));
+ if (version.isIn(range)) {
+ refToDownload = Optional.fromNullable(ref);
+ }
+ } catch (IllegalArgumentException e) {
+ // The name of the reference is not a valid version number, no need to log this
+ }
+ }
+ }
+
+ return refToDownload;
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/utils/IBowerConstants.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/utils/IBowerConstants.java
new file mode 100644
index 0000000..1fb3942
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/api/utils/IBowerConstants.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.api.utils;
+
+/**
+ * Utility interface holding some of the constants of the plugin.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public interface IBowerConstants {
+ /**
+ * The name of the file containing the description of a bower package.
+ */
+ String BOWER_JSON = "bower.json"; //$NON-NLS-1$
+
+ /**
+ * The name of the file in which the configuration of bower can be found.
+ */
+ String BOWER_RC = ".bowerrc"; //$NON-NLS-1$
+
+ /**
+ * The name of the default folder where bower packages will be downloaded.
+ */
+ String BOWER_COMPONENTS = "bower_components"; //$NON-NLS-1$
+
+ /**
+ * The URL of the default bower server.
+ */
+ String DEFAULT_BOWER_SERVER_URL = "http://bower.herokuapp.com"; //$NON-NLS-1$
+
+ /**
+ * The path on the bower server used to see the details of a package.
+ */
+ String PACKAGES_PATH = "/packages/"; //$NON-NLS-1$
+
+ /**
+ * The Git protocol prefix.
+ */
+ String GIT_PREFIX = "git://"; //$NON-NLS-1$
+
+ /**
+ * The SSH protocol prefix.
+ */
+ String SSH_PREFIX = "ssh://"; //$NON-NLS-1$
+
+ /**
+ * The HTTP protocol prefix.
+ */
+ String HTTP_PREFIX = "http://"; //$NON-NLS-1$
+
+ /**
+ * The HTTPS protocol prefix.
+ */
+ String HTTPS_PREFIX = "https://"; //$NON-NLS-1$
+
+ /**
+ * The git extension.
+ */
+ String GIT_EXTENSION = ".git"; //$NON-NLS-1$
+
+ /**
+ * The segment separator of an URL.
+ */
+ String SEPARATOR = "/"; //$NON-NLS-1$
+
+ /**
+ * Git refs tags prefix.
+ */
+ String REFS_TAGS = "refs/tags/"; //$NON-NLS-1$
+
+ /**
+ * The identifier of this bundle.
+ */
+ String BOWER_CORE_BUNDLE_ID = "org.eclipse.wst.jsdt.bower.code"; //$NON-NLS-1$
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/BowerCoreLog.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/BowerCoreLog.java
new file mode 100644
index 0000000..ddd409a
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/BowerCoreLog.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.internal;
+
+import org.eclipse.core.runtime.ILog;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerCoreLog implements ILogger {
+ /**
+ * The Eclipse logger.
+ */
+ private ILog log;
+
+ /**
+ * The constructor.
+ *
+ * @param log
+ * The Eclipse logger of the bundle.
+ */
+ public BowerCoreLog(ILog log) {
+ this.log = log;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger#log(java.lang.String, int, java.lang.Exception)
+ */
+ @Override
+ public void log(String bundle, int severity, Exception exception) {
+ IStatus status = new Status(severity, bundle, exception.getMessage(), exception);
+ this.log.log(status);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger#log(java.lang.String, int, java.lang.String)
+ */
+ @Override
+ public void log(String bundle, int severity, String message) {
+ IStatus status = new Status(severity, bundle, message);
+ this.log.log(status);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/BowerCorePlugin.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/BowerCorePlugin.java
new file mode 100644
index 0000000..c3fbbaa
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/BowerCorePlugin.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.internal;
+
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * The activator of the Bower Core bundle.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerCorePlugin extends Plugin {
+ /**
+ * The sole instance of the activator.
+ */
+ private static BowerCorePlugin instance;
+
+ /**
+ * The constructor.
+ */
+ public BowerCorePlugin() {
+ super();
+ instance = this;
+ }
+
+ /**
+ * Returns the sole instance of the Bower IDE UI activator.
+ *
+ * @return The sole instance
+ */
+ public static final BowerCorePlugin getInstance() {
+ return instance;
+ }
+
+ /**
+ * Returns the logger.
+ *
+ * @return The logger
+ */
+ public ILogger getLogger() {
+ return new BowerCoreLog(this.getLog());
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/utils/I18n.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/utils/I18n.java
new file mode 100644
index 0000000..08764e1
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/utils/I18n.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.internal.utils;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Utility class used to retrieve the messages for internationalization.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class I18n {
+ /**
+ * The path of the resources files.
+ */
+ private static final String BUNDLE_NAME = "OSGI-INF/i18n/messages"; //$NON-NLS-1$
+
+ /**
+ * The constructor.
+ */
+ private I18n() {
+ // prevent instantiation
+ }
+
+ /**
+ * Returns the value for the given key in the given locale with the given arguments.
+ *
+ * @param key
+ * The key of the message
+ * @param arguments
+ * The arguments of the message
+ * @return The message
+ */
+ public static String getString(String key, Object... arguments) {
+ try {
+ return MessageFormat.format(ResourceBundle.getBundle(BUNDLE_NAME, Locale.getDefault()).getString(
+ key), arguments);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/utils/I18nKeys.java b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/utils/I18nKeys.java
new file mode 100644
index 0000000..b6e28c6
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.core/src/main/java/org/eclipse/wst/jsdt/bower/core/internal/utils/I18nKeys.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.core.internal.utils;
+
+/**
+ * The keys of the internationalization.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public interface I18nKeys {
+ /**
+ * Downloading {0}...
+ */
+ String DOWNLOADING_LABEL = "Downloading.Label"; //$NON-NLS-1$
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.classpath b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.classpath
new file mode 100644
index 0000000..32a9aa4
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.project b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.project
new file mode 100644
index 0000000..6616b7b
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.wst.jsdt.bower.ide.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..fb89267
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,410 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=warning
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=error
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=error
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=error
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=52
+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=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+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=1
+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=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+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.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=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+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=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=do not 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=do not 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=do not 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=false
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..03a084a
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_JSDT
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * Returns the ${bare_field_name}.\n * \n * @return The ${bare_field_name}\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * Sets the ${bare_field_name}.\n *\n * @param ${param} The ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * The constructor.\n * \n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) 2015.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * ${user} - initial API and implementation\n *******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * {@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="false" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return this.${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=false
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..fdcba94
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..52f7384
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..08cbf00
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.wst.jsdt.bower.ide.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-Localization: bundle
+Require-Bundle: org.eclipse.ui;bundle-version="3.106.0",
+ org.eclipse.core.resources;bundle-version="3.9.0",
+ org.eclipse.core.runtime;bundle-version="3.10.0",
+ org.eclipse.ui.ide;bundle-version="3.10.0"
+Import-Package: com.google.common.base;version="[15.0.0,16.0.0)",
+ com.google.common.collect;version="15.0.0",
+ com.google.gson;version="[2.2.4,3.0.0)",
+ org.eclipse.jgit.lib;version="[3.4.0,4.0.0)",
+ org.eclipse.wst.jsdt.bower.core.api;version="[1.0.0,2.0.0)",
+ org.eclipse.wst.jsdt.bower.core.api.utils;version="[1.0.0,2.0.0)",
+ org.eclipse.wst.jsdt.bower.ide.api;version="[1.0.0,2.0.0)",
+ org.eclipse.wst.jsdt.nodejs.core.api.utils;version="1.0.0"
+Bundle-Activator: org.eclipse.wst.jsdt.bower.ide.ui.internal.BowerUiPlugin
+Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/OSGI-INF/i18n/messages.properties b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/OSGI-INF/i18n/messages.properties
new file mode 100644
index 0000000..94a01e9
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/OSGI-INF/i18n/messages.properties
@@ -0,0 +1,14 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+Bower-Preferences-Description=Bower-related preferences
+Bower-Preferences-Server-Url-Label=Bower Server URL:
+
+Bower-Editor-Title=bower.json
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/about.html b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/about.html
new file mode 100644
index 0000000..4602330
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 2, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/build.properties b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/build.properties
new file mode 100644
index 0000000..9cf1ffe
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/build.properties
@@ -0,0 +1,25 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+source.. = src/main/java/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ bundle.properties,\
+ plugin.xml,\
+ OSGI-INF/,\
+ icons/
+javacProjectSettings = true
+additional.bundles = org.eclipse.wst.jsdt.bower.core,\
+ org.eclipse.wst.jsdt.bower.ide,\
+ com.google.gson,\
+ org.eclipse.jgit,\
+ com.google.guava,\
+ org.eclipse.wst.jsdt.nodejs.core
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/bundle.properties b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/bundle.properties
new file mode 100644
index 0000000..33af316
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/bundle.properties
@@ -0,0 +1,24 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+Bundle-Name = JSDT Bower User Interface
+Bundle-Vendor = Eclipse Web Tools Platform
+
+Bower-Category-Name=Bower
+Bower-Menu-Name=Bower
+
+Bower-Init-Command-Name=Bower Init
+Bower-Install-Command-Name=Bower Install
+Bower-Update-Command-Name=Bower Update
+Bower-Clear-Command-Name=Bower Clear
+
+Bower-Preferences-Page-Name=Bower
+
+Bower-Editor-Name=Bower Editor
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_128x128.png b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_128x128.png
new file mode 100644
index 0000000..dda1b64
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_128x128.png
Binary files differ
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_16x16.png b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_16x16.png
new file mode 100644
index 0000000..577da27
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_16x16.png
Binary files differ
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_256x256.png b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_256x256.png
new file mode 100644
index 0000000..44204e7
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_256x256.png
Binary files differ
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_32x32.png b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_32x32.png
new file mode 100644
index 0000000..b4d645d
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_32x32.png
Binary files differ
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_512x512.png b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_512x512.png
new file mode 100644
index 0000000..2ed647c
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_512x512.png
Binary files differ
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_64x64.png b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_64x64.png
new file mode 100644
index 0000000..d4df427
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_64x64.png
Binary files differ
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_8x8.png b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_8x8.png
new file mode 100644
index 0000000..da58d79
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/icons/bower-logo_8x8.png
Binary files differ
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/plugin.xml b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/plugin.xml
new file mode 100644
index 0000000..b7cabc9
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/plugin.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.commands">
+ <category
+ id="org.eclipse.wst.jsdt.bower.ide.ui.commands.category"
+ name="%Bower-Category-Name">
+ </category>
+ <command
+ categoryId="org.eclipse.wst.jsdt.bower.ide.ui.commands.category"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerInit"
+ name="%Bower-Init-Command-Name">
+ </command>
+ <command
+ categoryId="org.eclipse.wst.jsdt.bower.ide.ui.commands.category"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerInstall"
+ name="%Bower-Install-Command-Name">
+ </command>
+ <command
+ categoryId="org.eclipse.wst.jsdt.bower.ide.ui.commands.category"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerUpdate"
+ name="%Bower-Update-Command-Name">
+ </command>
+ <command
+ categoryId="org.eclipse.wst.jsdt.bower.ide.ui.commands.category"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerClear"
+ name="%Bower-Clear-Command-Name">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers.BowerInitHandler"
+ commandId="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerInit">
+ </handler>
+ <handler
+ class="org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers.BowerInstallHandler"
+ commandId="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerInstall">
+ </handler>
+ <handler
+ class="org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers.BowerUpdateHandler"
+ commandId="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerUpdate">
+ </handler>
+ <handler
+ class="org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers.BowerClearHandler"
+ commandId="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerClear">
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.ui.popup.any?endof=additions">
+ <menu
+ icon="icons/bower-logo_16x16.png"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.menus.bower"
+ label="%Bower-Menu-Name">
+ <command
+ commandId="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerInit"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.menus.BowerInit"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <iterate ifEmpty="false" operator="and">
+ <adapt
+ type="org.eclipse.core.resources.IContainer">
+ </adapt>
+ </iterate>
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerInstall"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.menus.BowerInstall"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <iterate ifEmpty="false" operator="and">
+ <adapt
+ type="org.eclipse.core.resources.IResource">
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.core.resources.name"
+ value="bower.json">
+ </test>
+ </adapt>
+ </iterate>
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerUpdate"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.menus.BowerUpdare"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <iterate ifEmpty="false" operator="and">
+ <adapt
+ type="org.eclipse.core.resources.IResource">
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.core.resources.name"
+ value="bower.json">
+ </test>
+ </adapt>
+ </iterate>
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.wst.jsdt.bower.ide.ui.commands.BowerClear"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.menus.BowerClear"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <iterate ifEmpty="false" operator="and">
+ <adapt
+ type="org.eclipse.core.resources.IResource">
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.core.resources.name"
+ value="bower.json">
+ </test>
+ </adapt>
+ </iterate>
+ </visibleWhen>
+ </command>
+ </menu>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.wst.jsdt.bower.ide.ui.internal.preferences.BowerPreferencesPage"
+ id="org.eclipse.wst.jsdt.bower.ide.ui.internal.preferences.BowerPreferencesPage"
+ name="%Bower-Preferences-Page-Name">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.wst.jsdt.bower.ide.ui.internal.preferences.PreferenceInitializer">
+ </initializer>
+ </extension>
+</plugin>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/pom.xml b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/pom.xml
new file mode 100644
index 0000000..c4cf0e6
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 2014 Eclipse Foundation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Distribution License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/org/documents/edl-v10.php
+
+ Contributors:
+ Thanh Ha (Eclipse Foundation) - initial implementation
+ Mickael Istria (Red Hat Inc.) - 425796 intermediary pom for factorization
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.webtools.jsdt</groupId>
+ <artifactId>bundles</artifactId>
+ <version>3.6.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.webtools.jsdt.bundles</groupId>
+ <artifactId>org.eclipse.wst.jsdt.bower.ide.ui</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/BowerUiLog.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/BowerUiLog.java
new file mode 100644
index 0000000..216889d
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/BowerUiLog.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal;
+
+import org.eclipse.core.runtime.ILog;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerUiLog implements ILogger {
+ /**
+ * The Eclipse logger.
+ */
+ private ILog log;
+
+ /**
+ * The constructor.
+ *
+ * @param log
+ * The Eclipse logger of the bundle.
+ */
+ public BowerUiLog(ILog log) {
+ this.log = log;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger#log(java.lang.String, int, java.lang.Exception)
+ */
+ @Override
+ public void log(String bundle, int severity, Exception exception) {
+ IStatus status = new Status(severity, bundle, exception.getMessage(), exception);
+ this.log.log(status);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger#log(java.lang.String, int, java.lang.String)
+ */
+ @Override
+ public void log(String bundle, int severity, String message) {
+ IStatus status = new Status(severity, bundle, message);
+ this.log.log(status);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/BowerUiPlugin.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/BowerUiPlugin.java
new file mode 100644
index 0000000..e0ab57f
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/BowerUiPlugin.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * The activator of the Bower IDE UI bundle.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerUiPlugin extends AbstractUIPlugin {
+ /**
+ * The sole instance of the activator.
+ */
+ private static BowerUiPlugin instance;
+
+ /**
+ * The constructor.
+ */
+ public BowerUiPlugin() {
+ super();
+ instance = this;
+ }
+
+ /**
+ * Returns the sole instance of the Bower IDE UI activator.
+ *
+ * @return The sole instance
+ */
+ public static final BowerUiPlugin getInstance() {
+ return instance;
+ }
+
+ /**
+ * Returns the logger.
+ *
+ * @return The logger
+ */
+ public ILogger getLogger() {
+ return new BowerUiLog(this.getLog());
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/AbstractBowerHandler.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/AbstractBowerHandler.java
new file mode 100644
index 0000000..5892f81
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/AbstractBowerHandler.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers;
+
+import com.google.common.base.Optional;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+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.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.wst.jsdt.bower.core.api.BowerJson;
+import org.eclipse.wst.jsdt.bower.core.api.BowerRc;
+import org.eclipse.wst.jsdt.bower.core.api.BowerReaders;
+import org.eclipse.wst.jsdt.bower.core.api.utils.IBowerConstants;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.BowerUiPlugin;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.utils.IBowerIdeUiConstants;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * Common superclass of the handlers that need the content of the bower.json file.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public abstract class AbstractBowerHandler extends AbstractHandler {
+
+ /**
+ * The logger.
+ */
+ protected ILogger logger = BowerUiPlugin.getInstance().getLogger();
+
+ /**
+ * The content of bower.json.
+ */
+ private Optional<BowerJson> bowerJson = Optional.absent();
+
+ /**
+ * The content of .bowerrc.
+ */
+ private Optional<BowerRc> bowerRc = Optional.absent();
+
+ /**
+ * The output directory.
+ */
+ private IFolder outputDirectory;
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService()
+ .getSelection();
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection iStructuredSelection = (IStructuredSelection)selection;
+ Object firstElement = iStructuredSelection.getFirstElement();
+ if (firstElement instanceof IFile
+ && IBowerConstants.BOWER_JSON.equals(((IFile)firstElement).getName())
+ && ((IFile)firstElement).exists()) {
+ final IFile bowerJsonFile = (IFile)firstElement;
+ IFile bowerRcFile = bowerJsonFile.getParent().getFile(new Path(IBowerConstants.BOWER_RC));
+
+ try {
+ String directory = IBowerConstants.BOWER_COMPONENTS;
+
+ this.bowerJson = Optional.fromNullable(BowerReaders.getBowerJson(bowerJsonFile
+ .getContents(), logger));
+ if (bowerRcFile.exists()) {
+ this.bowerRc = Optional.fromNullable(BowerReaders.getBowerRc(bowerRcFile
+ .getContents(), logger));
+ }
+
+ if (this.bowerRc.isPresent()) {
+ directory = this.bowerRc.get().getDirectory();
+ }
+
+ this.outputDirectory = bowerJsonFile.getParent().getFolder(new Path(directory));
+ } catch (CoreException e) {
+ logger.log(IBowerIdeUiConstants.BOWER_IDE_UI_BUNDLE_ID, ILogger.ERROR, e);
+ }
+
+ try {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().run(true, true,
+ this.getRunnable(bowerJsonFile.getProject()));
+
+ } catch (InvocationTargetException e) {
+ logger.log(IBowerIdeUiConstants.BOWER_IDE_UI_BUNDLE_ID, ILogger.ERROR, e);
+ } catch (InterruptedException e) {
+ logger.log(IBowerIdeUiConstants.BOWER_IDE_UI_BUNDLE_ID, ILogger.ERROR, e);
+ } finally {
+ try {
+ bowerJsonFile.getProject().refreshLocal(IResource.DEPTH_INFINITE,
+ new NullProgressMonitor());
+ } catch (CoreException e) {
+ logger.log(IBowerIdeUiConstants.BOWER_IDE_UI_BUNDLE_ID, ILogger.ERROR, e);
+ }
+ }
+ }
+
+ }
+ return null;
+ }
+
+ /**
+ * Returns the runnable which will realize the operation.
+ *
+ * @param project
+ * The project on which this runnable will work
+ * @return The runnable which will realize the operation
+ */
+ private IRunnableWithProgress getRunnable(final IProject project) {
+ WorkspaceModifyOperation workspaceModifyOperation = new WorkspaceModifyOperation() {
+
+ @Override
+ protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException,
+ InterruptedException {
+ AbstractBowerHandler.this.doExecute(monitor);
+ }
+
+ @Override
+ public ISchedulingRule getRule() {
+ return project;
+ }
+ };
+ return workspaceModifyOperation;
+ }
+
+ /**
+ * Execute the operation.
+ *
+ * @param monitor
+ * The progress monitor
+ */
+ protected abstract void doExecute(IProgressMonitor monitor);
+
+ /**
+ * Returns the bowerJson.
+ *
+ * @return The bowerJson
+ */
+ public Optional<BowerJson> getBowerJson() {
+ return this.bowerJson;
+ }
+
+ /**
+ * Returns the bowerRc.
+ *
+ * @return The bowerRc
+ */
+ public Optional<BowerRc> getBowerRc() {
+ return this.bowerRc;
+ }
+
+ /**
+ * Returns the outputDirectory.
+ *
+ * @return The outputDirectory
+ */
+ public IFolder getOutputDirectory() {
+ return this.outputDirectory;
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerClearHandler.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerClearHandler.java
new file mode 100644
index 0000000..784f766
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerClearHandler.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers;
+
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.utils.IBowerIdeUiConstants;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * This handler will clear the content of the bower install folder.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerClearHandler extends AbstractBowerHandler {
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers.AbstractBowerHandler#doExecute(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected void doExecute(IProgressMonitor monitor) {
+ if (this.getBowerJson().isPresent()) {
+ IFolder outputDirectory = this.getOutputDirectory();
+ if (outputDirectory != null && outputDirectory.exists()) {
+ try {
+ outputDirectory.delete(true, monitor);
+ } catch (CoreException e) {
+ logger.log(IBowerIdeUiConstants.BOWER_IDE_UI_BUNDLE_ID, ILogger.ERROR, e);
+ }
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerInitHandler.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerInitHandler.java
new file mode 100644
index 0000000..e21a6fb
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerInitHandler.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers;
+
+import com.google.common.collect.Maps;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.wst.jsdt.bower.core.api.BowerJson;
+import org.eclipse.wst.jsdt.bower.core.api.BowerRc;
+import org.eclipse.wst.jsdt.bower.core.api.utils.IBowerConstants;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.BowerUiPlugin;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.utils.IBowerIdeUiConstants;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * This handler will initialize the files bower.json and .bowerrc.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerInitHandler extends AbstractHandler {
+ /**
+ * The logger.
+ */
+ protected ILogger logger = BowerUiPlugin.getInstance().getLogger();
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService()
+ .getSelection();
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection iStructuredSelection = (IStructuredSelection)selection;
+ Object firstElement = iStructuredSelection.getFirstElement();
+ if (firstElement instanceof IContainer) {
+ IContainer container = (IContainer)firstElement;
+ try {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().run(false, true,
+ this.getRunnable(container));
+
+ } catch (InvocationTargetException e) {
+ logger.log(IBowerIdeUiConstants.BOWER_IDE_UI_BUNDLE_ID, ILogger.ERROR, e);
+ } catch (InterruptedException e) {
+ logger.log(IBowerIdeUiConstants.BOWER_IDE_UI_BUNDLE_ID, ILogger.ERROR, e);
+ } finally {
+ try {
+ container.getProject().refreshLocal(IResource.DEPTH_INFINITE,
+ new NullProgressMonitor());
+ } catch (CoreException e) {
+ logger.log(IBowerIdeUiConstants.BOWER_IDE_UI_BUNDLE_ID, ILogger.ERROR, e);
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the runnable which will realize the operation.
+ *
+ * @param container
+ * The container in which we will create the file bower.json
+ * @return The runnable which will realize the operation
+ */
+ private IRunnableWithProgress getRunnable(final IContainer container) {
+ WorkspaceModifyOperation workspaceModifyOperation = new WorkspaceModifyOperation() {
+
+ @Override
+ protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException,
+ InterruptedException {
+ IFile bowerJsonFile = container.getFile(new Path(IBowerConstants.BOWER_JSON));
+ Gson gson = new GsonBuilder().setPrettyPrinting().create();
+ if (!bowerJsonFile.exists()) {
+ BowerJson bowerJson = new BowerJson();
+ bowerJson.setName(bowerJsonFile.getProject().getName());
+ bowerJson.setVersion("0.0.1"); //$NON-NLS-1$
+ bowerJson.setPrivate(true);
+ bowerJson.setDependencies(Maps.<String, String> newHashMap());
+ bowerJson.setDevDependencies(Maps.<String, String> newHashMap());
+
+ byte[] bytes = gson.toJson(bowerJson).getBytes();
+ InputStream inputStream = new ByteArrayInputStream(bytes);
+ bowerJsonFile.create(inputStream, true, monitor);
+ }
+
+ IFile bowerRcFile = container.getFile(new Path(IBowerConstants.BOWER_RC));
+ if (!bowerRcFile.exists()) {
+ BowerRc bowerRc = new BowerRc();
+ bowerRc.setDirectory(IBowerConstants.BOWER_COMPONENTS);
+ byte[] bytes = gson.toJson(bowerRc).getBytes();
+ InputStream inputStream = new ByteArrayInputStream(bytes);
+ bowerRcFile.create(inputStream, true, monitor);
+ }
+
+ if (bowerJsonFile.exists()) {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage();
+ IDE.openEditor(page, bowerJsonFile);
+ }
+ }
+
+ @Override
+ public ISchedulingRule getRule() {
+ return container.getProject();
+ }
+ };
+ return workspaceModifyOperation;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerInstallHandler.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerInstallHandler.java
new file mode 100644
index 0000000..c681a7f
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerInstallHandler.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers;
+
+import java.io.File;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.wst.jsdt.bower.core.api.Bower;
+import org.eclipse.wst.jsdt.bower.core.api.BowerJson;
+import org.eclipse.wst.jsdt.bower.ide.api.EclipseGitProgressTransformer;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.BowerUiPlugin;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.preferences.IPreferenceConstants;
+
+/**
+ * This handler will install all the bower dependencies of the currently selected bower.json file.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerInstallHandler extends AbstractBowerHandler {
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers.AbstractBowerHandler#doExecute(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected void doExecute(IProgressMonitor monitor) {
+ if (this.getBowerJson().isPresent()) {
+ BowerJson bowerJson = this.getBowerJson().get();
+ File outputDirectory = this.getOutputDirectory().getLocation().toFile();
+
+ String serverUrl = BowerUiPlugin.getInstance().getPreferenceStore().getString(
+ IPreferenceConstants.BOWER_SERVER_URL);
+
+ Bower.install().setMonitor(new EclipseGitProgressTransformer(monitor)).setOutputDirectory(
+ outputDirectory).setBowerJson(bowerJson).setBowerServerURL(serverUrl).call();
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerUpdateHandler.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerUpdateHandler.java
new file mode 100644
index 0000000..e3a486f
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/handlers/BowerUpdateHandler.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers;
+
+import java.io.File;
+
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.wst.jsdt.bower.core.api.Bower;
+import org.eclipse.wst.jsdt.bower.core.api.BowerJson;
+import org.eclipse.wst.jsdt.bower.ide.api.EclipseGitProgressTransformer;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.BowerUiPlugin;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.preferences.IPreferenceConstants;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.utils.IBowerIdeUiConstants;
+import org.eclipse.wst.jsdt.nodejs.core.api.utils.ILogger;
+
+/**
+ * This handler will update the bower dependencies of the project.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class BowerUpdateHandler extends AbstractBowerHandler {
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.wst.jsdt.bower.ide.ui.internal.handlers.AbstractBowerHandler#doExecute(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected void doExecute(IProgressMonitor monitor) {
+ if (this.getBowerJson().isPresent()) {
+ IFolder outputDirectory = this.getOutputDirectory();
+ if (outputDirectory != null && outputDirectory.exists()) {
+ try {
+ outputDirectory.delete(true, monitor);
+ } catch (CoreException e) {
+ logger.log(IBowerIdeUiConstants.BOWER_IDE_UI_BUNDLE_ID, ILogger.ERROR, e);
+ }
+
+ BowerJson bowerJson = this.getBowerJson().get();
+ File directory = outputDirectory.getLocation().toFile();
+
+ String serverUrl = BowerUiPlugin.getInstance().getPreferenceStore().getString(
+ IPreferenceConstants.BOWER_SERVER_URL);
+
+ Bower.install().setMonitor(new EclipseGitProgressTransformer(monitor)).setOutputDirectory(
+ directory).setBowerJson(bowerJson).setBowerServerURL(serverUrl).call();
+ }
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/preferences/BowerPreferencesPage.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/preferences/BowerPreferencesPage.java
new file mode 100644
index 0000000..313f4fd
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/preferences/BowerPreferencesPage.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.preferences;
+
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.BowerUiPlugin;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.utils.I18n;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.utils.I18nKeys;
+
+/**
+ * This class represents a preference page that is contributed to the Preferences dialog. By subclassing
+ * <samp>FieldEditorPreferencePage</samp>, we can use the field support built into JFace that allows us to
+ * create a page that is small and knows how to save, restore and apply itself.
+ * <p>
+ * This page is used to modify preferences only. They are stored in the preference store that belongs to the
+ * main plug-in class. That way, preferences can be accessed directly via the preference store.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+
+public class BowerPreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+
+ /**
+ * The constructor.
+ */
+ public BowerPreferencesPage() {
+ super(GRID);
+ this.setPreferenceStore(BowerUiPlugin.getInstance().getPreferenceStore());
+ this.setDescription(I18n.getString(I18nKeys.BOWER_PREFERENCES_DESCRIPTION));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+ */
+ @Override
+ public void init(IWorkbench workbench) {
+ // do nothing
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
+ */
+ @Override
+ public void createFieldEditors() {
+ addField(new StringFieldEditor(IPreferenceConstants.BOWER_SERVER_URL, I18n
+ .getString(I18nKeys.BOWER_PREFERENCES_SERVER_URL_LABEL), getFieldEditorParent()));
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/preferences/IPreferenceConstants.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/preferences/IPreferenceConstants.java
new file mode 100644
index 0000000..44b1b64
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/preferences/IPreferenceConstants.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.preferences;
+
+/**
+ * Constant definitions for plug-in preferences.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public interface IPreferenceConstants {
+
+ /**
+ * The key used to identify the preference containing the URL of the Bower server to use.
+ */
+ String BOWER_SERVER_URL = "bowerServerUrl"; //$NON-NLS-1$
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/preferences/PreferenceInitializer.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/preferences/PreferenceInitializer.java
new file mode 100644
index 0000000..8f7dcad
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/preferences/PreferenceInitializer.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.wst.jsdt.bower.core.api.utils.IBowerConstants;
+import org.eclipse.wst.jsdt.bower.ide.ui.internal.BowerUiPlugin;
+
+/**
+ * Class used to initialize default preference values.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
+ */
+ @Override
+ public void initializeDefaultPreferences() {
+ IPreferenceStore store = BowerUiPlugin.getInstance().getPreferenceStore();
+ store.setDefault(IPreferenceConstants.BOWER_SERVER_URL, IBowerConstants.DEFAULT_BOWER_SERVER_URL);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/utils/I18n.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/utils/I18n.java
new file mode 100644
index 0000000..6f99032
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/utils/I18n.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.utils;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Utility class for internationalization.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class I18n {
+ /**
+ * The path of the resources files.
+ */
+ private static final String BUNDLE_NAME = "OSGI-INF/i18n/messages"; //$NON-NLS-1$
+
+ /**
+ * The constructor.
+ */
+ private I18n() {
+ // prevent instantiation
+ }
+
+ /**
+ * Returns the value for the given key in the given locale with the given arguments.
+ *
+ * @param key
+ * The key of the message
+ * @param arguments
+ * The arguments of the message
+ * @return The message
+ */
+ public static String getString(String key, Object... arguments) {
+ try {
+ return MessageFormat.format(ResourceBundle.getBundle(BUNDLE_NAME, Locale.getDefault()).getString(
+ key), arguments);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/utils/I18nKeys.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/utils/I18nKeys.java
new file mode 100644
index 0000000..aa0a41d
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/utils/I18nKeys.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.utils;
+
+/**
+ * Utility interface holding the keys used by the internationalization.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public interface I18nKeys {
+ /**
+ * Bower-related preferences.
+ */
+ String BOWER_PREFERENCES_DESCRIPTION = "Bower-Preferences-Description"; //$NON-NLS-1$
+
+ /**
+ * Bower server URL:.
+ */
+ String BOWER_PREFERENCES_SERVER_URL_LABEL = "Bower-Preferences-Server-Url-Label"; //$NON-NLS-1$
+
+ /**
+ * bower.json.
+ */
+ String BOWER_EDITOR_TITLE = "Bower-Editor-Title"; //$NON-NLS-1$
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/utils/IBowerIdeUiConstants.java b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/utils/IBowerIdeUiConstants.java
new file mode 100644
index 0000000..13cbd76
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide.ui/src/main/java/org/eclipse/wst/jsdt/bower/ide/ui/internal/utils/IBowerIdeUiConstants.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.ui.internal.utils;
+
+/**
+ * Utility interface used to store some constants.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public interface IBowerIdeUiConstants {
+ /**
+ * The identifier of this bundle.
+ */
+ String BOWER_IDE_UI_BUNDLE_ID = "org.eclipse.wst.jsdt.bower.ide.ui"; //$NON-NLS-1$
+}
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.checkstyle b/bundles/org.eclipse.wst.jsdt.bower.ide/.checkstyle
new file mode 100644
index 0000000..75246d3
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.checkstyle
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+ <fileset name="all" enabled="true" check-config-name="Sun Checks" local="false">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+</fileset-config>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.classpath b/bundles/org.eclipse.wst.jsdt.bower.ide/.classpath
new file mode 100644
index 0000000..32a9aa4
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.project b/bundles/org.eclipse.wst.jsdt.bower.ide/.project
new file mode 100644
index 0000000..b44a008
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.wst.jsdt.bower.ide</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..fb89267
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,410 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=warning
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=error
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=error
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=error
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=52
+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=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+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=1
+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=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+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.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=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+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=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=do not 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=do not 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=do not 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=false
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..03a084a
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_JSDT
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * Returns the ${bare_field_name}.\n * \n * @return The ${bare_field_name}\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * Sets the ${bare_field_name}.\n *\n * @param ${param} The ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * The constructor.\n * \n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) 2015.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * ${user} - initial API and implementation\n *******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * {@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="false" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return this.${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=false
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..fdcba94
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..52f7384
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.jsdt.bower.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a0bf173
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.wst.jsdt.bower.ide
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-Localization: bundle
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.10.0"
+Export-Package: org.eclipse.wst.jsdt.bower.ide.api;version="1.0.0"
+Import-Package: org.eclipse.jgit.lib;version="[3.4.0,4.0.0)"
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/about.html b/bundles/org.eclipse.wst.jsdt.bower.ide/about.html
new file mode 100644
index 0000000..4602330
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 2, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/build.properties b/bundles/org.eclipse.wst.jsdt.bower.ide/build.properties
new file mode 100644
index 0000000..e2fba6a
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/build.properties
@@ -0,0 +1,18 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+source.. = src/main/java/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ bundle.properties
+javacProjectSettings = true
+additional.bundles = org.eclipse.jgit
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/bundle.properties b/bundles/org.eclipse.wst.jsdt.bower.ide/bundle.properties
new file mode 100644
index 0000000..3fd8dfb
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/bundle.properties
@@ -0,0 +1,12 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+Bundle-Name = JSDT Bower IDE
+Bundle-Vendor = Eclipse Web Tools Platform
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/pom.xml b/bundles/org.eclipse.wst.jsdt.bower.ide/pom.xml
new file mode 100644
index 0000000..8413e49
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 2014 Eclipse Foundation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Distribution License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/org/documents/edl-v10.php
+
+ Contributors:
+ Thanh Ha (Eclipse Foundation) - initial implementation
+ Mickael Istria (Red Hat Inc.) - 425796 intermediary pom for factorization
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.webtools.jsdt</groupId>
+ <artifactId>bundles</artifactId>
+ <version>3.6.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.webtools.jsdt.bundles</groupId>
+ <artifactId>org.eclipse.wst.jsdt.bower.ide</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/bundles/org.eclipse.wst.jsdt.bower.ide/src/main/java/org/eclipse/wst/jsdt/bower/ide/api/EclipseGitProgressTransformer.java b/bundles/org.eclipse.wst.jsdt.bower.ide/src/main/java/org/eclipse/wst/jsdt/bower/ide/api/EclipseGitProgressTransformer.java
new file mode 100644
index 0000000..cb97c74
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.bower.ide/src/main/java/org/eclipse/wst/jsdt/bower/ide/api/EclipseGitProgressTransformer.java
@@ -0,0 +1,175 @@
+/*******************************************************************************
+ * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
+ *
+ * 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
+ *
+ * Contributors:
+ * Shawn O. Pearce - initial API and implementation
+ * Obeo - Checkstyle
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.bower.ide.api;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.jgit.lib.ProgressMonitor;
+
+/**
+ * An EGit to Eclipse progress monitor.
+ *
+ * @author <a href="mailto:spearce@spearce.org">Shawn O. Pearce</a>
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class EclipseGitProgressTransformer implements ProgressMonitor {
+ /**
+ * Empty string.
+ */
+ private static final String EMPTY_STRING = ""; //$NON-NLS-1$
+
+ /**
+ * The original progress monitor.
+ */
+ private final IProgressMonitor root;
+
+ /**
+ * The progress monitor of the subtasks.
+ */
+ private IProgressMonitor task;
+
+ /**
+ * The message.
+ */
+ private String message;
+
+ /**
+ * The last worked.
+ */
+ private int lastWorked;
+
+ /**
+ * The total work.
+ */
+ private int totalWork;
+
+ /**
+ * Create a new progress monitor.
+ *
+ * @param eclipseMonitor
+ * the Eclipse monitor we update.
+ */
+ public EclipseGitProgressTransformer(final IProgressMonitor eclipseMonitor) {
+ root = eclipseMonitor;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jgit.lib.ProgressMonitor#start(int)
+ */
+ @Override
+ public void start(final int totalTasks) {
+ root.beginTask(EMPTY_STRING, totalTasks * 1000);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jgit.lib.ProgressMonitor#beginTask(java.lang.String, int)
+ */
+ @Override
+ public void beginTask(final String name, final int total) {
+ endTask();
+ message = name;
+ lastWorked = 0;
+ totalWork = total;
+ task = new SubProgressMonitor(root, 1000);
+ if (totalWork == UNKNOWN) {
+ task.beginTask(EMPTY_STRING, IProgressMonitor.UNKNOWN);
+ } else {
+ task.beginTask(EMPTY_STRING, totalWork);
+ }
+ task.subTask(message);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jgit.lib.ProgressMonitor#update(int)
+ */
+ @Override
+ public void update(final int work) {
+ if (task == null) {
+ return;
+ }
+
+ final int cmp = lastWorked + work;
+ if (totalWork == UNKNOWN && cmp > 0) {
+ if (lastWorked != cmp) {
+ task.subTask(message + ", " + cmp); //$NON-NLS-1$
+ }
+ } else if (totalWork <= 0) {
+ // Do nothing to update the task.
+ } else if (cmp * 100 / totalWork != lastWorked * 100 / totalWork) {
+ final StringBuilder m = new StringBuilder();
+ m.append(message);
+ m.append(": "); //$NON-NLS-1$
+ while (m.length() < 25) {
+ m.append(' ');
+ }
+
+ final String twstr = String.valueOf(totalWork);
+ String cmpstr = String.valueOf(cmp);
+ while (cmpstr.length() < twstr.length()) {
+ cmpstr = " " + cmpstr; //$NON-NLS-1$
+ }
+ final int pcnt = cmp * 100 / totalWork;
+ if (pcnt < 100) {
+ m.append(' ');
+ }
+ if (pcnt < 10) {
+ m.append(' ');
+ }
+ m.append(pcnt);
+ m.append("% ("); //$NON-NLS-1$
+ m.append(cmpstr);
+ m.append("/"); //$NON-NLS-1$
+ m.append(twstr);
+ m.append(")"); //$NON-NLS-1$
+
+ task.subTask(m.toString());
+ }
+ lastWorked = cmp;
+ task.worked(work);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jgit.lib.ProgressMonitor#endTask()
+ */
+ @Override
+ public void endTask() {
+ if (task != null) {
+ try {
+ task.done();
+ } finally {
+ task = null;
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jgit.lib.ProgressMonitor#isCancelled()
+ */
+ @Override
+ public boolean isCancelled() {
+ if (task != null) {
+ return task.isCanceled();
+ }
+ return root.isCanceled();
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.classpath b/bundles/org.eclipse.wst.jsdt.nodejs.core/.classpath
new file mode 100644
index 0000000..32a9aa4
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.project b/bundles/org.eclipse.wst.jsdt.nodejs.core/.project
new file mode 100644
index 0000000..71e9ffc
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.wst.jsdt.nodejs.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..fb89267
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,410 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=warning
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=error
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=error
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=error
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=52
+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=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+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=1
+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=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+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.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=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+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=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=do not 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=do not 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=do not 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=false
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..03a084a
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_JSDT
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * Returns the ${bare_field_name}.\n * \n * @return The ${bare_field_name}\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * Sets the ${bare_field_name}.\n *\n * @param ${param} The ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * The constructor.\n * \n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) 2015.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * ${user} - initial API and implementation\n *******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * {@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="false" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return this.${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=false
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..fdcba94
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..52f7384
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.jsdt.nodejs.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6d05edf
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.wst.jsdt.nodejs.core
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.wst.jsdt.nodejs.core.api.semver;version="1.0.0",
+ org.eclipse.wst.jsdt.nodejs.core.api.utils;version="1.0.0"
+Bundle-Localization: bundle
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/about.html b/bundles/org.eclipse.wst.jsdt.nodejs.core/about.html
new file mode 100644
index 0000000..4602330
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 2, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/build.properties b/bundles/org.eclipse.wst.jsdt.nodejs.core/build.properties
new file mode 100644
index 0000000..60536e8
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/build.properties
@@ -0,0 +1,16 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+source.. = src/main/java/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ bundle.properties
+javacProjectSettings = true
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/bundle.properties b/bundles/org.eclipse.wst.jsdt.nodejs.core/bundle.properties
new file mode 100644
index 0000000..77b6156
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/bundle.properties
@@ -0,0 +1,12 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+Bundle-Name = JSDT NodeJS Core
+Bundle-Vendor = Eclipse Web Tools Platform
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/pom.xml b/bundles/org.eclipse.wst.jsdt.nodejs.core/pom.xml
new file mode 100644
index 0000000..30acb55
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 2014 Eclipse Foundation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Distribution License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/org/documents/edl-v10.php
+
+ Contributors:
+ Thanh Ha (Eclipse Foundation) - initial implementation
+ Mickael Istria (Red Hat Inc.) - 425796 intermediary pom for factorization
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.webtools.jsdt</groupId>
+ <artifactId>bundles</artifactId>
+ <version>3.6.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.webtools.jsdt.bundles</groupId>
+ <artifactId>org.eclipse.wst.jsdt.nodejs.core</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Range.java b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Range.java
new file mode 100755
index 0000000..ee21abf
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Range.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.api.semver;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.wst.jsdt.nodejs.core.internal.semver.ConstraintKind;
+import org.eclipse.wst.jsdt.nodejs.core.internal.semver.VersionedConstraint;
+
+/**
+ * A range is created from an expression describing a set of versions to use.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class Range {
+
+ /**
+ * The array of all the constraints to consider for the creation of a range. /!\ Warning the order of the
+ * values in this array matters!!! /!\.
+ */
+ private static final ConstraintKind[] constraintKinds = new ConstraintKind[] {
+ ConstraintKind.GREATER_THAN_OR_EQUALS_TO, ConstraintKind.GREATER_THAN, ConstraintKind.EQUALS_TO,
+ ConstraintKind.LOWER_THAN_OR_EQUALS_TO, ConstraintKind.LOWER_THAN };
+
+ /**
+ * The list of constraints of the range.
+ */
+ private List<VersionedConstraint> constraints = new ArrayList<VersionedConstraint>();
+
+ /**
+ * Adds the versioned constraint to the range.
+ *
+ * @param versionedConstraint
+ * The versioned constraint
+ */
+ private void addVersionedConstraint(VersionedConstraint versionedConstraint) {
+ this.constraints.add(versionedConstraint);
+ }
+
+ /**
+ * Returns the constraints.
+ *
+ * @return The constraints
+ */
+ public List<VersionedConstraint> getConstraints() {
+ return this.constraints;
+ }
+
+ /**
+ * Create a range from the given expression.
+ *
+ * @param rangeExpression
+ * @return The range
+ */
+ public static Range fromString(String rangeExpression) {
+ Range range = new Range();
+
+ StringTokenizer tokenizer = new StringTokenizer(rangeExpression);
+ while (tokenizer.hasMoreTokens()) {
+ String nextToken = tokenizer.nextToken();
+ nextToken = nextToken.trim();
+
+ for (ConstraintKind constraintKind : Range.constraintKinds) {
+ if (nextToken.startsWith(constraintKind.getLabel())) {
+ Version version = Version.fromString(nextToken.substring(constraintKind.getLabel()
+ .length()));
+ range.addVersionedConstraint(new VersionedConstraint(version, constraintKind));
+ break;
+ }
+ }
+ }
+
+ return range;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Version.java b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Version.java
new file mode 100755
index 0000000..064803c
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Version.java
@@ -0,0 +1,328 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.api.semver;
+
+import java.util.List;
+
+import org.eclipse.wst.jsdt.nodejs.core.internal.semver.VersionedConstraint;
+
+/**
+ * The version number contains four different parts: Major, Minor, Patch and the Qualifier.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class Version implements Comparable<Version> {
+ /**
+ * The optional prefix of a version number.
+ */
+ private static final String V = "v"; //$NON-NLS-1$
+
+ /**
+ * The dot is used to separate the major and minor version numbers and the minor and patch version number.
+ */
+ private static final String DOT = "."; //$NON-NLS-1$
+
+ /**
+ * The dash is used to separate the first parts of the version number and the qualifier.
+ */
+ private static final String DASH = "-"; //$NON-NLS-1$
+
+ /**
+ * The plus is used to separate the first parts of the version number and the build.
+ */
+ private static final String PLUS = "+"; //$NON-NLS-1$
+
+ /**
+ * The major version number should be incremented when you make an incompatible API change.
+ */
+ private int major;
+
+ /**
+ * The minor version number should be incremented when you add a new functionality in a
+ * backward-compatible manner.
+ */
+ private int minor;
+
+ /**
+ * The patch version number should be incremented when you realize backward-compatible bug fixes.
+ */
+ private int patch;
+
+ /**
+ * The qualifier holds additional information regarding the version.
+ */
+ private String qualifier = ""; //$NON-NLS-1$
+
+ /**
+ * The build holds the unique identifier of a build.
+ */
+ private String build = ""; //$NON-NLS-1$
+
+ /**
+ * Sets the major version number.
+ *
+ * @param major
+ * The major version number
+ */
+ private void setMajor(int major) {
+ this.major = major;
+ }
+
+ /**
+ * Sets the minor version number.
+ *
+ * @param minor
+ * The minor version number
+ */
+ private void setMinor(int minor) {
+ this.minor = minor;
+ }
+
+ /**
+ * Sets the patch version number.
+ *
+ * @param patch
+ * The patch version number
+ */
+ private void setPatch(int patch) {
+ this.patch = patch;
+ }
+
+ /**
+ * Sets the qualifier of the version number.
+ *
+ * @param qualifier
+ * The qualifier
+ */
+ private void setQualifier(String qualifier) {
+ this.qualifier = qualifier;
+ }
+
+ /**
+ * Sets the build of the version number.
+ *
+ * @param build
+ * The build
+ */
+ private void setBuild(String build) {
+ this.build = build;
+ }
+
+ /**
+ * Creates a new version number from the given string.
+ *
+ * @param version
+ * The string representation of the version number
+ * @return The version
+ */
+ public static Version fromString(String version) {
+ // trim
+ String trimmedVersion = version;
+ trimmedVersion = trimmedVersion.trim();
+
+ // remove "v" prefix
+ if (trimmedVersion.startsWith(V) || trimmedVersion.startsWith(V.toUpperCase())) {
+ trimmedVersion = trimmedVersion.substring(V.length());
+ }
+
+ // capture the build
+ String build = ""; //$NON-NLS-1$
+ int indexOfBuildSeparator = trimmedVersion.indexOf(PLUS);
+ if (indexOfBuildSeparator != -1) {
+ build = trimmedVersion.substring(indexOfBuildSeparator + PLUS.length());
+ trimmedVersion = trimmedVersion.substring(0, indexOfBuildSeparator);
+ }
+
+ // capture the qualifier
+ String qualifier = ""; //$NON-NLS-1$
+ int indexOfQualifierSeparator = trimmedVersion.indexOf(DASH);
+ if (indexOfQualifierSeparator != -1) {
+ qualifier = trimmedVersion.substring(indexOfQualifierSeparator + DASH.length());
+ trimmedVersion = trimmedVersion.substring(0, indexOfQualifierSeparator);
+ }
+
+ Version result = null;
+
+ try {
+ int indexOfMajorMinorSeparator = trimmedVersion.indexOf(DOT);
+ if (indexOfMajorMinorSeparator == -1) {
+ int major = Version.getInt(trimmedVersion, 0, trimmedVersion.length());
+
+ // valid version number, ie: v3
+ result = new Version();
+ result.setMajor(major);
+ } else {
+ int indexOfMinorPatchSeparator = trimmedVersion.indexOf(DOT, indexOfMajorMinorSeparator + 1);
+ int major = Version.getInt(trimmedVersion, 0, indexOfMajorMinorSeparator);
+
+ // valid version number, ie: v3.
+ result = new Version();
+ result.setMajor(major);
+
+ if (indexOfMinorPatchSeparator == -1) {
+
+ int minor = Version.getInt(trimmedVersion, indexOfMajorMinorSeparator + 1, trimmedVersion
+ .length());
+
+ // valid version number, ie: v3.14
+ result.setMinor(minor);
+ } else {
+ int minor = Version.getInt(trimmedVersion, indexOfMajorMinorSeparator + 1,
+ indexOfMinorPatchSeparator);
+
+ // valid version number, ie: v3.14.xyz
+ result.setMinor(minor);
+
+ int patch = Version.getInt(trimmedVersion, indexOfMinorPatchSeparator + 1, trimmedVersion
+ .length());
+ result.setPatch(patch);
+ }
+ }
+ } catch (NumberFormatException e) {
+ // catch every parsing related exceptions
+ throw new IllegalArgumentException(version);
+ }
+
+ result.setQualifier(qualifier);
+ result.setBuild(build);
+
+ return result;
+ }
+
+ /**
+ * Returns the int value located between the start index and the end index from the given string.
+ *
+ * @param string
+ * The string
+ * @param start
+ * The start index
+ * @param end
+ * The end index
+ * @return The int value parsed
+ */
+ private static int getInt(String string, int start, int end) {
+ int intValue = Integer.parseInt(string.substring(start, end));
+ if (intValue >= 0) {
+ return intValue;
+ }
+ throw new NumberFormatException();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(Version otherVersion) {
+ int result = 0;
+ if (otherVersion == null) {
+ return result;
+ }
+
+ if (this.major > otherVersion.major) {
+ // v2 > v1
+ result = 1;
+ } else if (this.major == otherVersion.major) {
+ // v1 == v1
+ result = 0;
+
+ if (this.minor > otherVersion.minor) {
+ // v1.1 > v1.0
+ result = 1;
+ } else if (this.minor == otherVersion.minor) {
+ // v1.1 == v1.1
+ result = 0;
+
+ if (this.patch > otherVersion.patch) {
+ // v1.1.2 > v1.1.1
+ result = 1;
+ } else if (this.patch == otherVersion.patch) {
+ // v1.1.1 == v1.1.1
+ result = 0;
+
+ // v1.1.1+abcdef < v1.1.1+bcdef == v1.1
+ if (this.build.length() > 0 && otherVersion.build.length() > 0) {
+ result = this.build.compareTo(otherVersion.build);
+ }
+
+ // v1.1.1-alpha < v1.1.1-beta < v1.1
+ if (this.qualifier.length() > 0 && otherVersion.qualifier.length() == 0) {
+ result = -1;
+ } else if (this.qualifier.length() > 0 && otherVersion.qualifier.length() > 0) {
+ result = this.qualifier.compareTo(otherVersion.qualifier);
+ } else if (this.qualifier.length() == 0 && otherVersion.qualifier.length() > 0) {
+ result = 1;
+ }
+ } else if (this.patch < otherVersion.patch) {
+ // v1.1.1 < v1.1.2
+ result = -1;
+ }
+ } else if (this.minor < otherVersion.minor) {
+ // v1.0 < v1.1
+ result = -1;
+ }
+ } else if (this.major < otherVersion.major) {
+ // v1 < v2
+ result = -1;
+ }
+ return result;
+ }
+
+ /**
+ * Indicates if the version is in the given range.
+ *
+ * @param range
+ * The range
+ * @return <code>true</code> if the version is in the given range, <code>false</code> otherwise
+ */
+ public boolean isIn(Range range) {
+ boolean isInRange = true;
+
+ List<VersionedConstraint> constraints = range.getConstraints();
+ for (VersionedConstraint versionedConstraint : constraints) {
+ isInRange = isInRange && versionedConstraint.isValid(this);
+ }
+
+ return isInRange;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append(Integer.valueOf(this.major));
+ builder.append(DOT);
+ builder.append(Integer.valueOf(this.minor));
+ builder.append(DOT);
+ builder.append(Integer.valueOf(this.patch));
+
+ if (this.qualifier.length() > 0) {
+ builder.append(DASH);
+ builder.append(this.qualifier);
+ }
+
+ if (this.build.length() > 0) {
+ builder.append(PLUS);
+ builder.append(this.build);
+ }
+
+ String version = builder.toString();
+ if (version != null) {
+ return version;
+ }
+ return ""; //$NON-NLS-1$
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/utils/ILogger.java b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/utils/ILogger.java
new file mode 100644
index 0000000..1452598
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/utils/ILogger.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.api.utils;
+
+/**
+ * This interface will be used to log errors without requiring a dependency to org.eclipse.core.runtime. The
+ * error code and their value are the same as in IStatus in order to simplify the integration with Eclipse log
+ * system.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public interface ILogger {
+ /**
+ * OK.
+ */
+ int OK = 0;
+
+ /**
+ * INFO.
+ */
+ int INFO = 1;
+
+ /**
+ * WARNING.
+ */
+ int WARNING = 2;
+
+ /**
+ * ERROR.
+ */
+ int ERROR = 4;
+
+ /**
+ * CANCEL.
+ */
+ int CANCEL = 8;
+
+ /**
+ * Logs the given exception.
+ *
+ * @param bundle
+ * The name of the bundle
+ * @param severity
+ * The severity
+ * @param exception
+ * The exception to log
+ */
+ void log(String bundle, int severity, Exception exception);
+
+ /**
+ * Logs the given message.
+ *
+ * @param bundle
+ * The identifier of the bundle
+ * @param severity
+ * The severity
+ * @param message
+ * The message to log
+ */
+ void log(String bundle, int severity, String message);
+}
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/internal/semver/AbstractConstraintTester.java b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/internal/semver/AbstractConstraintTester.java
new file mode 100755
index 0000000..32a5108
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/internal/semver/AbstractConstraintTester.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.internal.semver;
+
+import org.eclipse.wst.jsdt.nodejs.core.api.semver.Version;
+
+/**
+ * This class will be used to validate whether or not a version validates a constraint.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public abstract class AbstractConstraintTester {
+ /**
+ * The reference version.
+ */
+ protected Version version;
+
+ /**
+ * Indicates if the tested version validates the constraint or not.
+ *
+ * @param testedVersion
+ * The tested version
+ * @return <code>true</code> if the constraint is validated, <code>false</code> otherwise
+ */
+ public abstract boolean apply(Version testedVersion);
+
+ /**
+ * Sets the version.
+ *
+ * @param version
+ * The version to set
+ */
+ public void setVersion(Version version) {
+ this.version = version;
+ }
+}
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/internal/semver/ConstraintKind.java b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/internal/semver/ConstraintKind.java
new file mode 100755
index 0000000..0d47cbb
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/internal/semver/ConstraintKind.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.internal.semver;
+
+import org.eclipse.wst.jsdt.nodejs.core.api.semver.Version;
+
+/**
+ * The list of the constraint kind that can be applied to a versioned constraint.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public enum ConstraintKind {
+ /**
+ * >.
+ */
+ GREATER_THAN(new AbstractConstraintTester() {
+
+ @Override
+ public boolean apply(Version testedVersion) {
+ return testedVersion.compareTo(this.version) > 0;
+ }
+
+ }, ">"), //$NON-NLS-1$
+
+ /**
+ * >=.
+ */
+ GREATER_THAN_OR_EQUALS_TO(new AbstractConstraintTester() {
+
+ @Override
+ public boolean apply(Version testedVersion) {
+ return testedVersion.compareTo(this.version) >= 0;
+ }
+
+ }, ">="), //$NON-NLS-1$
+
+ /**
+ * =.
+ */
+ EQUALS_TO(new AbstractConstraintTester() {
+
+ @Override
+ public boolean apply(Version testedVersion) {
+ return testedVersion.compareTo(this.version) == 0;
+ }
+
+ }, "="), //$NON-NLS-1$
+
+ /**
+ * <=.
+ */
+ LOWER_THAN_OR_EQUALS_TO(new AbstractConstraintTester() {
+
+ @Override
+ public boolean apply(Version testedVersion) {
+ return testedVersion.compareTo(this.version) <= 0;
+ }
+
+ }, "<="), //$NON-NLS-1$
+
+ /**
+ * <.
+ */
+ LOWER_THAN(new AbstractConstraintTester() {
+
+ @Override
+ public boolean apply(Version testedVersion) {
+ return testedVersion.compareTo(this.version) < 0;
+ }
+
+ }, "<"), //$NON-NLS-1$
+
+ /**
+ *
+ */
+ ANY(new AbstractConstraintTester() {
+
+ @Override
+ public boolean apply(Version testedVersion) {
+ return true;
+ }
+
+ }, "*"); //$NON-NLS-1$
+
+ /**
+ * The label of the constraint.
+ */
+ private String label;
+
+ /**
+ * The tester of the constraint.
+ */
+ private AbstractConstraintTester constraintTester;
+
+ /**
+ * The constructor.
+ *
+ * @param label
+ * The label of the constraint
+ * @param constraintTester
+ * The constraint tester
+ */
+ ConstraintKind(AbstractConstraintTester constraintTester, String label) {
+ this.label = label;
+ this.constraintTester = constraintTester;
+ }
+
+ /**
+ * Returns the label.
+ *
+ * @return The label
+ */
+ public String getLabel() {
+ return this.label;
+ }
+
+ /**
+ * Returns the constraintTester.
+ *
+ * @return The constraintTester
+ */
+ public AbstractConstraintTester getConstraintTester() {
+ return this.constraintTester;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/internal/semver/VersionedConstraint.java b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/internal/semver/VersionedConstraint.java
new file mode 100755
index 0000000..9b2d7b7
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/internal/semver/VersionedConstraint.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.internal.semver;
+
+import org.eclipse.wst.jsdt.nodejs.core.api.semver.Version;
+
+/**
+ * Utility class holding a version and its constraint.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class VersionedConstraint {
+
+ /**
+ * The version.
+ */
+ private Version version;
+
+ /**
+ * The constraint.
+ */
+ private ConstraintKind constraintKind;
+
+ /**
+ * The constructor.
+ *
+ * @param version
+ * The version
+ * @param constraintKind
+ * The kind of constraint
+ */
+ public VersionedConstraint(Version version, ConstraintKind constraintKind) {
+ this.version = version;
+ this.constraintKind = constraintKind;
+ }
+
+ /**
+ * Indicates if the tested version validates the constraint or not.
+ *
+ * @param testedVersion
+ * The tested version
+ * @return <code>true</code> if the constraint is validated, <code>false</code> otherwise
+ */
+ public boolean isValid(Version testedVersion) {
+ AbstractConstraintTester constraintTester = this.constraintKind.getConstraintTester();
+ constraintTester.setVersion(this.version);
+ return constraintTester.apply(testedVersion);
+ }
+}
diff --git a/bundles/pom.xml b/bundles/pom.xml
index adf2532..92a7715 100644
--- a/bundles/pom.xml
+++ b/bundles/pom.xml
@@ -36,5 +36,11 @@
<module>org.eclipse.wst.jsdt.debug.rhino.ui</module>
<module>org.eclipse.wst.jsdt.debug.transport</module>
<module>org.eclipse.wst.jsdt.debug.ui</module>
+
+ <module>org.eclipse.wst.jsdt.nodejs.core</module>
+ <module>org.eclipse.wst.jsdt.bower.core</module>
+ <module>org.eclipse.wst.jsdt.bower.ide</module>
+ <module>org.eclipse.wst.jsdt.bower.ide.ui</module>
+
</modules>
</project>
diff --git a/features/org.eclipse.wst.jsdt.feature/feature.xml b/features/org.eclipse.wst.jsdt.feature/feature.xml
index a325dee..b826f06 100644
--- a/features/org.eclipse.wst.jsdt.feature/feature.xml
+++ b/features/org.eclipse.wst.jsdt.feature/feature.xml
@@ -110,5 +110,33 @@
install-size="0"
version="1.7.2.qualifier"
unpack="false"/>
+
+ <plugin
+ id="org.eclipse.wst.jsdt.nodejs.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.wst.jsdt.bower.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.wst.jsdt.bower.ide"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.wst.jsdt.bower.ide.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
</feature>
diff --git a/features/org.eclipse.wst.jsdt_tests.feature/feature.xml b/features/org.eclipse.wst.jsdt_tests.feature/feature.xml
index a1dcd93..8a3d795 100644
--- a/features/org.eclipse.wst.jsdt_tests.feature/feature.xml
+++ b/features/org.eclipse.wst.jsdt_tests.feature/feature.xml
@@ -61,4 +61,10 @@
install-size="0"
version="0.0.0"/>
+ <plugin
+ id="org.eclipse.wst.jsdt.nodejs.core.tests"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
</feature>
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.classpath b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.classpath
new file mode 100644
index 0000000..32a9aa4
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.project b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.project
new file mode 100644
index 0000000..41bd7c7
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.wst.jsdt.nodejs.core.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..fb89267
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,410 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=warning
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=error
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=error
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=error
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=52
+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=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+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=1
+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=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+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.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=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+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=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=do not 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=do not 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=do not 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=false
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.jdt.launching.prefs b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..03a084a
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_JSDT
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * Returns the ${bare_field_name}.\n * \n * @return The ${bare_field_name}\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * Sets the ${bare_field_name}.\n *\n * @param ${param} The ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * The constructor.\n * \n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) 2015.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * ${user} - initial API and implementation\n *******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * {@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="false" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return this.${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=false
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.pde.api.tools.prefs b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..fdcba94
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.pde.core.prefs b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..52f7384
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a829903
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.wst.jsdt.nodejs.core.tests
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.junit;bundle-version="4.11.0"
+Import-Package: org.eclipse.wst.jsdt.nodejs.core.api.semver;version="1.0.0"
+Bundle-Localization: bundle
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/about.html b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/about.html
new file mode 100644
index 0000000..4602330
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 2, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/build.properties b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/build.properties
new file mode 100644
index 0000000..153b0be
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/build.properties
@@ -0,0 +1,17 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+source.. = src/main/java/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ bundle.properties
+additional.bundles = org.eclipse.wst.jsdt.nodejs.core
+javacProjectSettings = true
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/bundle.properties b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/bundle.properties
new file mode 100644
index 0000000..e08a196
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/bundle.properties
@@ -0,0 +1,12 @@
+#################################################################################
+## Copyright (c) 2014 Obeo 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
+##
+## Contributors:
+## Obeo - initial API and implementation
+#################################################################################
+Bundle-Name = JSDT NodeJS Core Tests
+Bundle-Vendor = Eclipse Web Tools Platform
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/pom.xml b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/pom.xml
new file mode 100644
index 0000000..f5b78c8
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 2014 Eclipse Foundation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Distribution License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/org/documents/edl-v10.php
+
+ Contributors:
+ Thanh Ha (Eclipse Foundation) - initial implementation
+ Mickael Istria (Red Hat Inc.) - 425796 intermediary pom for factorization
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.webtools.jsdt</groupId>
+ <artifactId>tests</artifactId>
+ <version>3.6.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.webtools.jsdt.tests</groupId>
+ <artifactId>org.eclipse.wst.jsdt.nodejs.core.tests</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+
+ <properties>
+ <testSuite>${project.artifactId}</testSuite>
+ <testClass>org.eclipse.wst.jsdt.nodejs.core.tests.AllTests</testClass>
+ </properties>
+</project>
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/AllTests.java b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/AllTests.java
new file mode 100644
index 0000000..ebf1a69
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/AllTests.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.tests;
+
+import org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver.RangeTests;
+import org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver.VersionTests;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Launches all the tests.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses({VersionTests.class, RangeTests.class })
+public class AllTests {
+ /**
+ * The constructor.
+ */
+ private AllTests() {
+ // prevent instantiation
+ }
+}
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/ComparationMatcher.java b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/ComparationMatcher.java
new file mode 100644
index 0000000..32ac548
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/ComparationMatcher.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver;
+
+import org.eclipse.wst.jsdt.nodejs.core.api.semver.Version;
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Description;
+import org.hamcrest.Factory;
+import org.hamcrest.Matcher;
+
+/**
+ * This matcher will be used to compare two version numbers.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class ComparationMatcher extends BaseMatcher<Version> {
+
+ /**
+ * This enumeration will be used to select the kind of operation to test.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+ private enum Comparator {
+ /**
+ * The other version number must be lower than the tested one.
+ */
+ GREATER,
+ /**
+ * The other version number must be lower than or equals to the tested one.
+ */
+ GREATER_OR_EQUALS,
+ /**
+ * The other version number must be equals to the tested one.
+ */
+ EQUALS,
+ /**
+ * The other version number must be greater than or equals to the tested one.
+ */
+ LOWER_OR_EQUALS,
+ /**
+ * The other version number must be greater than the tested one.
+ */
+ LOWER;
+ }
+
+ /**
+ * The other version number.
+ */
+ private Version otherVersion;
+
+ /**
+ * The type of comparison to run.
+ */
+ private Comparator comparator;
+
+ /**
+ * The constructor.
+ *
+ * @param comparator
+ * @param otherVersion
+ */
+ public ComparationMatcher(Comparator comparator, Version otherVersion) {
+ this.comparator = comparator;
+ this.otherVersion = otherVersion;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.hamcrest.Matcher#matches(java.lang.Object)
+ */
+ @Override
+ public boolean matches(Object item) {
+ boolean isMatching = false;
+ if (item instanceof Version) {
+ Version version = (Version)item;
+ switch (this.comparator) {
+ case GREATER:
+ isMatching = version.compareTo(this.otherVersion) > 0;
+ break;
+ case GREATER_OR_EQUALS:
+ isMatching = version.compareTo(this.otherVersion) >= 0;
+ break;
+ case EQUALS:
+ isMatching = version.compareTo(this.otherVersion) == 0;
+ break;
+ case LOWER_OR_EQUALS:
+ isMatching = version.compareTo(this.otherVersion) <= 0;
+ break;
+ case LOWER:
+ isMatching = version.compareTo(this.otherVersion) < 0;
+ break;
+ default:
+ isMatching = false;
+ break;
+ }
+ }
+ return isMatching;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.hamcrest.SelfDescribing#describeTo(org.hamcrest.Description)
+ */
+ @Override
+ public void describeTo(Description description) {
+ switch (this.comparator) {
+ case GREATER:
+ description.appendText("greater than ").appendText(otherVersion.toString()); //$NON-NLS-1$
+ break;
+ case GREATER_OR_EQUALS:
+ description.appendText("greater than or equals to ").appendText(otherVersion.toString()); //$NON-NLS-1$
+ break;
+ case EQUALS:
+ description.appendText("equals to ").appendText(otherVersion.toString()); //$NON-NLS-1$
+ break;
+ case LOWER_OR_EQUALS:
+ description.appendText("lower than or equals to ").appendText(otherVersion.toString()); //$NON-NLS-1$
+ break;
+ case LOWER:
+ description.appendText("lower than ").appendText(otherVersion.toString()); //$NON-NLS-1$
+ break;
+ default:
+ break;
+ }
+ }
+
+ /**
+ * Returns a matcher testing if a version number is greater than another one.
+ *
+ * @param otherVersion
+ * The other version number
+ * @return The matcher
+ */
+ @Factory
+ public static Matcher<Version> greaterThan(Version otherVersion) {
+ return new ComparationMatcher(Comparator.GREATER, otherVersion);
+ }
+
+ /**
+ * Returns a matcher testing if a version number is greater than or equals to another one.
+ *
+ * @param otherVersion
+ * The other version number
+ * @return The matcher
+ */
+ @Factory
+ public static Matcher<Version> greaterThanOrEqualsTo(Version otherVersion) {
+ return new ComparationMatcher(Comparator.GREATER_OR_EQUALS, otherVersion);
+ }
+
+ /**
+ * Returns a matcher testing if a version number is equals to another one.
+ *
+ * @param otherVersion
+ * The other version number
+ * @return The matcher
+ */
+ @Factory
+ public static Matcher<Version> equalTo(Version otherVersion) {
+ return new ComparationMatcher(Comparator.EQUALS, otherVersion);
+ }
+
+ /**
+ * Returns a matcher testing if a version number is lower than or equals to another one.
+ *
+ * @param otherVersion
+ * The other version number
+ * @return The matcher
+ */
+ @Factory
+ public static Matcher<Version> lowerThanOrEqualsTo(Version otherVersion) {
+ return new ComparationMatcher(Comparator.LOWER_OR_EQUALS, otherVersion);
+ }
+
+ /**
+ * Returns a matcher testing if a version number is lower than another one.
+ *
+ * @param otherVersion
+ * The other version number
+ * @return The matcher
+ */
+ @Factory
+ public static Matcher<Version> lowerThan(Version otherVersion) {
+ return new ComparationMatcher(Comparator.LOWER, otherVersion);
+ }
+}
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/RangeTests.java b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/RangeTests.java
new file mode 100644
index 0000000..266cda9
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/RangeTests.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver;
+
+import org.eclipse.wst.jsdt.nodejs.core.api.semver.Range;
+import org.eclipse.wst.jsdt.nodejs.core.api.semver.Version;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * In those tests, we will see if a specific version number matches a given range by respecting the Node.js
+ * semantic versioning rules.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class RangeTests {
+
+ /**
+ * Test some version numbers with exact ranges.
+ */
+ @Test
+ public void testExactRanges() {
+ // valid
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("1"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0+build2012").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("v1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("v1"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=1"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=v1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=v1"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // invalid
+ assertFalse(Version.fromString("1.0.1").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertFalse(Version.fromString("0.9.9").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertFalse(Version.fromString("1.0.0-beta").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertFalse(Version.fromString("1.0.0-alpha").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertFalse(Version.fromString("1.0.0-alpha+build2014").isIn(Range.fromString("=v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * Test some version numbers with approximate ranges.
+ */
+ @Test
+ public void testApproximateRanges() {
+ // valid
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=v1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=1"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=0.0.1"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=0.9"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=0"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertTrue(Version.fromString("1.0.7").isIn(Range.fromString(">v0.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.3.0").isIn(Range.fromString(">v1.2"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.4.2").isIn(Range.fromString(">v1.4.1"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertTrue(Version.fromString("1.0.7").isIn(Range.fromString("<v2.0.8"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.3.0").isIn(Range.fromString("<v1.4"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.4.2").isIn(Range.fromString("<v1.4.11"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertTrue(Version.fromString("1.0.7").isIn(Range.fromString(">v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.3.0").isIn(Range.fromString(">v1.2"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("1.4.2").isIn(Range.fromString(">v1.3.11"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertTrue(Version.fromString("1.0.7-beta+build1234").isIn(Range.fromString(">v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("2.0.0-beta+build1234").isIn(Range.fromString(">v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("2.0.0-beta+build1234").isIn(Range.fromString("<=v2.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // invalid
+ assertFalse(Version.fromString("1.0.0").isIn(Range.fromString(">1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertFalse(Version.fromString("1.0.0-beta").isIn(Range.fromString(">=v1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertFalse(Version.fromString("1.1.1").isIn(Range.fromString(">=1.2"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ }
+
+ /**
+ * Test some version numbers with multiple ranges.
+ */
+ @Test
+ public void testMultipleRanges() {
+ // valid
+ assertTrue(Version.fromString("1.0.2").isIn(Range.fromString(">v0.9.3 <v1.1.8"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // invalid
+ assertFalse(Version.fromString("1.0.2").isIn(Range.fromString(">v1.9.3 <v2.1.8"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertFalse(Version.fromString("1.0.2").isIn(Range.fromString(">v0.9.3 <v0.9.8"))); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * Test some version numbers with any range.
+ */
+ @Test
+ public void testAnyRange() {
+ // valid
+ assertTrue(Version.fromString("1.0.7-beta+build1234").isIn(Range.fromString("*"))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertTrue(Version.fromString("v8").isIn(Range.fromString("*"))); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+}
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/VersionTests.java b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/VersionTests.java
new file mode 100644
index 0000000..c6023e9
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/VersionTests.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo 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
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver;
+
+import org.eclipse.wst.jsdt.nodejs.core.api.semver.Version;
+import org.junit.Test;
+
+import static org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver.ComparationMatcher.equalTo;
+import static org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver.ComparationMatcher.greaterThan;
+import static org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver.ComparationMatcher.greaterThanOrEqualsTo;
+import static org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver.ComparationMatcher.lowerThan;
+import static org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver.ComparationMatcher.lowerThanOrEqualsTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsNot.not;
+
+/**
+ * Unit tests of the version numbers.
+ *
+ * @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
+ */
+public class VersionTests {
+ /**
+ * Test the string serialization of some version numbers.
+ */
+ @Test
+ public void testVersionToString() {
+ assertThat(Version.fromString("v1").toString(), is("1.0.0")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1.2").toString(), is("1.2.0")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1.2.3").toString(), is("1.2.3")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("1.2.3").toString(), is("1.2.3")); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertThat(Version.fromString("1.2.3-beta").toString(), is("1.2.3-beta")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1.2.3-beta").toString(), is("1.2.3-beta")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1.2-beta").toString(), is("1.2.0-beta")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1-beta").toString(), is("1.0.0-beta")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1-beta2.5").toString(), is("1.0.0-beta2.5")); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertThat(Version.fromString("1.2.3+build2014").toString(), is("1.2.3+build2014")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1.2.3+build2014").toString(), is("1.2.3+build2014")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1.2+build2014").toString(), is("1.2.0+build2014")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1+build2014").toString(), is("1.0.0+build2014")); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertThat(Version.fromString("v1.25-beta2.5+build2014-06-11").toString(), //$NON-NLS-1$
+ is("1.25.0-beta2.5+build2014-06-11")); //$NON-NLS-1$
+ }
+
+ /**
+ * Test that if a version number starts with a "v", this prefix gets trimmed.
+ */
+ @Test
+ public void testPrefixTrimming() {
+ assertThat(Version.fromString("v1.0.0"), is(equalTo(Version.fromString("1.0.0")))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1.0"), is(equalTo(Version.fromString("1.0.0")))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("v1"), is(equalTo(Version.fromString("1.0.0")))); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * Test the comparison of version number for the major part.
+ */
+ @Test
+ public void testMajorVersionNumbersComparison() {
+ // greater
+ assertThat(Version.fromString("1.0.0"), is(greaterThan(Version.fromString("0.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.0"), is(greaterThan(Version.fromString("0.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1"), is(greaterThan(Version.fromString("0.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ // greater or equals
+ assertThat(Version.fromString("1.0.0"), is(greaterThanOrEqualsTo(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.0.0"), is(greaterThanOrEqualsTo(Version.fromString("0.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.0"), is(greaterThanOrEqualsTo(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.0"), is(greaterThanOrEqualsTo(Version.fromString("0.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1"), is(greaterThanOrEqualsTo(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1"), is(greaterThanOrEqualsTo(Version.fromString("0.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ // equals
+ assertThat(Version.fromString("1.0.0"), is(equalTo(Version.fromString("1.0.0")))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("1.0"), is(equalTo(Version.fromString("1.0.0")))); //$NON-NLS-1$ //$NON-NLS-2$
+ assertThat(Version.fromString("1"), is(equalTo(Version.fromString("1.0.0")))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // lower or equals
+ assertThat(Version.fromString("1.0.0"), is(lowerThanOrEqualsTo(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.0.0"), is(lowerThanOrEqualsTo(Version.fromString("9.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.0"), is(lowerThanOrEqualsTo(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.0"), is(lowerThanOrEqualsTo(Version.fromString("9.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1"), is(lowerThanOrEqualsTo(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1"), is(lowerThanOrEqualsTo(Version.fromString("9.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ // lower
+ assertThat(Version.fromString("1.0.0"), is(lowerThan(Version.fromString("9.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.0"), is(lowerThan(Version.fromString("9.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1"), is(lowerThan(Version.fromString("9.99.999")))); //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ /**
+ * Test the comparison of version numbers for the minor part.
+ */
+ @Test
+ public void testMinorVersionNumbersComparison() {
+ assertThat(Version.fromString("1.1.0"), is(greaterThan(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.1"), is(greaterThan(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.1.0"), is(greaterThanOrEqualsTo(Version.fromString("1.1.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.1"), is(greaterThanOrEqualsTo(Version.fromString("1.1.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.1.0"), is(greaterThanOrEqualsTo(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.1"), is(greaterThanOrEqualsTo(Version.fromString("1.0.0")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.1.0"), is(equalTo(Version.fromString("1.1.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.1.0"), is(equalTo(Version.fromString("1.1")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.2.0"), is(lowerThanOrEqualsTo(Version.fromString("1.2.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.2"), is(lowerThanOrEqualsTo(Version.fromString("1.2.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.2.0"), is(lowerThanOrEqualsTo(Version.fromString("1.3.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.2"), is(lowerThanOrEqualsTo(Version.fromString("1.3.0")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.1.0"), is(lowerThan(Version.fromString("1.2.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.1"), is(lowerThan(Version.fromString("1.2.0")))); //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ /**
+ * Test the comparison of version numbers for the patch part.
+ */
+ @Test
+ public void testPatchVersionNumbersComparison() {
+ assertThat(Version.fromString("1.1.1"), is(greaterThan(Version.fromString("1.1.0")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.1.1"), is(greaterThanOrEqualsTo(Version.fromString("1.1.1")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.1.1"), is(greaterThanOrEqualsTo(Version.fromString("1.1.0")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.1.1"), is(equalTo(Version.fromString("1.1.1")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.1.1"), is(lowerThanOrEqualsTo(Version.fromString("1.1.1")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.1.1"), is(lowerThanOrEqualsTo(Version.fromString("1.1.2")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("1.1.1"), is(lowerThan(Version.fromString("1.1.2")))); //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ /**
+ * Test the comparison of version numbers with a build part.
+ */
+ @Test
+ public void testBuildVersionNumbersComparison() {
+ assertThat(Version.fromString("1.1.1"), is(equalTo(Version.fromString("1.1.1+build2014")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1.1"), is(equalTo(Version.fromString("1.1.0+build2014")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("1"), is(equalTo(Version.fromString("v1.0.0+build2014")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("v1"), is(equalTo(Version.fromString("v1.0.0+build2014")))); //$NON-NLS-1$//$NON-NLS-2$
+
+ assertThat(Version.fromString("v1+build2014"), is(equalTo(Version.fromString("v1.0.0+build2014")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("v1.0+build2014"), is(equalTo(Version.fromString("v1.0.0+build2014")))); //$NON-NLS-1$//$NON-NLS-2$
+ assertThat(Version.fromString("v1.0.0+build2014"), //$NON-NLS-1$
+ is(equalTo(Version.fromString("v1.0.0+build2014")))); //$NON-NLS-1$
+
+ assertThat(Version.fromString("v1+build2014"), //$NON-NLS-1$
+ is(not(equalTo(Version.fromString("v1.0.0+build2015"))))); //$NON-NLS-1$
+ assertThat(Version.fromString("v1+build2014"), //$NON-NLS-1$
+ is(lowerThan(Version.fromString("v1.0.0+build2015")))); //$NON-NLS-1$
+ assertThat(Version.fromString("v1+build2014"), //$NON-NLS-1$
+ is(greaterThan(Version.fromString("v1.0.0+build2013")))); //$NON-NLS-1$
+ }
+
+ /**
+ * Test the comparison of version numbers with a qualifier part.
+ */
+ @Test
+ public void testQualifierVersionNumbersComparison() {
+ assertThat(Version.fromString("v1.1-beta"), //$NON-NLS-1$
+ is(lowerThan(Version.fromString("v1.1.0")))); //$NON-NLS-1$
+ assertThat(Version.fromString("v1.1-beta"), //$NON-NLS-1$
+ is(greaterThan(Version.fromString("v1.0.9")))); //$NON-NLS-1$
+ assertThat(Version.fromString("v1.1-beta"), //$NON-NLS-1$
+ is(greaterThan(Version.fromString("v1.1-alpha")))); //$NON-NLS-1$
+ }
+}
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/test.xml b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/test.xml
new file mode 100644
index 0000000..a1d9cc5
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/test.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project
+ name="testsuite"
+ default="run"
+ basedir=".">
+
+ <!--
+ =====================================================
+ There should be no need to change what's above.
+ (if there is, let us know if the script can be improved.)
+ =====================================================
+ -->
+
+ <!-- should be little need to change what's above -->
+ <property
+ name="plugin-name"
+ value="org.eclipse.wst.jsdt.core.tests.compiler" />
+ <property
+ name="classname"
+ value="org.eclipse.wst.jsdt.core.tests.compiler.JSDTCompilerTests" />
+ <property
+ name="testType"
+ value="core-test" />
+
+ <!-- should be little need to change what's below -->
+
+ <echo message="basedir: ${basedir}" />
+ <echo message="eclipse-home: ${eclipse-home}" />
+ <echo message="buildDirectory: ${buildDirectory}" />
+ <echo message="plugin-name: ${plugin-name}" />
+ <echo message="classname: ${classname}" />
+ <echo message="testType ${testType}" />
+
+
+ <property
+ name="library-file"
+ value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
+ <property
+ name="workspace"
+ value="${eclipse-home}/junitworkspaces/${plugin-name}" />
+
+ <!-- This target holds all initialization code that needs to be done for -->
+ <!-- all tests that are to be run. Initialization for individual tests -->
+ <!-- should be done within the body of the suite target. -->
+ <target name="init">
+ <tstamp />
+ <delete>
+ <fileset
+ dir="${eclipse-home}"
+ includes="${plugin-name}.*xml" />
+ </delete>
+
+ <!--
+ make the workspace directory, in case path doesn't exist yet
+ but delete to make sure fresh contents, if it does exist
+ -->
+ <delete
+ dir="${workspace}"
+ quiet="true" />
+ <mkdir
+ dir="${workspace}" />
+ </target>
+
+ <!-- This target defines the tests that need to be run. -->
+ <target name="suite">
+
+ <ant
+ target="${testType}"
+ antfile="${library-file}"
+ dir="${eclipse-home}">
+ <property
+ name="data-dir"
+ value="${workspace}" />
+ <property
+ name="plugin-name"
+ value="${plugin-name}" />
+ <property
+ name="classname"
+ value="${classname}" />
+ <property
+ name="plugin-path"
+ value="${eclipse-home}/plugins/${plugin-name}" />
+ </ant>
+
+ <copy
+ failonerror="false"
+ file="${workspace}/.metadata/.log"
+ tofile="${buildDirectory}/${buildLabel}/testResults/consolelogs/${plugin-name}.consolelog.txt" />
+
+ </target>
+
+ <!-- This target holds code to cleanup the testing environment after -->
+ <!-- after all of the tests have been run. You can use this target to -->
+ <!-- delete temporary files that have been created. -->
+ <target name="cleanup">
+ <!-- usually no need to delete workspace until next run, and leaving it allows inspection -->
+ <!-- <delete dir="${workspace}" quiet="true" /> -->
+ </target>
+
+ <!-- This target runs the test suite. Any actions that need to happen -->
+ <!-- after all the tests have been run should go here. -->
+ <target
+ name="run"
+ depends="init,suite,cleanup">
+ <ant
+ target="collect"
+ antfile="${library-file}"
+ dir="${eclipse-home}">
+ <property
+ name="includes"
+ value="${plugin-name}.*xml" />
+ <property
+ name="output-file"
+ value="${plugin-name}.xml" />
+ </ant>
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/tests/pom.xml b/tests/pom.xml
index 90c1322..1de01e5 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -28,5 +28,6 @@
<module>org.eclipse.wst.jsdt.debug.core.tests</module>
<module>org.eclipse.wst.jsdt.debug.rhino.tests</module>
<module>org.eclipse.wst.jsdt.ui.tests</module>
+ <module>org.eclipse.wst.jsdt.nodejs.core.tests</module>
</modules>
</project>