http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/.settings/org.eclipse.jdt.core.prefs ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/.settings/org.eclipse.jdt.core.prefs b/org.apache.juneau.microservice/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 0000000..54e4bf5 --- /dev/null +++ b/org.apache.juneau.microservice/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,306 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +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.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected +org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected +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=protected +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=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert +org.eclipse.jdt.core.formatter.comment.line_length=200 +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=1 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=3 +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_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=do not 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=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_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_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=200 +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=3 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/.settings/org.eclipse.jdt.ui.prefs ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/.settings/org.eclipse.jdt.ui.prefs b/org.apache.juneau.microservice/.settings/org.eclipse.jdt.ui.prefs new file mode 100755 index 0000000..47bdfe0 --- /dev/null +++ b/org.apache.juneau.microservice/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,62 @@ +cleanup.add_default_serial_version_id=true +cleanup.add_generated_serial_version_id=false +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=false +cleanup.always_use_blocks=false +cleanup.always_use_parentheses_in_expressions=false +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=false +cleanup.format_source_code=false +cleanup.format_source_code_changes_only=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=false +cleanup.never_use_blocks=true +cleanup.never_use_parentheses_in_expressions=true +cleanup.organize_imports=false +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=false +cleanup.qualify_static_member_accesses_with_declaring_class=false +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_trailing_whitespaces=true +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=false +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_blocks=false +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_parentheses_in_expressions=false +cleanup.use_this_for_non_static_field_access=false +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=false +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup_profile=_Juneau +cleanup_settings_version=2 +eclipse.preferences.version=1 +formatter_profile=_Juneau +formatter_settings_version=12 +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=java;javax;org;com; +org.eclipse.jdt.ui.javadoc=false +org.eclipse.jdt.ui.ondemandthreshold=1 +org.eclipse.jdt.ui.staticondemandthreshold=1 +org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><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">/**\r\n * Bean property getter\: <property>${bare_field_name}</property>.\r\n *\r\n * @return The value of the <property>${bare_field_name}</property> property on this bean, or <jk>null</jk> if it is not set.\r\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">/**\r\n * Bean property setter\: <property>${bare_field_name}</property>.\r\n *\r\n * @param ${param} The new value for the <property>${bare_field_name}</property> property on th is bean.\r\n * @return This object (for method chaining).\r\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">/**\r\n * TODO\r\n * \r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\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">/**\r\n * TODO\r\n * <p>\r\n * \r\n * @author James Bognar ([email protected])\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcommen t_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * TODO\r\n * \r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * TODO\r\n * \r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\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">\r\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">\r\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">\r\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">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" 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}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${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> http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/.settings/org.eclipse.m2e.core.prefs ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/.settings/org.eclipse.m2e.core.prefs b/org.apache.juneau.microservice/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/org.apache.juneau.microservice/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/Dockerfile ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/Dockerfile b/org.apache.juneau.microservice/Dockerfile new file mode 100755 index 0000000..c1766b0 --- /dev/null +++ b/org.apache.juneau.microservice/Dockerfile @@ -0,0 +1,16 @@ +# Dockerfile for creating a Juneau microservice container + +FROM ubuntu + +# Change this to whatever port you wish to use. +EXPOSE 10000 + +# Install Java +apt-get update +apt-get install default-jre + +# Copy our jar +copy build/microservice.jar / + +ENTRYPOINT [] +CMD /bin/sh -c "java -jar microservice.jar 10000" http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/META-INF/MANIFEST.MF ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/META-INF/MANIFEST.MF b/org.apache.juneau.microservice/META-INF/MANIFEST.MF new file mode 100755 index 0000000..af2d406 --- /dev/null +++ b/org.apache.juneau.microservice/META-INF/MANIFEST.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: com.ibm.team.juneau.microservice +Bundle-SymbolicName: org.apache.juneau.microservice +Bundle-Version: 5.2.0 +Bundle-Vendor: IBM +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/build.properties ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/build.properties b/org.apache.juneau.microservice/build.properties new file mode 100755 index 0000000..8fe52e5 --- /dev/null +++ b/org.apache.juneau.microservice/build.properties @@ -0,0 +1,18 @@ +# *************************************************************************************************************************** +# * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * +# * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file * +# * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * +# * with the License. You may obtain a copy of the License at * +# * * +# * http://www.apache.org/licenses/LICENSE-2.0 * +# * * +# * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * +# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * +# * specific language governing permissions and limitations under the License. * +# *************************************************************************************************************************** +source.. = src/main/java +output.. = target/classes +bin.includes = META-INF/,\ + . +jar = microservice.jar +jre.compilation.profile = JavaSE-1.6 http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/lib/commons-codec-1.9.jar ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/lib/commons-codec-1.9.jar b/org.apache.juneau.microservice/lib/commons-codec-1.9.jar new file mode 100755 index 0000000..ef35f1c Binary files /dev/null and b/org.apache.juneau.microservice/lib/commons-codec-1.9.jar differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/lib/commons-io-1.2.jar ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/lib/commons-io-1.2.jar b/org.apache.juneau.microservice/lib/commons-io-1.2.jar new file mode 100755 index 0000000..b2867cd Binary files /dev/null and b/org.apache.juneau.microservice/lib/commons-io-1.2.jar differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/lib/commons-logging-1.1.1.jar ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/lib/commons-logging-1.1.1.jar b/org.apache.juneau.microservice/lib/commons-logging-1.1.1.jar new file mode 100755 index 0000000..1deef14 Binary files /dev/null and b/org.apache.juneau.microservice/lib/commons-logging-1.1.1.jar differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/lib/httpclient-4.5.jar ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/lib/httpclient-4.5.jar b/org.apache.juneau.microservice/lib/httpclient-4.5.jar new file mode 100755 index 0000000..970c989 Binary files /dev/null and b/org.apache.juneau.microservice/lib/httpclient-4.5.jar differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/lib/httpcore-4.4.1.jar ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/lib/httpcore-4.4.1.jar b/org.apache.juneau.microservice/lib/httpcore-4.4.1.jar new file mode 100755 index 0000000..99715b6 Binary files /dev/null and b/org.apache.juneau.microservice/lib/httpcore-4.4.1.jar differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/lib/httpmime-4.5.jar ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/lib/httpmime-4.5.jar b/org.apache.juneau.microservice/lib/httpmime-4.5.jar new file mode 100755 index 0000000..b631ceb Binary files /dev/null and b/org.apache.juneau.microservice/lib/httpmime-4.5.jar differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/lib/javax.servlet-api-3.0.jar ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/lib/javax.servlet-api-3.0.jar b/org.apache.juneau.microservice/lib/javax.servlet-api-3.0.jar new file mode 100755 index 0000000..4e2edcc Binary files /dev/null and b/org.apache.juneau.microservice/lib/javax.servlet-api-3.0.jar differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/lib/jetty-all-8.1.0.jar ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/lib/jetty-all-8.1.0.jar b/org.apache.juneau.microservice/lib/jetty-all-8.1.0.jar new file mode 100755 index 0000000..1d74933 Binary files /dev/null and b/org.apache.juneau.microservice/lib/jetty-all-8.1.0.jar differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/lib/org.apache.commons.fileupload_1.3.1.jar ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/lib/org.apache.commons.fileupload_1.3.1.jar b/org.apache.juneau.microservice/lib/org.apache.commons.fileupload_1.3.1.jar new file mode 100755 index 0000000..af0cda2 Binary files /dev/null and b/org.apache.juneau.microservice/lib/org.apache.commons.fileupload_1.3.1.jar differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/pom.xml ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/pom.xml b/org.apache.juneau.microservice/pom.xml new file mode 100644 index 0000000..1a343aa --- /dev/null +++ b/org.apache.juneau.microservice/pom.xml @@ -0,0 +1,29 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.juneau</groupId> + <artifactId>org.apache.juneau.microservice</artifactId> + <version>6.0.0-SNAPSHOT</version> + <name>org.apache.juneau.microservice</name> + <description>org.apache.juneau.microservice</description> + <build> + <sourceDirectory>src</sourceDirectory> + <resources> + <resource> + <directory>src</directory> + <excludes> + <exclude>**/*.java</exclude> + </excludes> + </resource> + </resources> + <plugins> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.3</version> + <configuration> + <source>1.6</source> + <target>1.6</target> + </configuration> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/Microservice.java ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/Microservice.java b/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/Microservice.java new file mode 100755 index 0000000..55fcead --- /dev/null +++ b/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/Microservice.java @@ -0,0 +1,495 @@ +/*************************************************************************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + ***************************************************************************************************************************/ +package org.apache.juneau.microservice; + +import java.io.*; +import java.net.*; +import java.util.*; +import java.util.jar.*; + +import org.apache.juneau.*; +import org.apache.juneau.ini.*; +import org.apache.juneau.internal.*; +import org.apache.juneau.svl.*; +import org.apache.juneau.svl.vars.*; +import org.apache.juneau.utils.*; + +/** + * Parent class for all microservices. + * <p> + * A microservice defines a simple API for starting and stopping simple Java services + * contained in executable jars. + * <p> + * The general command for invoking these services is... + * <p class='bcode'> + * java -jar mymicroservice.jar [mymicroservice.cfg] + * </p> + * <p> + * Your microservice class must be specified as the <jk>Main-Class</jk> entry in + * the manifest file of your microservice jar file. + * + * <h6 class='topic'>Microservice Configuration</h6> + * + * This class defines the following method for accessing configuration for your microservice: + * <p> + * <ul class='spaced-list'> + * <li>{@link #getArgs()} - The command-line arguments passed to the jar file. + * <li>{@link #getConfig()} - An external INI-style configuration file. + * <li>{@link #getManifest()} - The manifest file for the main jar file. + * </ul> + * + * <h6 class='topic'>Entrypoint Method</h6> + * + * Subclasses must implement a static void main method as the entry point for the microservice. + * Typically, this method will simply consist of the following... + * <p> + * <p class='bcode'> + * <jk>public static void</jk> main(String[] args) <jk>throws</jk> Exception { + * <jk>new</jk> MyMicroservice(args).start(); + * } + * </p> + * + * <h6 class='topic'>Lifecycle Methods</h6> + * + * Subclasses must implement the following lifecycle methods: + * <p> + * <ul class='spaced-list'> + * <li>{@link #start()} - Gets executed during startup. + * <li>{@link #stop()} - Gets executed when 'exit' is typed in the console or an external shutdown signal is received. + * <li>{@link #kill()} - Can be used to forcibly shut down the service. Doesn't get called during normal operation. + * </ul> + * + * <h6 class='topic'>Lifecycle Listener Methods</h6> + * + * Subclasses can optionally implement the following event listener methods: + * <p> + * <ul class='spaced-list'> + * <li>{@link #onStart()} - Gets executed before {@link #start()}. + * <li>{@link #onStop()} - Gets executed before {@link #stop()}. + * <li>{@link #onConfigSave(ConfigFile)} - Gets executed after a config file has been saved. + * <li>{@link #onConfigChange(ConfigFile, Set)} - Gets executed after a config file has been modified. + * </ul> + * + * <h6 class='topic'>Other Methods</h6> + * + * Subclasses can optionally override the following methods to provide customized behavior: + * <p> + * <ul class='spaced-list'> + * <li>{@link #createVarResolver()} - Creates the {@link VarResolver} used to resolve variables in the config file returned by {@link #getConfig()}. + * </ul> + * + * @author [email protected] + */ +public abstract class Microservice { + + private static Args args; + private static ConfigFile cf; + private static ManifestFile mf; + + /** + * Constructor. + * + * @param args2 Command line arguments. + * @throws Exception + */ + protected Microservice(String[] args2) throws Exception { + Microservice.args = new Args(args2); + + // -------------------------------------------------------------------------------- + // Try to get the manifest file. + // -------------------------------------------------------------------------------- + Manifest m = new Manifest(); + + // If running within an eclipse workspace, need to get it from the file system. + File f = new File("META-INF/MANIFEST.MF"); + if (f.exists()) { + try { + m.read(new FileInputStream(f)); + } catch (IOException e) { + System.err.println("Problem detected in MANIFEST.MF. Contents below:\n" + IOUtils.read(f)); + throw e; + } + } else { + // Otherwise, read from manifest file in the jar file containing the main class. + URLClassLoader cl = (URLClassLoader)getClass().getClassLoader(); + URL url = cl.findResource("META-INF/MANIFEST.MF"); + if (url != null) { + try { + m.read(url.openStream()); + } catch (IOException e) { + System.err.println("Problem detected in MANIFEST.MF. Contents below:\n" + IOUtils.read(url.openStream())); + throw e; + } + } + } + mf = new ManifestFile(m); + + // -------------------------------------------------------------------------------- + // Find config file. + // Can either be passed in as first parameter, or we discover it using + // the 'sun.java.command' system property. + // -------------------------------------------------------------------------------- + String cFile = null; + if (args.hasArg(0)) + cFile = args.getArg(0); + else if (mf.containsKey("Main-ConfigFile")) + cFile = mf.getString("Main-ConfigFile"); + else { + String cmd = System.getProperty("sun.java.command", "not_found").split("\\s+")[0]; + if (cmd.endsWith(".jar")) + cFile = cmd.replace(".jar", ".cfg"); + } + + if (cFile == null) { + System.err.println("Running class ["+getClass().getSimpleName()+"] without a config file."); + cf = ConfigMgr.DEFAULT.create(); + } else { + System.out.println("Running class ["+getClass().getSimpleName()+"] using config file ["+cFile+"]"); + System.setProperty("juneau.configFile", cFile); + cf = ConfigMgr.DEFAULT.get(cFile).getResolving(createVarResolver()); + } + + // -------------------------------------------------------------------------------- + // Set system properties. + // -------------------------------------------------------------------------------- + Set<String> spKeys = cf.getSectionKeys("SystemProperties"); + if (spKeys != null) + for (String key : spKeys) + System.setProperty(key, cf.get("SystemProperties", key)); + + // -------------------------------------------------------------------------------- + // Add a config file change listener. + // -------------------------------------------------------------------------------- + cf.addListener(new ConfigFileListener() { + @Override /* ConfigFileListener */ + public void onSave(ConfigFile cf) { + onConfigSave(cf); + } + @Override /* ConfigFileListener */ + public void onChange(ConfigFile cf, Set<String> changes) { + onConfigChange(cf, changes); + } + }); + + // -------------------------------------------------------------------------------- + // Add exit listeners. + // -------------------------------------------------------------------------------- + new Thread() { + @Override /* Thread */ + public void run() { + Console c = System.console(); + if (c == null) + System.out.println("No available console."); + else { + while (true) { + String l = c.readLine("\nEnter 'exit' to exit.\n"); + if (l == null || l.equals("exit")) { + Microservice.this.stop(); + break; + } + } + } + } + }.start(); + Runtime.getRuntime().addShutdownHook( + new Thread() { + @Override /* Thread */ + public void run() { + Microservice.this.stop(); + } + } + ); + } + + /** + * Creates the {@link VarResolver} used to resolve variables in the + * config file returned by {@link #getConfig()}. + * <p> + * The default implementation resolves the following variables: + * <ul> + * <li><code>$S{key}</code>, <code>$S{key,default}</code> - System properties. + * <li><code>$E{key}</code>, <code>$E{key,default}</code> - Environment variables. + * <li><code>$C{key}</code>, <code>$C{key,default}</code> - Config file entries. + * <li><code>$MF{key}</code>, <code>$MF{key,default}</code> - Manifest file entries. + * <li><code>$ARG{key}</code>, <code>$ARG{key,default}</code> - Command-line arguments. + * </ul> + * <p> + * Subclasses can override this method to provide their own variables. + * <dl> + * <dt>Examples:</dt> + * <dd> + * <p class='bcode'> + * <jd>/** + * * Augment default var resolver with a custom $B{...} variable that simply wraps strings inside square brackets. + * * /</jd> + * <ja>@Override</ja> <jc>// Microservice</jc> + * <jk>protected</jk> StringVarResolver createVarResolver() { + * <jk>return super</jk>.createVarResolver() + * .addVar(<js>"B"</js>, + * <jk>new</jk> StringVarWithDefault() { + * <ja>@Override</ja> <jc>// StringVar</jc> + * <jk>public</jk> String resolve(String varVal) { + * <jk>return</jk> <js>'['</js> + varVal + <js>']'</js>; + * } + * } + * ); + * } + * </p> + * <p class='bcode'> + * <cc># Example config file</cc> + * <cs>[MySection]</cs> + * <ck>myEntry</ck> = $B{foo} + * </p> + * <p class='bcode'> + * <jc>// Example java code</jc> + * String myentry = getConfig().getString(<js>"MySection/myEntry"</js>); <jc>// == "[foo]"</js> + * </p> + * </dd> + * </dl> + * + * @return A new {@link VarResolver}. + */ + protected VarResolver createVarResolver() { + return new VarResolver() + .addVars(SystemPropertiesVar.class, EnvVariablesVar.class, ConfigFileVar.class, ManifestFileVar.class, ArgsVar.class) + .setContextObject(ConfigFileVar.SESSION_config, cf) + .setContextObject(ManifestFileVar.SESSION_manifest, mf) + .setContextObject(ArgsVar.SESSION_args, args); + } + + /** + * Returns the command-line arguments passed into the application. + * <p> + * This method can be called from the class constructor. + * <p> + * See {@link Args} for details on using this method. + * + * @return The command-line arguments passed into the application. + */ + protected static Args getArgs() { + return args; + } + + /** + * Overrides the value returned by {@link #getArgs()}. + * + * @param args The new arguments. + * @return This object (for method chaining). + */ + protected Microservice setArgs(String[] args) { + Microservice.args = new Args(args); + return this; + } + + /** + * Returns the external INI-style configuration file that can be used to configure your microservice. + * <p> + * The config file location is determined in the following order: + * <ol class='spaced-list'> + * <li>The first argument passed to the microservice jar. + * <li>The <code>Main-ConfigFile</code> entry in the microservice jar manifest file. + * <li>The name of the microservice jar with a <js>".cfg"</js> suffix (e.g. <js>"mymicroservice.jar"</js>-><js>"mymicroservice.cfg"</js>). + * </ol> + * <p> + * If all methods for locating the config file fail, then this method returns <jk>null</jk>. + * <p> + * Subclasses can set their own config file by calling the {@link #setConfig(ConfigFile)} method. + * <p> + * String variables defined by {@link #createVarResolver()} are automatically resolved when using this method. + * <p> + * This method can be called from the class constructor. + * <dl> + * <dt>Examples:</dt> + * <dd> + * <p class='bcode'> + * <cc>#--------------------------</cc> + * <cc># My section</cc> + * <cc>#--------------------------</cc> + * <cs>[MySection]</cs> + * + * <cc># An integer</cc> + * <ck>anInt</ck> = 1 + * + * <cc># A boolean</cc> + * <ck>aBoolean</ck> = true + * + * <cc># An int array</cc> + * <ck>anIntArray</ck> = 1,2,3 + * + * <cc># A POJO that can be converted from a String</cc> + * <ck>aURL</ck> = http://foo + * + * <cc># A POJO that can be converted from JSON</cc> + * <ck>aBean</ck> = {foo:'bar',baz:123} + * + * <cc># A system property</cc> + * <ck>locale</ck> = $S{java.locale, en_US} + * + * <cc># An environment variable</cc> + * <ck>path</ck> = $E{PATH, unknown} + * + * <cc># A manifest file entry</cc> + * <ck>mainClass</ck> = $MF{Main-Class} + * + * <cc># Another value in this config file</cc> + * <ck>sameAsAnInt</ck> = $C{MySection/anInt} + * + * <cc># A command-line argument in the form "myarg=foo"</cc> + * <ck>myArg</ck> = $ARG{myarg} + * + * <cc># The first command-line argument</cc> + * <ck>firstArg</ck> = $ARG{0} + * + * <cc># Look for system property, or env var if that doesn't exist, or command-line arg if that doesn't exist.</cc> + * <ck>nested</ck> = $S{mySystemProperty,$E{MY_ENV_VAR,$ARG{0}}} + * + * <cc># A POJO with embedded variables</cc> + * <ck>aBean2</ck> = {foo:'$ARG{0}',baz:$C{MySection/anInt}} + * + * </p> + * <p class='bcode'> + * <jc>// Java code for accessing config entries above.</jc> + * ConfigFile cf = getConfig(); + * + * <jk>int</jk> anInt = cf.getInt(<js>"MySection/anInt"</js>); + * <jk>boolean</jk> aBoolean = cf.getBoolean(<js>"MySection/aBoolean"</js>); + * <jk>int</jk>[] anIntArray = cf.getObject(<jk>int</jk>[].<jk>class</jk>, <js>"MySection/anIntArray"</js>); + * URL aURL = cf.getObject(URL.<jk>class</jk>, <js>"MySection/aURL"</js>); + * MyBean aBean = cf.getObject(MyBean.<jk>class</jk>, <js>"MySection/aBean"</js>); + * Locale locale = cf.getObject(Locale.<jk>class</jk>, <js>"MySection/locale"</js>); + * String path = cf.getString(<js>"MySection/path"</js>); + * String mainClass = cf.getString(<js>"MySection/mainClass"</js>); + * <jk>int</jk> sameAsAnInt = cf.getInt(<js>"MySection/sameAsAnInt"</js>); + * String myArg = cf.getString(<js>"MySection/myArg"</js>); + * String firstArg = cf.getString(<js>"MySection/firstArg"</js>); + * </p> + * </dd> + * </dl> + * + * @return The config file for this application, or <jk>null</jk> if no config file is configured. + */ + protected static ConfigFile getConfig() { + return cf; + } + + /** + * Overrides the value returned by {@link #getConfig()}. + * + * @param cf The config file for this application, or <jk>null</jk> if no config file is configured. + * @return This object (for method chaining). + */ + protected Microservice setConfig(ConfigFile cf) { + Microservice.cf = cf; + return this; + } + + /** + * Returns the main jar manifest file contents as a simple {@link ObjectMap}. + * <p> + * This map consists of the contents of {@link Manifest#getMainAttributes()} with the keys + * and entries converted to simple strings. + * <p> + * This method can be called from the class constructor. + * <dl> + * <dt>Examples:</dt> + * <dd> + * <p class='bcode'> + * <jc>// Get Main-Class from manifest file.</jc> + * String mainClass = Microservice.<jsm>getManifest</jsm>().getString(<js>"Main-Class"</js>, <js>"unknown"</js>); + * + * <jc>// Get Rest-Resources from manifest file.</jc> + * String[] restResources = Microservice.<jsm>getManifest</jsm>().getStringArray(<js>"Rest-Resources"</js>); + * </p> + * </dd> + * </dl> + * + * @return The manifest file from the main jar, or <jk>null</jk> if the manifest file could not be retrieved. + */ + protected static ManifestFile getManifest() { + return mf; + } + + //-------------------------------------------------------------------------------- + // Abstract lifecycle methods. + //-------------------------------------------------------------------------------- + + /** + * Start this application. + * <p> + * Default implementation simply calls {@link #onStart()}. + * <p> + * Overridden methods MUST call this method FIRST so that the {@link #onStart()} method is called. + * + * @throws Exception + */ + protected void start() throws Exception { + onStart(); + } + + /** + * Stop this application. + * <p> + * Default implementation simply calls {@link #onStop()}. + * <p> + * Overridden methods MUST call this method LAST so that the {@link #onStop()} method is called. + */ + protected void stop() { + onStop(); + } + + /** + * Kill the JVM by calling <code>System.exit(2);</code>. + */ + protected void kill() { + // This triggers the shutdown hook. + System.exit(2); + } + + //-------------------------------------------------------------------------------- + // Lifecycle listener methods. + // Subclasses can override these methods to run code on certain events. + //-------------------------------------------------------------------------------- + + /** + * Called at the beginning of the {@link #start()} call. + * <p> + * Subclasses can override this method to hook into the lifecycle of this application. + */ + protected void onStart() {} + + /** + * Called at the end of the {@link #stop()} call. + * <p> + * Subclasses can override this method to hook into the lifecycle of this application. + */ + protected void onStop() {} + + /** + * Called if the {@link ConfigFile#save()} is called on the config file. + * <p> + * Subclasses can override this method to listen for config file changes. + * + * @param cf The config file. + */ + protected void onConfigSave(ConfigFile cf) {} + + /** + * Called if one or more changes occur in the config file. + * <p> + * Subclasses can override this method to listen for config file changes. + * + * @param cf The config file. + * @param changes The list of keys in the config file being changed. + */ + protected void onConfigChange(ConfigFile cf, Set<String> changes) {} +} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/Resource.java ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/Resource.java b/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/Resource.java new file mode 100755 index 0000000..ccfc967 --- /dev/null +++ b/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/Resource.java @@ -0,0 +1,63 @@ +/*************************************************************************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + ***************************************************************************************************************************/ +package org.apache.juneau.microservice; + +import static org.apache.juneau.html.HtmlDocSerializerContext.*; + +import org.apache.juneau.server.*; +import org.apache.juneau.server.annotation.*; +import org.apache.juneau.svl.*; +import org.apache.juneau.svl.vars.*; + +/** + * Superclass for all REST resources. + * <p> + * In additional to the functionality of the {@link RestServletDefault} group, + * augments the {@link #createVarResolver()} method with the following additional variable types: + * <ul class='spaced-list'> + * <li><code class='snippet'>$ARG{...}</code> - Command line arguments pulled from {@link Microservice#getArgs()}.<br> + * <h6 class='figure'>Example:</h6> + * <p class='bcode'> + * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc> + * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc> + * </p> + * <li><code class='snippet'>$MF{...}</code> - Manifest file entries pulled from {@link Microservice#getManifest()}.<br> + * <h6 class='figure'>Example:</h6> + * <p class='bcode'> + * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc> + * </p> + * </ul> + * + * @author James Bognar ([email protected]) + */ +@SuppressWarnings("serial") +@RestResource( + properties={ + @Property(name=HTMLDOC_links, value="{up:'$R{requestParentURI}',options:'$R{servletURI}?method=OPTIONS'}") + }, + config="$S{juneau.configFile}", + stylesheet="$C{REST/stylesheet,styles/juneau.css}" +) +public abstract class Resource extends RestServletDefault { + + /** + * Adds $ARG and $MF variables to variable resolver defined on {@link RestServlet#createVarResolver()}. + */ + @Override + protected VarResolver createVarResolver() { + return super.createVarResolver() + .addVars(ArgsVar.class, ManifestFileVar.class) + .setContextObject(ArgsVar.SESSION_args, Microservice.getArgs()) + .setContextObject(ManifestFileVar.SESSION_manifest, Microservice.getManifest()); + } +} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java b/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java new file mode 100755 index 0000000..c6e0d6b --- /dev/null +++ b/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java @@ -0,0 +1,64 @@ +/*************************************************************************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + ***************************************************************************************************************************/ +package org.apache.juneau.microservice; + +import static org.apache.juneau.html.HtmlDocSerializerContext.*; + +import org.apache.juneau.server.*; +import org.apache.juneau.server.annotation.*; +import org.apache.juneau.svl.*; +import org.apache.juneau.svl.vars.*; + +/** + * Superclass for all REST resource groups. + * <p> + * In additional to the functionality of the {@link RestServletGroupDefault} group, + * augments the {@link #createVarResolver()} method with the following additional variable types: + * <ul class='spaced-list'> + * <li><jk>$ARG{...}</jk> - Command line arguments.<br> + * Resolves values from {@link Microservice#getArgs()}.<br> + * <h6>Example:</h6> + * <p class='bcode'> + * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc> + * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc> + * </p> + * <li><jk>$MF{...}</jk> - Manifest file entries. + * <h6>Example:</h6> + * <p class='bcode'> + * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc> + * </p> + * </ul> + * + * @author James Bognar ([email protected]) + */ +@SuppressWarnings("serial") +@RestResource( + properties={ + @Property(name=HTMLDOC_links, value="{up:'$R{requestParentURI}',options:'$R{servletURI}?method=OPTIONS'}"), + }, + config="$S{juneau.configFile}", + stylesheet="$C{REST/stylesheet,styles/juneau.css}" +) +public abstract class ResourceGroup extends RestServletGroupDefault { + + /** + * Adds $ARG and $MF variables to variable resolver defined on {@link RestServlet#createVarResolver()}. + */ + @Override + protected VarResolver createVarResolver() { + return super.createVarResolver() + .addVars(ArgsVar.class, ManifestFileVar.class) + .setContextObject(ArgsVar.SESSION_args, Microservice.getArgs()) + .setContextObject(ManifestFileVar.SESSION_manifest, Microservice.getManifest()); + } +} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1b4f98a0/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java ---------------------------------------------------------------------- diff --git a/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java b/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java new file mode 100755 index 0000000..43cf2c6 --- /dev/null +++ b/org.apache.juneau.microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java @@ -0,0 +1,33 @@ +/*************************************************************************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + ***************************************************************************************************************************/ +package org.apache.juneau.microservice; + +import static org.apache.juneau.html.HtmlDocSerializerContext.*; + +import org.apache.juneau.server.annotation.*; +import org.apache.juneau.server.jena.*; + +/** + * Superclass for all REST resources with RDF support. + * + * @author James Bognar ([email protected]) + */ +@SuppressWarnings("serial") +@RestResource( + properties={ + @Property(name=HTMLDOC_links, value="{up:'$R{requestParentURI}',options:'$R{servletURI}?method=OPTIONS'}") + }, + config="$S{juneau.configFile}", + stylesheet="$C{REST/stylesheet,styles/juneau.css}" +) +public abstract class ResourceJena extends RestServletJenaDefault {}
