diff options
Diffstat (limited to 'gerrit-gwtdebug')
-rw-r--r-- | gerrit-gwtdebug/.gitignore | 4 | ||||
-rw-r--r-- | gerrit-gwtdebug/.settings/org.eclipse.core.resources.prefs | 3 | ||||
-rw-r--r-- | gerrit-gwtdebug/.settings/org.eclipse.core.runtime.prefs | 3 | ||||
-rw-r--r-- | gerrit-gwtdebug/.settings/org.eclipse.jdt.core.prefs | 268 | ||||
-rw-r--r-- | gerrit-gwtdebug/.settings/org.eclipse.jdt.ui.prefs | 61 | ||||
-rw-r--r-- | gerrit-gwtdebug/pom.xml | 66 | ||||
-rw-r--r-- | gerrit-gwtdebug/src/main/java/com/google/gerrit/gwtdebug/GerritDebugLauncher.java | 419 |
7 files changed, 824 insertions, 0 deletions
diff --git a/gerrit-gwtdebug/.gitignore b/gerrit-gwtdebug/.gitignore new file mode 100644 index 0000000000..903c6c80f5 --- /dev/null +++ b/gerrit-gwtdebug/.gitignore @@ -0,0 +1,4 @@ +/target +/.classpath +/.project +/.settings/org.maven.ide.eclipse.prefs diff --git a/gerrit-gwtdebug/.settings/org.eclipse.core.resources.prefs b/gerrit-gwtdebug/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000..82eb859e3b --- /dev/null +++ b/gerrit-gwtdebug/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +#Tue Sep 02 16:59:24 PDT 2008 +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/gerrit-gwtdebug/.settings/org.eclipse.core.runtime.prefs b/gerrit-gwtdebug/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 0000000000..8667cfd4a3 --- /dev/null +++ b/gerrit-gwtdebug/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,3 @@ +#Tue Sep 02 16:59:24 PDT 2008 +eclipse.preferences.version=1 +line.separator=\n diff --git a/gerrit-gwtdebug/.settings/org.eclipse.jdt.core.prefs b/gerrit-gwtdebug/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..04afc7fac5 --- /dev/null +++ b/gerrit-gwtdebug/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,268 @@ +#Tue May 12 17:44:13 PDT 2009 +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.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +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_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=16 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=0 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=0 +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=2 +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=true +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=false +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=80 +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=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=do not 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=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=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_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.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=true +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=80 +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=3 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true diff --git a/gerrit-gwtdebug/.settings/org.eclipse.jdt.ui.prefs b/gerrit-gwtdebug/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..d4218a5fc0 --- /dev/null +++ b/gerrit-gwtdebug/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,61 @@ +#Wed Jul 29 11:31:38 PDT 2009 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_Google Format +formatter_settings_version=11 +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=com.google;com;junit;net;org;java;javax; +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/> +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=false +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_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_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=false +sp_cleanup.format_source_code=false +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.make_local_variable_final=true +sp_cleanup.make_parameters_final=true +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=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=false +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +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=false +sp_cleanup.remove_unused_imports=false +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_blocks=false +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_parentheses_in_expressions=false +sp_cleanup.use_this_for_non_static_field_access=false +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=false +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/gerrit-gwtdebug/pom.xml b/gerrit-gwtdebug/pom.xml new file mode 100644 index 0000000000..7173e98e90 --- /dev/null +++ b/gerrit-gwtdebug/pom.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Copyright (C) 2009 The Android Open Source Project + +Licensed 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. +--> +<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/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>com.google.gerrit</groupId> + <artifactId>gerrit-parent</artifactId> + <version>2.0.25-SNAPSHOT</version> + </parent> + + <artifactId>gerrit-gwtdbug</artifactId> + <name>Gerrit Code Review - GWT UI Debugging Support</name> + + <description> + Debugging support for the GWT UI + </description> + + <dependencies> + <dependency> + <groupId>com.google.gwt</groupId> + <artifactId>gwt-dev</artifactId> + <classifier>${platform}</classifier> + </dependency> + + <dependency> + <groupId>com.google.gerrit</groupId> + <artifactId>gerrit-gwtui</artifactId> + </dependency> + + <dependency> + <groupId>com.google.gerrit</groupId> + <artifactId>gerrit-war</artifactId> + </dependency> + + <dependency> + <groupId>bouncycastle</groupId> + <artifactId>bcprov-jdk15</artifactId> + <version>140</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>bouncycastle</groupId> + <artifactId>bcpg-jdk15</artifactId> + <version>140</version> + <scope>provided</scope> + </dependency> + </dependencies> +</project> diff --git a/gerrit-gwtdebug/src/main/java/com/google/gerrit/gwtdebug/GerritDebugLauncher.java b/gerrit-gwtdebug/src/main/java/com/google/gerrit/gwtdebug/GerritDebugLauncher.java new file mode 100644 index 0000000000..d5f913a6ab --- /dev/null +++ b/gerrit-gwtdebug/src/main/java/com/google/gerrit/gwtdebug/GerritDebugLauncher.java @@ -0,0 +1,419 @@ +/* + * Copyright 2008 Google Inc. + * + * Licensed 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 com.google.gerrit.gwtdebug; + +import com.google.gwt.core.ext.ServletContainer; +import com.google.gwt.core.ext.ServletContainerLauncher; +import com.google.gwt.core.ext.TreeLogger; +import com.google.gwt.core.ext.UnableToCompleteException; +import com.google.gwt.dev.shell.jetty.JettyNullLogger; + +import org.mortbay.component.AbstractLifeCycle; +import org.mortbay.jetty.AbstractConnector; +import org.mortbay.jetty.Request; +import org.mortbay.jetty.RequestLog; +import org.mortbay.jetty.Response; +import org.mortbay.jetty.Server; +import org.mortbay.jetty.HttpFields.Field; +import org.mortbay.jetty.handler.RequestLogHandler; +import org.mortbay.jetty.nio.SelectChannelConnector; +import org.mortbay.jetty.webapp.WebAppClassLoader; +import org.mortbay.jetty.webapp.WebAppContext; +import org.mortbay.log.Log; +import org.mortbay.log.Logger; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Iterator; + +public class GerritDebugLauncher extends ServletContainerLauncher { + /** + * Log jetty requests/responses to TreeLogger. + */ + public static class JettyRequestLogger extends AbstractLifeCycle implements + RequestLog { + + private final TreeLogger logger; + + public JettyRequestLogger(TreeLogger logger) { + this.logger = logger; + } + + /** + * Log an HTTP request/response to TreeLogger. + */ + @SuppressWarnings("unchecked") + public void log(Request request, Response response) { + int status = response.getStatus(); + if (status < 0) { + // Copied from NCSARequestLog + status = 404; + } + TreeLogger.Type logStatus, logHeaders; + if (status >= 500) { + logStatus = TreeLogger.ERROR; + logHeaders = TreeLogger.INFO; + } else if (status >= 400) { + logStatus = TreeLogger.WARN; + logHeaders = TreeLogger.INFO; + } else { + logStatus = TreeLogger.INFO; + logHeaders = TreeLogger.DEBUG; + } + String userString = request.getRemoteUser(); + if (userString == null) { + userString = ""; + } else { + userString += "@"; + } + String bytesString = ""; + if (response.getContentCount() > 0) { + bytesString = " " + response.getContentCount() + " bytes"; + } + if (logger.isLoggable(logStatus)) { + TreeLogger branch = + logger.branch(logStatus, String.valueOf(status) + " - " + + request.getMethod() + ' ' + request.getUri() + " (" + + userString + request.getRemoteHost() + ')' + bytesString); + if (branch.isLoggable(logHeaders)) { + // Request headers + TreeLogger headers = branch.branch(logHeaders, "Request headers"); + Iterator<Field> headerFields = + request.getConnection().getRequestFields().getFields(); + while (headerFields.hasNext()) { + Field headerField = headerFields.next(); + headers.log(logHeaders, headerField.getName() + ": " + + headerField.getValue()); + } + // Response headers + headers = branch.branch(logHeaders, "Response headers"); + headerFields = response.getHttpFields().getFields(); + while (headerFields.hasNext()) { + Field headerField = headerFields.next(); + headers.log(logHeaders, headerField.getName() + ": " + + headerField.getValue()); + } + } + } + } + } + + /** + * An adapter for the Jetty logging system to GWT's TreeLogger. This + * implementation class is only public to allow {@link Log} to instantiate it. + * + * The weird static data / default construction setup is a game we play with + * {@link Log}'s static initializer to prevent the initial log message from + * going to stderr. + */ + public static class JettyTreeLogger implements Logger { + private final TreeLogger logger; + + public JettyTreeLogger(TreeLogger logger) { + if (logger == null) { + throw new NullPointerException(); + } + this.logger = logger; + } + + public void debug(String msg, Object arg0, Object arg1) { + logger.log(TreeLogger.SPAM, format(msg, arg0, arg1)); + } + + public void debug(String msg, Throwable th) { + logger.log(TreeLogger.SPAM, msg, th); + } + + public Logger getLogger(String name) { + return this; + } + + public void info(String msg, Object arg0, Object arg1) { + logger.log(TreeLogger.INFO, format(msg, arg0, arg1)); + } + + public boolean isDebugEnabled() { + return logger.isLoggable(TreeLogger.SPAM); + } + + public void setDebugEnabled(boolean enabled) { + // ignored + } + + public void warn(String msg, Object arg0, Object arg1) { + logger.log(TreeLogger.WARN, format(msg, arg0, arg1)); + } + + public void warn(String msg, Throwable th) { + logger.log(TreeLogger.WARN, msg, th); + } + + /** + * Copied from org.mortbay.log.StdErrLog. + */ + private String format(String msg, Object arg0, Object arg1) { + int i0 = msg.indexOf("{}"); + int i1 = i0 < 0 ? -1 : msg.indexOf("{}", i0 + 2); + + if (arg1 != null && i1 >= 0) { + msg = msg.substring(0, i1) + arg1 + msg.substring(i1 + 2); + } + if (arg0 != null && i0 >= 0) { + msg = msg.substring(0, i0) + arg0 + msg.substring(i0 + 2); + } + return msg; + } + } + + /** + * The resulting {@link ServletContainer} this is launched. + */ + protected static class JettyServletContainer extends ServletContainer { + private final int actualPort; + private final File appRootDir; + private final TreeLogger logger; + private final Server server; + private final WebAppContext wac; + + public JettyServletContainer(TreeLogger logger, Server server, + WebAppContext wac, int actualPort, File appRootDir) { + this.logger = logger; + this.server = server; + this.wac = wac; + this.actualPort = actualPort; + this.appRootDir = appRootDir; + } + + @Override + public int getPort() { + return actualPort; + } + + @Override + public void refresh() throws UnableToCompleteException { + String msg = + "Reloading web app to reflect changes in " + + appRootDir.getAbsolutePath(); + TreeLogger branch = logger.branch(TreeLogger.INFO, msg); + // Temporarily log Jetty on the branch. + Log.setLog(new JettyTreeLogger(branch)); + try { + wac.stop(); + wac.start(); + branch.log(TreeLogger.INFO, "Reload completed successfully"); + } catch (Exception e) { + branch.log(TreeLogger.ERROR, "Unable to restart embedded Jetty server", + e); + throw new UnableToCompleteException(); + } finally { + // Reset the top-level logger. + Log.setLog(new JettyTreeLogger(logger)); + } + } + + @Override + public void stop() throws UnableToCompleteException { + TreeLogger branch = + logger.branch(TreeLogger.INFO, "Stopping Jetty server"); + // Temporarily log Jetty on the branch. + Log.setLog(new JettyTreeLogger(branch)); + try { + server.stop(); + server.setStopAtShutdown(false); + branch.log(TreeLogger.INFO, "Stopped successfully"); + } catch (Exception e) { + branch.log(TreeLogger.ERROR, "Unable to stop embedded Jetty server", e); + throw new UnableToCompleteException(); + } finally { + // Reset the top-level logger. + Log.setLog(new JettyTreeLogger(logger)); + } + } + } + + /** + * A {@link WebAppContext} tailored to GWT hosted mode. Features hot-reload + * with a new {@link WebAppClassLoader} to pick up disk changes. The default + * Jetty {@code WebAppContext} will create new instances of servlets, but it + * will not create a brand new {@link ClassLoader}. By creating a new {@code + * ClassLoader} each time, we re-read updated classes from disk. + * + * Also provides special class filtering to isolate the web app from the GWT + * hosting environment. + */ + protected final class MyWebAppContext extends WebAppContext { + /** + * Parent ClassLoader for the Jetty web app, which can only load JVM + * classes. We would just use <code>null</code> for the parent ClassLoader + * except this makes Jetty unhappy. + */ + private final ClassLoader bootStrapOnlyClassLoader = + new ClassLoader(null) {}; + + private final ClassLoader systemClassLoader = + Thread.currentThread().getContextClassLoader(); + + private final TreeLogger logger; + + @SuppressWarnings("unchecked") + private MyWebAppContext(TreeLogger logger, String webApp, String contextPath) { + super(webApp, contextPath); + this.logger = logger; + + // Prevent file locking on Windows; pick up file changes. + getInitParams().put( + "org.mortbay.jetty.servlet.Default.useFileMappedBuffer", "false"); + + // Since the parent class loader is bootstrap-only, prefer it first. + setParentLoaderPriority(true); + } + + @Override + protected void doStart() throws Exception { + setClassLoader(new MyLoader()); + super.doStart(); + } + + @Override + protected void doStop() throws Exception { + super.doStop(); + setClassLoader(null); + } + + private class MyLoader extends WebAppClassLoader { + MyLoader() throws IOException { + super(bootStrapOnlyClassLoader, MyWebAppContext.this); + + final URLClassLoader scl = (URLClassLoader) systemClassLoader; + final URL[] urls = scl.getURLs(); + for (URL u : urls) { + if ("file".equals(u.getProtocol())) { + addClassPath(u.getPath()); + } + } + } + + @Override + public boolean isSystemPath(String name) { + name = name.replace('/', '.'); + return super.isSystemPath(name) // + || name.startsWith("org.bouncycastle."); + } + + @Override + protected Class<?> findClass(String name) throws ClassNotFoundException { + // For system path, always prefer the outside world. + if (isSystemPath(name)) { + try { + return systemClassLoader.loadClass(name); + } catch (ClassNotFoundException e) { + } + } + return super.findClass(name); + } + } + } + + static { + // Suppress spammy Jetty log initialization. + System + .setProperty("org.mortbay.log.class", JettyNullLogger.class.getName()); + Log.getLog(); + + /* + * Make JDT the default Ant compiler so that JSP compilation just works + * out-of-the-box. If we don't set this, it's very, very difficult to make + * JSP compilation work. + */ + String antJavaC = + System.getProperty("build.compiler", + "org.eclipse.jdt.core.JDTCompilerAdapter"); + System.setProperty("build.compiler", antJavaC); + } + + @Override + public ServletContainer start(TreeLogger logger, int port, File warDir) + throws Exception { + TreeLogger branch = + logger.branch(TreeLogger.INFO, "Starting Jetty on port " + port, null); + + checkStartParams(branch, port, warDir); + + // Setup our branch logger during startup. + Log.setLog(new JettyTreeLogger(branch)); + + // Turn off XML validation. + System.setProperty("org.mortbay.xml.XmlParser.Validating", "false"); + + AbstractConnector connector = getConnector(); + connector.setPort(port); + + // Don't share ports with an existing process. + connector.setReuseAddress(false); + + // Linux keeps the port blocked after shutdown if we don't disable this. + connector.setSoLingerTime(0); + + Server server = new Server(); + server.addConnector(connector); + + // warDir is "$top/gerrit-gwtui/target/gwt-hosted-mode" + // + File top = warDir.getParentFile().getParentFile().getParentFile(); + File app = new File(top, "gerrit-war/src/main/webapp"); + File webxml = new File(app, "WEB-INF/web.xml"); + + // Create a new web app in the war directory. + // + WebAppContext wac = + new MyWebAppContext(logger, warDir.getAbsolutePath(), "/"); + wac.setDescriptor(webxml.getAbsolutePath()); + + RequestLogHandler logHandler = new RequestLogHandler(); + logHandler.setRequestLog(new JettyRequestLogger(logger)); + logHandler.setHandler(wac); + server.setHandler(logHandler); + server.start(); + server.setStopAtShutdown(true); + + // Now that we're started, log to the top level logger. + Log.setLog(new JettyTreeLogger(logger)); + + return new JettyServletContainer(logger, server, wac, connector + .getLocalPort(), warDir); + } + + protected AbstractConnector getConnector() { + return new SelectChannelConnector(); + } + + private void checkStartParams(TreeLogger logger, int port, File appRootDir) { + if (logger == null) { + throw new NullPointerException("logger cannot be null"); + } + + if (port < 0 || port > 65535) { + throw new IllegalArgumentException( + "port must be either 0 (for auto) or less than 65536"); + } + + if (appRootDir == null) { + throw new NullPointerException("app root direcotry cannot be null"); + } + } +} |