diff --git a/broker/appengine/.externalToolBuilders/com.google.appengine.eclipse.core.projectValidator.launch b/broker/appengine/.externalToolBuilders/com.google.appengine.eclipse.core.projectValidator.launch deleted file mode 100644 index 3a3b1b194..000000000 --- a/broker/appengine/.externalToolBuilders/com.google.appengine.eclipse.core.projectValidator.launch +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/broker/appengine/.externalToolBuilders/com.google.gdt.eclipse.core.webAppProjectValidator.launch b/broker/appengine/.externalToolBuilders/com.google.gdt.eclipse.core.webAppProjectValidator.launch deleted file mode 100644 index eb4252719..000000000 --- a/broker/appengine/.externalToolBuilders/com.google.gdt.eclipse.core.webAppProjectValidator.launch +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/broker/appengine/.settings/com.google.appengine.eclipse.core.prefs b/broker/appengine/.settings/com.google.appengine.eclipse.core.prefs deleted file mode 100644 index 03841005e..000000000 --- a/broker/appengine/.settings/com.google.appengine.eclipse.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Tue Aug 03 15:54:32 PDT 2010 -eclipse.preferences.version=1 -validationExclusions=src/com/google/refine/appengine/*ClientConnection*.java diff --git a/broker/appengine/.settings/com.google.gdt.eclipse.core.prefs b/broker/appengine/.settings/com.google.gdt.eclipse.core.prefs deleted file mode 100644 index a060470b7..000000000 --- a/broker/appengine/.settings/com.google.gdt.eclipse.core.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Wed May 26 15:11:38 PDT 2010 -eclipse.preferences.version=1 -jarsExcludedFromWebInfLib= -warSrcDir= -warSrcDirIsOutput=true diff --git a/broker/appengine/.settings/org.eclipse.jdt.core.prefs b/broker/appengine/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 4946c81bb..000000000 --- a/broker/appengine/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,280 +0,0 @@ -#Tue Aug 02 19:35:05 EDT 2011 -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_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_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=33 -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=1 -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=1 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=8 -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_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=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -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_outer_expressions_when_nested=true diff --git a/broker/appengine/.settings/org.eclipse.jdt.ui.prefs b/broker/appengine/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index b43532a49..000000000 --- a/broker/appengine/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Sep 27 15:02:14 PDT 2010 -eclipse.preferences.version=1 -formatter_profile=_OpenRefine -formatter_settings_version=11 diff --git a/broker/appengine/WEB-INF/appengine-web.xml b/broker/appengine/WEB-INF/appengine-web.xml deleted file mode 100644 index 818840528..000000000 --- a/broker/appengine/WEB-INF/appengine-web.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - $APPID - $VERSION - - - - - \ No newline at end of file diff --git a/broker/appengine/WEB-INF/cron.xml b/broker/appengine/WEB-INF/cron.xml deleted file mode 100644 index cabccce61..000000000 --- a/broker/appengine/WEB-INF/cron.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - /expire_locks - every 5 seconds synchronized - - \ No newline at end of file diff --git a/broker/appengine/WEB-INF/jdoconfig.xml b/broker/appengine/WEB-INF/jdoconfig.xml deleted file mode 100644 index f4d0e1834..000000000 --- a/broker/appengine/WEB-INF/jdoconfig.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/broker/appengine/WEB-INF/lib/slf4j-jdk14-1.5.6.jar b/broker/appengine/WEB-INF/lib/slf4j-jdk14-1.5.6.jar deleted file mode 100644 index 1ce0a28e7..000000000 Binary files a/broker/appengine/WEB-INF/lib/slf4j-jdk14-1.5.6.jar and /dev/null differ diff --git a/broker/appengine/WEB-INF/logging.properties b/broker/appengine/WEB-INF/logging.properties deleted file mode 100644 index 7714de9fe..000000000 --- a/broker/appengine/WEB-INF/logging.properties +++ /dev/null @@ -1,13 +0,0 @@ -# A default java.util.logging configuration. -# (All App Engine logging is through java.util.logging by default). -# -# To use this configuration, copy it into your application's WEB-INF -# folder and add the following to your appengine-web.xml: -# -# -# -# -# - -# Set the default logging level for all loggers -.level = WARN diff --git a/broker/appengine/module/MOD-INF/module.properties b/broker/appengine/module/MOD-INF/module.properties deleted file mode 100644 index 26230ac34..000000000 --- a/broker/appengine/module/MOD-INF/module.properties +++ /dev/null @@ -1,4 +0,0 @@ -name = broker -description = Google App Engine implementation of Refine Broker -module-impl = com.google.refine.broker.AppEngineRefineBrokerImpl -templating = false diff --git a/broker/appengine/src/com/google/refine/appengine/AppEngineClientConnection.java b/broker/appengine/src/com/google/refine/appengine/AppEngineClientConnection.java deleted file mode 100644 index 5d69c0167..000000000 --- a/broker/appengine/src/com/google/refine/appengine/AppEngineClientConnection.java +++ /dev/null @@ -1,276 +0,0 @@ -/* - -Copyright 2010, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -package com.google.refine.appengine; - -import static com.google.appengine.api.urlfetch.FetchOptions.Builder.allowTruncate; - -import java.io.ByteArrayOutputStream; -import java.net.InetAddress; -import java.net.URL; -import java.util.concurrent.TimeUnit; - -import javax.net.ssl.SSLSession; - -import org.apache.http.Header; -import org.apache.http.HttpConnectionMetrics; -import org.apache.http.HttpHost; -import org.apache.http.HttpResponse; -import org.apache.http.ProtocolVersion; -import org.apache.http.conn.ManagedClientConnection; -import org.apache.http.conn.routing.HttpRoute; -import org.apache.http.entity.ByteArrayEntity; -import org.apache.http.message.BasicHttpResponse; -import org.apache.http.params.HttpParams; -import org.apache.http.protocol.HttpContext; - -import com.google.appengine.api.urlfetch.HTTPHeader; -import com.google.appengine.api.urlfetch.HTTPMethod; -import com.google.appengine.api.urlfetch.HTTPRequest; -import com.google.appengine.api.urlfetch.HTTPResponse; -import com.google.appengine.api.urlfetch.URLFetchService; -import com.google.appengine.api.urlfetch.URLFetchServiceFactory; - -class AppEngineClientConnection implements ManagedClientConnection { - // Managed is the composition of ConnectionReleaseTrigger, - // HttpClientConnection, HttpConnection, HttpInetConnection - - private HttpRoute _route; - private Object _state; - private boolean _reuseable; - - public AppEngineClientConnection(HttpRoute route, Object state) { - _route = route; - _state = state; - } - - // ManagedClientConnection methods - - public HttpRoute getRoute() { - return _route; - } - - public Object getState() { - return _state; - } - - public SSLSession getSSLSession() { - return null; - } - - public boolean isSecure() { - // XXX maybe parse the url to see if it's https? - return false; - } - - public boolean isMarkedReusable() { - return _reuseable; - } - - public void markReusable() { - _reuseable = true; - } - - public void layerProtocol(HttpContext context, HttpParams params) { - return; - } - - public void open(HttpRoute route, HttpContext context, HttpParams params) { - return; - } - - public void setIdleDuration(long duration, TimeUnit unit) { - return; - } - - public void setState(Object state) { - _state = state; - } - - public void tunnelProxy(HttpHost next, boolean secure, HttpParams params) { - return; - } - - public void tunnelTarget(boolean secure, HttpParams params) { - return; - } - - public void unmarkReusable() { - _reuseable = false; - } - - - // ConnectionReleaseTrigger methods - - public void releaseConnection() { - return; - } - - public void abortConnection() { - return; - } - - // HttpClientConnection methods - - private HTTPRequest _appengine_hrequest; - private HTTPResponse _appengine_hresponse; - - public void flush() { - return; - } - - public boolean isResponseAvailable(int timeout) { - // XXX possibly use Async fetcher - return true; - } - - public void receiveResponseEntity(org.apache.http.HttpResponse apache_response) { - byte[] data = _appengine_hresponse.getContent(); - - if (data != null) { - apache_response.setEntity(new ByteArrayEntity(data)); - } - } - - public HttpResponse receiveResponseHeader() { - URLFetchService ufs = URLFetchServiceFactory.getURLFetchService(); - try { - _appengine_hresponse = ufs.fetch(_appengine_hrequest); - } catch (java.io.IOException e) { - throw new RuntimeException(e); - } - - org.apache.http.HttpResponse apache_response = - new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 0), - _appengine_hresponse.getResponseCode(), - null); - - for (HTTPHeader h : _appengine_hresponse.getHeaders()) { - apache_response.addHeader(h.getName(), h.getValue()); - } - - return apache_response; - } - - public void sendRequestEntity(org.apache.http.HttpEntityEnclosingRequest request) { - ByteArrayOutputStream os = new ByteArrayOutputStream(); - - org.apache.http.HttpEntity ent = request.getEntity(); - if (ent != null) { - try { - ent.writeTo(os); - } catch (java.io.IOException e) { - throw new RuntimeException(e); - } - } - - _appengine_hrequest.setPayload(os.toByteArray()); - } - - public void sendRequestHeader(org.apache.http.HttpRequest apache_request) { - URL request_url; - - HttpHost host = _route.getTargetHost(); - - String protocol = host.getSchemeName(); - String addr = host.getHostName(); - int port = host.getPort(); - - String path = apache_request.getRequestLine().getUri(); - - try { - request_url = new URL(protocol, addr, port, path); - } catch (java.net.MalformedURLException e) { - throw new RuntimeException(e); - } - - HTTPMethod method = HTTPMethod.valueOf(apache_request.getRequestLine().getMethod()); - _appengine_hrequest = new HTTPRequest(request_url, method, allowTruncate() - .doNotFollowRedirects()); - - Header[] apache_headers = apache_request.getAllHeaders(); - for (int i = 0; i < apache_headers.length; i++) { - Header h = apache_headers[i]; - _appengine_hrequest - .setHeader(new HTTPHeader(h.getName(), h.getValue())); - } - } - - // HttpConnection methods - - public void close() { - return; - } - - public HttpConnectionMetrics getMetrics() { - return null; - } - - public int getSocketTimeout() { - return -1; - } - - public boolean isOpen() { - return true; - } - - public boolean isStale() { - return false; - } - - public void setSocketTimeout(int timeout) { - return; - } - - public void shutdown() { - return; - } - - // HttpInetConnection methods - - public InetAddress getLocalAddress() { - return null; - } - - public int getLocalPort() { - return -1; - } - - public InetAddress getRemoteAddress() { - return null; - } - - public int getRemotePort() { - return -1; - } -} \ No newline at end of file diff --git a/broker/appengine/src/com/google/refine/appengine/AppEngineClientConnectionManager.java b/broker/appengine/src/com/google/refine/appengine/AppEngineClientConnectionManager.java deleted file mode 100644 index 11ad27029..000000000 --- a/broker/appengine/src/com/google/refine/appengine/AppEngineClientConnectionManager.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - -Copyright 2010, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -package com.google.refine.appengine; - -import java.net.InetAddress; -import java.net.Socket; -import java.util.concurrent.TimeUnit; - -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.ClientConnectionRequest; -import org.apache.http.conn.ManagedClientConnection; -import org.apache.http.conn.routing.HttpRoute; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.scheme.SocketFactory; -import org.apache.http.params.HttpParams; - -public class AppEngineClientConnectionManager implements ClientConnectionManager { - - private SchemeRegistry schemes; - - class NoopSocketFactory implements SocketFactory { - public Socket connectSocket(Socket sock, String host, int port, InetAddress addr, int lport, HttpParams params) { - return null; - } - - public Socket createSocket() { - return null; - } - - public boolean isSecure(Socket sock) { - return false; - } - } - - public AppEngineClientConnectionManager() { - SocketFactory noop_sf = new NoopSocketFactory(); - schemes = new SchemeRegistry(); - schemes.register(new Scheme("http", noop_sf, 80)); - schemes.register(new Scheme("https", noop_sf, 443)); - } - - public void closeExpiredConnections() { - return; - } - - public void closeIdleConnections(long idletime, TimeUnit tunit) { - return; - } - - public ManagedClientConnection getConnection(HttpRoute route, Object state) { - return new AppEngineClientConnection(route, state); - } - - public SchemeRegistry getSchemeRegistry() { - return schemes; - } - - public void releaseConnection(ManagedClientConnection conn, long valid, TimeUnit tuint) { - return; - } - - public ClientConnectionRequest requestConnection(final HttpRoute route, final Object state) { - return new ClientConnectionRequest() { - public void abortRequest() { - return; - } - - public ManagedClientConnection getConnection(long idletime, TimeUnit tunit) { - return AppEngineClientConnectionManager.this.getConnection(route, state); - } - }; - } - - public void shutdown() { - return; - } -} diff --git a/broker/appengine/src/com/google/refine/broker/AppEngineRefineBrokerImpl.java b/broker/appengine/src/com/google/refine/broker/AppEngineRefineBrokerImpl.java deleted file mode 100644 index 79e1e3802..000000000 --- a/broker/appengine/src/com/google/refine/broker/AppEngineRefineBrokerImpl.java +++ /dev/null @@ -1,406 +0,0 @@ -/* - -Copyright 2010, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -package com.google.refine.broker; - -import java.io.Writer; -import java.util.ArrayList; -import java.util.List; - -import javax.jdo.Extent; -import javax.jdo.JDOHelper; -import javax.jdo.PersistenceManager; -import javax.jdo.PersistenceManagerFactory; -import javax.jdo.Transaction; -import javax.jdo.annotations.IdGeneratorStrategy; -import javax.jdo.annotations.PersistenceCapable; -import javax.jdo.annotations.Persistent; -import javax.jdo.annotations.PrimaryKey; -import javax.servlet.ServletConfig; -import javax.servlet.http.HttpServletResponse; - -import org.apache.http.client.HttpClient; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.impl.client.DefaultHttpClient; -import org.json.JSONException; -import org.json.JSONObject; -import org.json.JSONWriter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.appengine.api.datastore.Text; -import com.google.refine.appengine.AppEngineClientConnectionManager; -import com.google.refine.broker.RefineBroker; - -public class AppEngineRefineBrokerImpl extends RefineBroker { - - protected static final Logger logger = LoggerFactory.getLogger("refine.broker.appengine"); - - PersistenceManagerFactory pmfInstance; - - @Override - public void init(ServletConfig config) throws Exception { - super.init(config); - - pmfInstance = JDOHelper.getPersistenceManagerFactory("transactional"); - } - - @Override - public void destroy() throws Exception { - } - - // --------------------------------------------------------------------------------- - - protected HttpClient getHttpClient() { - ClientConnectionManager cm = new AppEngineClientConnectionManager(); - return new DefaultHttpClient(cm, null); - } - - // --------------------------------------------------------------------------------- - - protected void expire(HttpServletResponse response) throws Exception { - // TODO: implement - } - - protected void startProject(HttpServletResponse response, String pid, String uid, String lock, byte[] data, String metadata, List transformations) throws Exception { - // TODO: implement - } - - protected void expireLocks(HttpServletResponse response) throws Exception { - - PersistenceManager pm = pmfInstance.getPersistenceManager(); - - try { - Extent extent = pm.getExtent(Lock.class, false); - - try { - for (Lock lock : extent) { - if (lock.timestamp + LOCK_DURATION < System.currentTimeMillis()) { - Transaction tx = pm.currentTransaction(); - try { - tx.begin(); - pm.deletePersistent(lock); - tx.commit(); - } finally { - if (tx.isActive()) { - tx.rollback(); - } - } - } - } - } finally { - extent.closeAll(); - } - - respond(response, OK); - - } finally { - pm.close(); - } - } - - protected void getState(HttpServletResponse response, String pid, String uid, int rev) throws Exception { - PersistenceManager pm = pmfInstance.getPersistenceManager(); - - try { - // TODO: implement - respond(response, lockToJSON(getLock(pm,pid))); - } finally { - pm.close(); - } - } - - protected void obtainLock(HttpServletResponse response, String pid, String uid, int locktype, String lockvalue) throws Exception { - PersistenceManager pm = pmfInstance.getPersistenceManager(); - - // TODO: implement - - try { - Lock lock = getLock(pm, pid); - if (lock == null) { - Transaction tx = pm.currentTransaction(); - - try { - tx.begin(); - lock = new Lock(Long.toHexString(tx.hashCode()), pid, uid); - pm.makePersistent(lock); - tx.commit(); - } finally { - if (tx.isActive()) { - tx.rollback(); - } - } - } - - respond(response, lockToJSON(lock)); - - } finally { - pm.close(); - } - } - - protected void releaseLock(HttpServletResponse response, String pid, String uid, String lid) throws Exception { - - PersistenceManager pm = pmfInstance.getPersistenceManager(); - - try { - Lock lock = getLock(pm, pid); - if (lock != null) { - if (!lock.id.equals(lid)) { - throw new RuntimeException("Lock id doesn't match, can't release the lock"); - } - if (!lock.uid.equals(uid)) { - throw new RuntimeException("User id doesn't match the lock owner, can't release the lock"); - } - - Transaction tx = pm.currentTransaction(); - - try { - tx.begin(); - pm.deletePersistent(lock); - tx.commit(); - } finally { - if (tx.isActive()) { - tx.rollback(); - } - } - } - - respond(response, OK); - - } finally { - pm.close(); - } - } - - // ---------------------------------------------------------------------------------------------------- - - protected void startProject(HttpServletResponse response, String pid, String uid, String lid, String data) throws Exception { - PersistenceManager pm = pmfInstance.getPersistenceManager(); - - try { - checkLock(pm, pid, uid, lid); - - Project project = getProject(pm, pid); - - if (project != null) { - throw new RuntimeException("Project '" + pid + "' already exists"); - } - - Transaction tx = pm.currentTransaction(); - - try { - tx.begin(); - project = new Project(pid, data); - pm.makePersistent(project); - tx.commit(); - } finally { - if (tx.isActive()) { - tx.rollback(); - } - } - - respond(response, OK); - } finally { - pm.close(); - } - } - - protected void addTransformations(HttpServletResponse response, String pid, String uid, String lid, List transformations) throws Exception { - PersistenceManager pm = pmfInstance.getPersistenceManager(); - - try { - checkLock(pm, pid, uid, lid); - - Project project = getProject(pm, pid); - - if (project == null) { - throw new RuntimeException("Project '" + pid + "' not found"); - } - - Transaction tx = pm.currentTransaction(); - - try { - for (String s : transformations) { - project.transformations.add(new Text(s)); - } - tx.commit(); - } finally { - if (tx.isActive()) { - tx.rollback(); - } - } - - respond(response, OK); - } finally { - pm.close(); - } - } - - // --------------------------------------------------------------------------------- - - protected void openProject(HttpServletResponse response, String pid) throws Exception { - PersistenceManager pm = pmfInstance.getPersistenceManager(); - - try { - Project project = getProject(pm, pid); - - Writer w = response.getWriter(); - JSONWriter writer = new JSONWriter(w); - writer.object(); - writer.key("data"); writer.value(project.data.toString()); - writer.key("transformations"); - writer.array(); - for (Text s : project.transformations) { - writer.value(s.toString()); - } - writer.endArray(); - writer.endObject(); - w.flush(); - w.close(); - } finally { - pm.close(); - } - } - - protected void getHistory(HttpServletResponse response, String pid, int tindex) throws Exception { - PersistenceManager pm = pmfInstance.getPersistenceManager(); - - try { - Project project = getProject(pm, pid); - - Writer w = response.getWriter(); - JSONWriter writer = new JSONWriter(w); - writer.object(); - writer.key("transformations"); - writer.array(); - int size = project.transformations.size(); - for (int i = tindex; i < size; i++) { - writer.value(project.transformations.get(i).toString()); - } - writer.endArray(); - writer.endObject(); - w.flush(); - w.close(); - } finally { - pm.close(); - } - } - - // --------------------------------------------------------------------------------- - - Project getProject(PersistenceManager pm, String pid) { - Project project = pm.getObjectById(Project.class, pid); - if (project == null) { - throw new RuntimeException("Project '" + pid + "' is not managed by this broker"); - } - return project; - } - - @PersistenceCapable - static class Project { - - @PrimaryKey - @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) - String pid; - - @Persistent - List transformations = new ArrayList(); - - @Persistent - Text data; - - Project(String pid, String data) { - this.pid = pid; - this.data = new Text(data); - } - } - - // --------------------------------------------------------------------------------- - - Lock getLock(PersistenceManager pm, String pid) { - return pm.getObjectById(Lock.class, pid); - } - - void checkLock(PersistenceManager pm, String pid, String uid, String lid) { - Lock lock = getLock(pm, pid); - - if (lock == null) { - throw new RuntimeException("No lock was found with the given Lock id '" + lid + "', you have to have a valid lock on a project in order to start it"); - } - - if (!lock.pid.equals(pid)) { - throw new RuntimeException("Lock '" + lid + "' is for another project: " + pid); - } - - if (!lock.uid.equals(uid)) { - throw new RuntimeException("Lock '" + lid + "' is owned by another user: " + uid); - } - } - - JSONObject lockToJSON(Lock lock) throws JSONException { - JSONObject o = new JSONObject(); - if (lock != null) { - o.put("lock_id", lock.id); - o.put("project_id", lock.pid); - o.put("user_id", lock.uid); - o.put("timestamp", lock.timestamp); - } - return o; - } - - @PersistenceCapable - static class Lock { - - @Persistent - String id; - - @PrimaryKey - @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) - String pid; - - @Persistent - String uid; - - @Persistent - long timestamp; - - Lock(String id, String pid, String uid) { - this.id = id; - this.pid = pid; - this.uid = uid; - this.timestamp = System.currentTimeMillis(); - } - } - -} diff --git a/broker/core/.settings/org.eclipse.jdt.core.prefs b/broker/core/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 76f5cd98a..000000000 --- a/broker/core/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,280 +0,0 @@ -#Thu Aug 11 15:13:10 EDT 2011 -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_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_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=33 -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=1 -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=1 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=8 -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_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=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -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_outer_expressions_when_nested=true diff --git a/broker/core/.settings/org.eclipse.jdt.ui.prefs b/broker/core/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 0c9f02d0d..000000000 --- a/broker/core/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Sep 27 15:02:27 PDT 2010 -eclipse.preferences.version=1 -formatter_profile=_OpenRefine -formatter_settings_version=11 diff --git a/broker/core/IDEs/eclipse/README.txt b/broker/core/IDEs/eclipse/README.txt deleted file mode 100644 index c72d6e3bf..000000000 --- a/broker/core/IDEs/eclipse/README.txt +++ /dev/null @@ -1,30 +0,0 @@ - - OpenRefine Helpers for Eclipse - ------------------------------ - - - This file contains Eclipse-specific help files that can get simplify your life - developing OpenRefine with Eclipse (http://www.eclipse.org/). - - - Launch Files (*.launch) - ----------------------- - - These are files that help you running OpenRefine directly from Eclipse without having to execute - the shell scripts. - - To run, right click on the files directly from Eclipse, then do "Run As -> ". - - NOTE: you have to install the TestNG Eclipse Plugin for the above to work. For more info on how - to install this plugin, see http://testng.org/doc/eclipse.html - - - - o - - - - Thank you for your interest. - - - The OpenRefine Development Team - http://github.com/OpenRefine/OpenRefine - \ No newline at end of file diff --git a/broker/core/IDEs/eclipse/RefineBrokerTests.launch b/broker/core/IDEs/eclipse/RefineBrokerTests.launch deleted file mode 100644 index 2d43e73a3..000000000 --- a/broker/core/IDEs/eclipse/RefineBrokerTests.launch +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/broker/core/WEB-INF/butterfly.properties b/broker/core/WEB-INF/butterfly.properties deleted file mode 100644 index 89b8d41b0..000000000 --- a/broker/core/WEB-INF/butterfly.properties +++ /dev/null @@ -1,29 +0,0 @@ -# -# Butterfly Configuration -# -# NOTE: properties passed to the JVM using '-Dkey=value' from the command line -# override the settings in this file. - -# indicates the URL path where butterfly is available in the proxy URL space -# as there is no way of knowing otherwise as this information is not -# transferred thru the HTTP protocol or otherwise (different story if -# the appserver is connected thru a different protocol such as AJP) - -butterfly.url = / - -# ---------- Miscellaneous ---------- - -#butterfly.locale.language = en -#butterfly.locale.country = US -#butterfly.timeZone = GMT+09:00 - -# ---------- Module ------ - -butterfly.modules.path = ./ - -butterfly.modules.wirings = WEB-INF/modules.properties - -# ---------- Clustering ---- - -#butterfly.routing.cookie.maxage = -1 - diff --git a/broker/core/WEB-INF/modules.properties b/broker/core/WEB-INF/modules.properties deleted file mode 100644 index 0e3c497e5..000000000 --- a/broker/core/WEB-INF/modules.properties +++ /dev/null @@ -1,5 +0,0 @@ -# -# Butterfly Modules Configuration -# - -broker = / diff --git a/broker/core/WEB-INF/web.xml b/broker/core/WEB-INF/web.xml deleted file mode 100644 index 40b1a547f..000000000 --- a/broker/core/WEB-INF/web.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - refine-broker - edu.mit.simile.butterfly.Butterfly - - - - refine-broker - /* - - - diff --git a/broker/core/licenses/je.license.txt b/broker/core/licenses/je.license.txt deleted file mode 100644 index 2d35190c0..000000000 --- a/broker/core/licenses/je.license.txt +++ /dev/null @@ -1,67 +0,0 @@ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -/* - * Copyright (c) 2002-2010 Oracle. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Redistributions in any form must be accompanied by information on - * how to obtain complete source code for the Oracle Berkeley DB - * Java Edition software and any accompanying software that uses the - * Oracle Berkeley DB Java Edition software. The source code must - * either be included in the distribution or be available for no - * more than the cost of distribution plus a nominal fee, and must be - * freely redistributable under reasonable conditions. For an - * executable file, complete source code means the source code for all - * modules it contains. It does not include source code for modules or - * files that typically accompany the major components of the operating - * system on which the executable file runs. - * - * THIS SOFTWARE IS PROVIDED BY ORACLE ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR - * NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL ORACLE BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -/*** - * ASM: a very small and fast Java bytecode manipulation framework - * Copyright (c) 2000-2005 INRIA, France Telecom - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - diff --git a/broker/core/module/MOD-INF/lib-src/bdb-je-4.0.103-sources.jar b/broker/core/module/MOD-INF/lib-src/bdb-je-4.0.103-sources.jar deleted file mode 100644 index b031a8d0e..000000000 Binary files a/broker/core/module/MOD-INF/lib-src/bdb-je-4.0.103-sources.jar and /dev/null differ diff --git a/broker/core/module/MOD-INF/lib/bdb-je-4.0.103.jar b/broker/core/module/MOD-INF/lib/bdb-je-4.0.103.jar deleted file mode 100644 index a821080b8..000000000 Binary files a/broker/core/module/MOD-INF/lib/bdb-je-4.0.103.jar and /dev/null differ diff --git a/broker/core/module/MOD-INF/module.properties b/broker/core/module/MOD-INF/module.properties deleted file mode 100644 index d6b2fe052..000000000 --- a/broker/core/module/MOD-INF/module.properties +++ /dev/null @@ -1,4 +0,0 @@ -name = broker -description = Local Refine Broker -module-impl = com.google.refine.broker.RefineBrokerImpl -templating = false diff --git a/broker/core/src/com/google/refine/broker/RefineBroker.java b/broker/core/src/com/google/refine/broker/RefineBroker.java deleted file mode 100644 index ad89d5e9b..000000000 --- a/broker/core/src/com/google/refine/broker/RefineBroker.java +++ /dev/null @@ -1,345 +0,0 @@ -/* - -Copyright 2010, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -package com.google.refine.broker; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.io.Writer; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.ResponseHandler; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.impl.client.BasicResponseHandler; -import org.apache.http.message.BasicNameValuePair; -import org.apache.http.params.CoreProtocolPNames; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import edu.mit.simile.butterfly.ButterflyModuleImpl; - -/** - * This class contains all the code shared by various implementations of a OpenRefine Broker. - * - * A broker is a server used by multiple OpenRefine installations to enable collaborative - * development over the same project. - * - * Broker implementations differ in how they store their state but all of them are required - * to extend this abstract class and implement the services that are called via HTTP. - * - */ -public abstract class RefineBroker extends ButterflyModuleImpl { - - static final public String GET_STATE = "get_state"; - static final public String EXPIRE = "expire"; - static final public String OBTAIN_LOCK = "obtain_lock"; - static final public String RELEASE_LOCK = "release_lock"; - static final public String TRANSFORM = "transform"; - static final public String START = "start"; - static final public String OPEN = "open"; - - static final public int ALL = 0; - static final public int COL = 1; - static final public int CELL = 2; - - static final protected Logger logger = LoggerFactory.getLogger("refine.broker"); - - // TODO: This API is deprecated. - static final protected String USER_INFO_URL = "http://api.freebase.com/api/service/user_info"; - static final protected String DELEGATED_OAUTH_HEADER = "X-Freebase-Credentials"; - static final protected String OAUTH_HEADER = "Authorization"; - - static protected String OK; - - static { - try { - JSONObject o = new JSONObject(); - o.put("status","ok"); - OK = o.toString(); - } catch (JSONException e) { - // not going to happen; - } - } - - static public final long LOCK_DURATION = 60 * 1000; // 1 minute - static public final long USER_DURATION = 5 * 60 * 1000; // 1 minute - static public final long LOCK_EXPIRATION_CHECK_DELAY = 5 * 1000; // 5 seconds - - protected HttpClient httpclient; - - protected boolean developmentMode; - - @Override - public void init(ServletConfig config) throws Exception { - super.init(config); - httpclient = getHttpClient(); - developmentMode = Boolean.parseBoolean(config.getInitParameter("refine.development")); - if (developmentMode) logger.warn("Running in development mode"); - } - - @Override - public void destroy() throws Exception { - httpclient.getConnectionManager().shutdown(); - } - - @Override - public boolean process(String path, HttpServletRequest request, HttpServletResponse response) throws Exception { - if (logger.isDebugEnabled()) { - logger.debug("> process '{}'", path); - } else { - logger.info("process '{}'", path); - } - - try { - - if (GET_STATE.equals(path)) { - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Type", "application/json"); - getState(response, getParameter(request, "pid"), getUserId(request), getInteger(request, "rev")); - } else if (EXPIRE.equals(path)) { - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Type", "application/json"); - expire(response); - } else if (OBTAIN_LOCK.equals(path)) { - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Type", "application/json"); - obtainLock(response, getParameter(request, "pid"), getUserId(request), getInteger(request, "locktype"), getParameter(request, "lockvalue")); - } else if (RELEASE_LOCK.equals(path)) { - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Type", "application/json"); - releaseLock(response, getParameter(request, "pid"), getUserId(request), getParameter(request, "lock")); - } else if (TRANSFORM.equals(path)) { - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Type", "application/json"); - addTransformations(response, getParameter(request, "pid"), getUserId(request), getParameter(request, "lock"), getList(request, "transformations")); - } else if (START.equals(path)) { - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Type", "application/json"); - startProject(response, getParameter(request, "pid"), getUserId(request), getParameter(request, "lock"), getData(request), getParameter(request, "metadata"), getList(request, "transformations")); - } else if (OPEN.equals(path)) { - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Type", "application/json"); - openProject(response, getParameter(request, "pid")); - } else { - boolean value = super.process(path, request, response); - if (logger.isDebugEnabled()) logger.debug("< process '{}'", path); - return value; - } - - } catch (RuntimeException e) { - logger.error("runtime error", e.getMessage()); - respondError(response, e.getMessage()); - } catch (Exception e) { - logger.error("internal error", e); - respondException(response, e); - } - - if (logger.isDebugEnabled()) logger.debug("< process '{}'", path); - - return true; - } - - // ---------------------------------------------------------------------------------------- - - protected abstract HttpClient getHttpClient(); - - protected abstract void expire(HttpServletResponse response) throws Exception; - - protected abstract void getState(HttpServletResponse response, String pid, String uid, int rev) throws Exception; - - protected abstract void obtainLock(HttpServletResponse response, String pid, String uid, int locktype, String lockvalue) throws Exception; - - protected abstract void releaseLock(HttpServletResponse response, String pid, String uid, String lock) throws Exception; - - protected abstract void startProject(HttpServletResponse response, String pid, String uid, String lock, byte[] data, String metadata, List transformations) throws Exception; - - protected abstract void addTransformations(HttpServletResponse response, String pid, String uid, String lock, List transformations) throws Exception; - - protected abstract void openProject(HttpServletResponse response, String pid) throws Exception; - - // ---------------------------------------------------------------------------------------- - - @SuppressWarnings("unchecked") - protected String getUserId(HttpServletRequest request) throws Exception { - - // This is useful for testing - if (developmentMode) { - return getParameter(request, "uid"); - } - - String oauth = request.getHeader(DELEGATED_OAUTH_HEADER); - if (oauth == null) { - throw new RuntimeException("The request needs to contain the '" + DELEGATED_OAUTH_HEADER + "' header set to obtain user identity via Freebase."); - } - - List formparams = new ArrayList(); - Map params = (Map) request.getParameterMap(); - for (Entry e : params.entrySet()) { - formparams.add(new BasicNameValuePair((String) e.getKey(), (String) e.getValue())); - } - UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8"); - - HttpPost httpRequest = new HttpPost(USER_INFO_URL); - httpRequest.setHeader(OAUTH_HEADER, oauth); - httpRequest.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "OpenRefine Broker"); - httpRequest.setEntity(entity); - - ResponseHandler responseHandler = new BasicResponseHandler(); - String responseBody = httpclient.execute(httpRequest, responseHandler); - JSONObject o = new JSONObject(responseBody); - - return o.getString("username"); - } - - // ---------------------------------------------------------------------------------------- - - static protected String getParameter(HttpServletRequest request, String name) throws ServletException { - String param = request.getParameter(name); - if (param == null) { - throw new RuntimeException("request must come with a '" + name + "' parameter"); - } - return param; - } - - static protected List getList(HttpServletRequest request, String name) throws ServletException, JSONException { - String param = getParameter(request, name); - JSONArray a = new JSONArray(param); - List result = new ArrayList(a.length()); - for (int i = 0; i < a.length(); i++) { - result.add(a.getString(i)); - } - return result; - } - - static protected int getInteger(HttpServletRequest request, String name) throws ServletException, JSONException { - return Integer.parseInt(getParameter(request, name)); - } - - static protected byte[] getData(HttpServletRequest request) throws ServletException, IOException { - ByteArrayOutputStream output = new ByteArrayOutputStream(); - InputStream input = request.getInputStream(); - byte[] buffer = new byte[4096]; - int count = 0; - int n = 0; - while (-1 != (n = input.read(buffer))) { - output.write(buffer, 0, n); - count += n; - } - return output.toByteArray(); - - } - - static protected void respondError(HttpServletResponse response, String error) throws IOException, ServletException { - - if (response == null) { - throw new ServletException("Response object can't be null"); - } - - try { - JSONObject o = new JSONObject(); - o.put("status", "error"); - o.put("message", error); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - respond(response, o.toString()); - } catch (JSONException e) { - e.printStackTrace(response.getWriter()); - } - } - - static protected void respondException(HttpServletResponse response, Exception e) throws IOException, ServletException { - - if (response == null) { - throw new ServletException("Response object can't be null"); - } - - try { - JSONObject o = new JSONObject(); - o.put("status", "error"); - o.put("message", e.getMessage()); - - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - e.printStackTrace(pw); - pw.flush(); - sw.flush(); - - o.put("stack", sw.toString()); - - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - respond(response, o.toString()); - } catch (JSONException e1) { - e.printStackTrace(response.getWriter()); - } - } - - static protected void respond(HttpServletResponse response, JSONObject content) throws IOException, ServletException { - if (content == null) { - throw new ServletException("Content object can't be null"); - } - - respond(response, content.toString()); - } - - static protected void respond(HttpServletResponse response, String content) throws IOException, ServletException { - if (response == null) { - throw new ServletException("Response object can't be null"); - } - - Writer w = response.getWriter(); - if (w != null) { - w.write(content); - w.flush(); - w.close(); - } else { - throw new ServletException("response returned a null writer"); - } - } -} diff --git a/broker/core/src/com/google/refine/broker/RefineBrokerImpl.java b/broker/core/src/com/google/refine/broker/RefineBrokerImpl.java deleted file mode 100644 index 0e9491fcb..000000000 --- a/broker/core/src/com/google/refine/broker/RefineBrokerImpl.java +++ /dev/null @@ -1,625 +0,0 @@ -/* - -Copyright 2010, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -package com.google.refine.broker; - -import static com.sleepycat.persist.model.Relationship.MANY_TO_ONE; - -import java.io.File; -import java.io.Writer; -import java.util.ArrayList; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import javax.servlet.ServletConfig; -import javax.servlet.http.HttpServletResponse; - -import org.apache.http.client.HttpClient; -import org.apache.http.impl.client.DefaultHttpClient; -import org.json.JSONException; -import org.json.JSONObject; -import org.json.JSONWriter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.sleepycat.je.Environment; -import com.sleepycat.je.EnvironmentConfig; -import com.sleepycat.je.Transaction; -import com.sleepycat.persist.EntityCursor; -import com.sleepycat.persist.EntityStore; -import com.sleepycat.persist.PrimaryIndex; -import com.sleepycat.persist.SecondaryIndex; -import com.sleepycat.persist.StoreConfig; -import com.sleepycat.persist.model.Entity; -import com.sleepycat.persist.model.PrimaryKey; -import com.sleepycat.persist.model.SecondaryKey; - -public class RefineBrokerImpl extends RefineBroker { - - protected static final Logger logger = LoggerFactory.getLogger("refine.broker.local"); - - Environment env; - - EntityStore projectStore; - EntityStore lockStore; - EntityStore userStore; - - PrimaryIndex projectById; - PrimaryIndex lockById; - - SecondaryIndex locksByProject; - - Timer timer; - Expirer expirer; - - @Override - public void init(ServletConfig config) throws Exception { - logger.trace("> init"); - super.init(config); - - timer = new Timer(); - expirer = new Expirer(); - timer.schedule(expirer, 0, LOCK_EXPIRATION_CHECK_DELAY); - - String dataDir = config.getInitParameter("refine.data"); - if (dataDir == null) dataDir = "data"; - File dataPath = new File(dataDir); - if (!dataPath.exists()) dataPath.mkdirs(); - - EnvironmentConfig envConfig = new EnvironmentConfig(); - envConfig.setAllowCreate(true); - envConfig.setTransactional(true); - env = new Environment(dataPath, envConfig); - - StoreConfig storeConfig = new StoreConfig(); - storeConfig.setAllowCreate(true); - storeConfig.setTransactional(true); - projectStore = new EntityStore(env, "ProjectsStore", storeConfig); - lockStore = new EntityStore(env, "LockStore", storeConfig); - - projectById = projectStore.getPrimaryIndex(String.class, Project.class); - lockById = lockStore.getPrimaryIndex(String.class, Lock.class); - - locksByProject = lockStore.getSecondaryIndex(lockById, String.class, "pid"); - logger.trace("< init"); - } - - @Override - public void destroy() throws Exception { - logger.trace("> destroy"); - super.destroy(); - - if (projectStore != null) { - projectStore.close(); - projectById = null; - } - - if (lockStore != null) { - lockStore.close(); - lockById = null; - } - - if (timer != null) { - timer.cancel(); - timer.purge(); - timer = null; - } - - if (env != null) { - env.close(); - env = null; - } - logger.trace("< destroy"); - } - - class Expirer extends TimerTask { - public void run() { - if (lockById != null) { - logger.trace("> expire"); - Transaction txn = env.beginTransaction(null, null); - try { - EntityCursor cursor = lockById.entities(); - try { - for (Lock lock : cursor) { - if (lock.timestamp + LOCK_DURATION < System.currentTimeMillis()) { - logger.trace("Found expired lock {}", lock.id); - try { - releaseLock(null, lock.pid, lock.uid, lock.id); - } catch (Exception e) { - logger.error("Exception while expiring lock for project '" + lock.pid + "'", e); - } - } - } - } finally { - cursor.close(); - } - } finally { - if (txn != null) { - txn.abort(); - txn = null; - } - } - logger.trace("< expire"); - } - } - } - - // --------------------------------------------------------------------------------- - - @Override - protected HttpClient getHttpClient() { - return new DefaultHttpClient(); - } - - // --------------------------------------------------------------------------------- - - @Override - protected void expire(HttpServletResponse response) throws Exception { - expirer.run(); - respond(response, OK); - } - - @Override - protected void obtainLock(HttpServletResponse response, String pid, String uid, int locktype, String lockvalue) throws Exception { - logger.trace("> obtain lock"); - Lock lock = null; - Lock blocker = null; - - Transaction txn = env.beginTransaction(null, null); - - try { - - EntityCursor cursor = locksByProject.subIndex(pid).entities(); - - /* - * ALL - * blocked -> somebody else's lock - * reuse -> you already have an ALL lock - * new -> else - * - * COL - * blocked -> somebody else's all lock || a lock on the same col - * reuse -> you have an ALL lock || a lock on the same col - * new -> else - * - * CELL - * blocked -> somebody else's all lock || a lock on the same col || a lock on the same cell - * reuse -> you have a lock on the same cell - * yes -> (you have a lock on the same cell) && (nobody else has a lock on the same cell || the same col || all) - * new -> else - * - */ - - try { - if (locktype == ALL) { - if (lockvalue.length() > 0) { - throw new RuntimeException("Hmm, seems like you're calling an ALL with a specific value, are you sure you didn't want another type of lock?"); - } - - for (Lock l : cursor) { - if (!l.uid.equals(uid)) { - blocker = l; - break; - } else { - if (l.type == ALL) { - lock = l; - break; - } - } - } - } else if (locktype == COL) { - if (lockvalue.indexOf(',') > -1) { - throw new RuntimeException("Hmm, seems like you're calling a COL lock with a CELL value"); - } - - for (Lock l : cursor) { - if (!l.uid.equals(uid)) { - if (l.type == ALL || - (l.type == COL && l.value.equals(lockvalue)) || - (l.type == CELL && l.value.split(",")[0].equals(lockvalue))) { - blocker = l; - break; - } - } else { - if (l.type == ALL || - (l.type == COL && l.value.equals(lockvalue))) { - lock = l; - break; - } - } - } - } else if (locktype == CELL) { - if (lockvalue.indexOf(',') == -1) { - throw new RuntimeException("Hmm, seems like you're calling a CELL lock without specifying row and column: format must be 'row,column'"); - } - - for (Lock l : cursor) { - if (!l.uid.equals(uid)) { - if (l.type == ALL || - (l.type == COL && l.value.equals(lockvalue.split(",")[0])) || - (l.type == CELL && l.value.equals(lockvalue))) { - blocker = l; - break; - } - } else { - if (l.type == ALL || - (l.type == COL && l.value.equals(lockvalue.split(",")[0])) || - (l.type == CELL && l.value.equals(lockvalue))) { - lock = l; - break; - } - } - } - } - } finally { - cursor.close(); - } - - if (blocker != null) { - logger.info("found a blocking lock {}", lockToString(blocker)); - throw new RuntimeException("Can't obtain lock, it is blocked by a type '" + blocker.type + "' lock owned by '" + blocker.uid + "'"); - } - - if (lock == null) { - logger.info("no comparable lock already exists, creating a new one"); - lock = new Lock(Long.toHexString(txn.getId()), pid, uid, locktype, lockvalue); - lockById.put(txn, lock); - txn.commit(); - } - - } finally { - if (txn != null) { - txn.abort(); - txn = null; - } - } - - JSONObject o = lockToJSON(lock, uid); - o.put("status", "ok"); - respond(response, o); - - logger.trace("< obtain lock"); - } - - @Override - protected void releaseLock(HttpServletResponse response, String pid, String uid, String lid) throws Exception { - - Transaction txn = env.beginTransaction(null, null); - - try { - Lock lock = getLock(lid, pid, uid); - if (lock != null) { - if (!lock.uid.equals(uid)) { - throw new RuntimeException("User id doesn't match the lock owner, can't release the lock"); - } - lockById.delete(lid); - txn.commit(); - } - } finally { - if (txn != null) { - txn.abort(); - txn = null; - } - } - - if (response != null) { // this because the expiration thread can call this method without a real response - respond(response, OK); - } - } - - // ---------------------------------------------------------------------------------------------------- - - @Override - protected void startProject(HttpServletResponse response, String pid, String uid, String lid, byte[] data, String metadata, List transformations) throws Exception { - - Transaction txn = env.beginTransaction(null, null); - - try { - if (projectById.contains(pid)) { - throw new RuntimeException("Project '" + pid + "' already exists"); - } - - Lock lock = getLock(lid, pid, uid); - - if (lock.type != ALL) { - throw new RuntimeException("The lock you have is not enough to start a project"); - } - - projectById.put(txn, new Project(pid, data, metadata, transformations)); - txn.commit(); - } finally { - if (txn != null) { - txn.abort(); - txn = null; - } - } - - respond(response, OK); - } - - @Override - protected void addTransformations(HttpServletResponse response, String pid, String uid, String lid, List transformations) throws Exception { - - Transaction txn = env.beginTransaction(null, null); - - try { - Project project = getProject(pid); - - if (project == null) { - throw new RuntimeException("Project '" + pid + "' not found"); - } - - Lock lock = getLock(lid, pid, uid); - - logger.info("obtained lock: {}", lockToString(lock)); - - if (lock.type == ALL) { - project.transformations.addAll(transformations); - } else { - for (String s : transformations) { - JSONObject o = new JSONObject(s); - - int type = o.getInt("op_type"); - String value = o.getString("op_value"); - if (lock.type == COL) { - if (type == COL) { - if (value != null && value.equals(lock.value)) { - project.transformations.add(s); - } else { - throw new RuntimeException("Can't apply '" + s + "': you have a lock for column '" + lock.value + "' and you're attempting to modify column '" + value + "'."); - } - } else if (type == CELL) { - String column = value.split(",")[0]; - if (column != null && column.equals(lock.value)) { - project.transformations.add(s); - } else { - throw new RuntimeException("Can't apply '" + s + "': you have a lock for column '" + lock.value + "' and you're attempting to modify cell '" + value + "' in another column."); - } - } - } else if (lock.type == CELL) { - if (type == COL) { - throw new RuntimeException("Can't apply '" + s + "': you offered a lock for a single cell and you're attempting an operation for the entire column."); - } else if (type == CELL) { - if (value != null && value.equals(lock.value)) { - project.transformations.add(s); - } else { - throw new RuntimeException("Can't apply '" + s + "': you have a lock for cell '" + lock.value + "' and you're attempting to modify cell '" + value + "'."); - } - } - } - } - } - - projectById.put(txn, project); - - txn.commit(); - } finally { - if (txn != null) { - txn.abort(); - txn = null; - } - } - - respond(response, OK); - } - - // --------------------------------------------------------------------------------- - - @Override - protected void openProject(HttpServletResponse response, String pid) throws Exception { - Project project = getProject(pid); - - Writer w = response.getWriter(); - JSONWriter writer = new JSONWriter(w); - writer.object(); - writer.key("status"); writer.value("ok"); - writer.key("data"); writer.value(project.data); - writer.key("metadata"); writer.value(new JSONObject(project.metadata)); - writer.key("transformations"); - writer.array(); - for (String s : project.transformations) { - writer.value(new JSONObject(s)); - } - writer.endArray(); - writer.endObject(); - w.flush(); - w.close(); - } - - // --------------------------------------------------------------------------------- - - @Override - protected void getState(HttpServletResponse response, String pid, String uid, int rev) throws Exception { - - Project project = getProject(pid); - - Writer w = response.getWriter(); - JSONWriter writer = new JSONWriter(w); - - writer.object(); - writer.key("status"); writer.value("ok"); - writer.key("transformations"); - writer.array(); - int size = project.transformations.size(); - for (int i = rev; i < size; i++) { - writer.value(new JSONObject(project.transformations.get(i))); - } - writer.endArray(); - - EntityCursor cursor = locksByProject.subIndex(pid).entities(); - - try { - writer.key("locks"); - writer.array(); - for (Lock lock : cursor) { - writer.value(lockToJSON(lock, uid)); - } - writer.endArray(); - writer.endObject(); - - w.flush(); - w.close(); - } finally { - cursor.close(); - } - } - - // --------------------------------------------------------------------------------- - - Project getProject(String pid) { - Project project = projectById.get(pid); - if (project == null) { - throw new RuntimeException("Project '" + pid + "' could not be found: are you sure is not managed by another broker?"); - } - return project; - } - - @Entity - static class Project { - - @PrimaryKey - String pid; - - List transformations; - - byte[] data; - - String metadata; - - int rev; - - Project(String pid, byte[] data, String metadata, List transformations) { - this.pid = pid; - this.data = data; - this.metadata = metadata; - this.transformations = (transformations != null) ? transformations : new ArrayList(); - this.rev = this.transformations.size(); - } - - @SuppressWarnings("unused") - private Project() {} - } - - // --------------------------------------------------------------------------------- - - Lock getLock(String lid, String pid, String uid) { - Lock lock = lockById.get(lid); - checkLock(lock, lid, pid, uid); - return lock; - } - - void checkLock(Lock lock, String lid, String pid, String uid) { - if (lock == null) { - throw new RuntimeException("No lock was found with the given Lock id '" + lid + "', you have to have a valid lock on a project in order to start it"); - } - - if (!lock.pid.equals(pid)) { - throw new RuntimeException("Lock '" + lock.id + "' is for another project: " + lock.pid); - } - - if (!lock.uid.equals(uid)) { - throw new RuntimeException("Lock '" + lock.id + "' is owned by another user: " + lock.uid); - } - } - - Lock getLock(String pid, String uid, int locktype) { - Lock lock = null; - EntityCursor cursor = locksByProject.subIndex(pid).entities(); - - try { - for (Lock l : cursor) { - if (uid.equals(l.uid) && (locktype == l.type)) { - lock = l; - break; - } - } - } finally { - cursor.close(); - } - - return lock; - } - - JSONObject lockToJSON(Lock lock, String uid) throws JSONException { - JSONObject o = new JSONObject(); - if (lock != null) { - // NOTE: only the owner of the lock should get the ID, - // otherwise others can just fake ownership of other people's locks - if (lock.uid.equals(uid)) { - o.put("lock", lock.id); - } - - o.put("pid", lock.pid); - o.put("uid", lock.uid); - o.put("type", lock.type); - o.put("value", lock.value); - o.put("timestamp", lock.timestamp); - } - return o; - } - - String lockToString(Lock lock) { - return lock.id + "," + lock.pid + "," + lock.uid + "," + lock.type + "," + lock.value; - } - - @Entity - static class Lock { - - @PrimaryKey - String id; - - @SecondaryKey(relate=MANY_TO_ONE) - String pid; - - String uid; - - int type; - - String value; - - long timestamp; - - Lock(String id, String pid, String uid, int type, String value) { - this.id = id; - this.pid = pid; - this.uid = uid; - this.type = type; - this.value = value; - this.timestamp = System.currentTimeMillis(); - } - - @SuppressWarnings("unused") - private Lock() {} - } -} diff --git a/broker/core/tests/conf/tests.xml b/broker/core/tests/conf/tests.xml deleted file mode 100644 index 22b71232f..000000000 --- a/broker/core/tests/conf/tests.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/broker/core/tests/src/com/google/refine/broker/tests/RefineBrokerTests.java b/broker/core/tests/src/com/google/refine/broker/tests/RefineBrokerTests.java deleted file mode 100644 index be44254b2..000000000 --- a/broker/core/tests/src/com/google/refine/broker/tests/RefineBrokerTests.java +++ /dev/null @@ -1,485 +0,0 @@ -/* - -Copyright 2010, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -package com.google.refine.broker.tests; - -import static com.google.refine.broker.RefineBroker.*; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; - -import javax.servlet.ServletConfig; -import javax.servlet.ServletInputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.AfterSuite; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.BeforeSuite; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; - -import com.google.refine.broker.RefineBroker; -import com.google.refine.broker.RefineBrokerImpl; - -public class RefineBrokerTests { - - Logger logger; - File data; - - @BeforeSuite public void suite_init() { - System.setProperty("log4j.configuration", "tests.log4j.properties"); - data = new File("data"); - if (!data.exists()) data.mkdirs(); - } - - @AfterSuite public void suite_destroy() { - for (File f : data.listFiles()) { - f.delete(); - } - data.delete(); - } - - // ------------------------------------------------------------------------------------ - - ServletConfig config = null; - RefineBroker broker = null; - - @BeforeTest public void test_init() throws Exception { - logger = LoggerFactory.getLogger(this.getClass()); - config = mock(ServletConfig.class); - when(config.getInitParameter("refine.data")).thenReturn(data.getAbsolutePath()); - when(config.getInitParameter("refine.development")).thenReturn("true"); - - broker = new RefineBrokerImpl(); - broker.init(config); - } - - @AfterTest public void test_destroy() throws Exception { - broker.destroy(); - broker = null; - config = null; - } - - // ------------------------------------------------------------------------------------ - - HttpServletRequest request = null; - HttpServletResponse response = null; - StringWriter writer = null; - - @BeforeMethod public void setup() throws Exception { - request = mock(HttpServletRequest.class); - response = mock(HttpServletResponse.class); - } - - @AfterMethod public void teardown() throws Exception { - response = null; - request = null; - } - - // ------------------------------------------------------------------------------------ - - @Test public void testLifeCycle() { - Assert.assertTrue(true); - } - - @Test public void testService() { - try { - success(broker, request, response, EXPIRE); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testObtainLockFailure() { - try { - failure(broker, request, response, OBTAIN_LOCK); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testReleaseLockFailure() { - try { - failure(broker, request, response, RELEASE_LOCK); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testGetStateFailure() { - try { - failure(broker, request, response, GET_STATE, "pid", "project1934983948", "uid", "testuser", "rev", "0"); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testBrokenAllLockFailure() { - try { - failure(broker, request, response, OBTAIN_LOCK, "pid", "project", "uid", "testuser", "locktype", Integer.toString(ALL), "lockvalue", "1"); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testBrokenColLockFailure() { - try { - failure(broker, request, response, OBTAIN_LOCK, "pid", "project", "uid", "testuser", "locktype", Integer.toString(COL), "lockvalue", "1,1"); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testBrokenCellLockFailure() { - try { - failure(broker, request, response, OBTAIN_LOCK, "pid", "project", "uid", "testuser", "locktype", Integer.toString(CELL), "lockvalue", "1"); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testLockSimple() { - String project = "proj0"; - String user = "testuser"; - - try { - logger.info("--- obtain ALL lock on project ---"); - JSONObject result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(ALL), "lockvalue", ""); - assertJSON(result, "uid", "testuser"); - String lock = result.getString("lock"); - - logger.info("--- obtain ALL lock on project ---"); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user, "lock", lock); - - logger.info("--- obtain COL lock on project ---"); - result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(COL), "lockvalue", "1"); - assertJSON(result, "uid", "testuser"); - lock = result.getString("lock"); - - logger.info("--- release COL lock on project ---"); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user, "lock", lock); - - logger.info("--- obtain CELL lock on project ---"); - result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(CELL), "lockvalue", "1,1"); - assertJSON(result, "uid", "testuser"); - lock = result.getString("lock"); - - logger.info("--- release CELL lock on project ---"); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user, "lock", lock); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testLocksAllBlocks() { - String project = "proj1"; - String user = "testuser"; - String user2 = "testuser2"; - - try { - logger.info("--- obtain ALL lock on project ---"); - JSONObject result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(ALL), "lockvalue", ""); - assertJSON(result, "uid", user); - String lock = result.getString("lock"); - - logger.info("--- another using asking for any lock will fail ---"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(ALL), "lockvalue", ""); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(COL), "lockvalue", "1"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(CELL), "lockvalue", "1,1"); - - logger.info("--- same user asking for lower capable locks will return the ALL one ---"); - result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(COL), "lockvalue", "1"); - String lock2 = result.getString("lock"); - Assert.assertEquals(lock, lock2); - - result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(CELL), "lockvalue", "1,1"); - lock2 = result.getString("lock"); - Assert.assertEquals(lock, lock2); - - logger.info("--- release the ALL lock ---"); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user, "lock", lock); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testLocksColBlocks() { - String project = "proj2"; - String user = "testuser"; - String user2 = "testuser2"; - - try { - logger.info("--- obtain COL lock on project ---"); - JSONObject result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(COL), "lockvalue", "1"); - String lock = result.getString("lock"); - - logger.info("--- other user must fail to obtain lock on the same COL or ALL ---"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(ALL), "lockvalue", ""); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(COL), "lockvalue", "1"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(CELL), "lockvalue", "1,1"); - - logger.info("--- but succeed in getting a COL lock on another column or cell ---"); - result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(COL), "lockvalue", "2"); - String lock2 = result.getString("lock"); - - logger.info("--- now it's our first user's turn to fail to get lock ---"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(ALL), "lockvalue", ""); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(COL), "lockvalue", "2"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(CELL), "lockvalue", "2,1"); - - logger.info("--- release the locks ---"); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user, "lock", lock); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user2, "lock", lock2); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testLocksCellBlocks() { - String project = "proj3"; - String user = "testuser"; - String user2 = "testuser2"; - - try { - logger.info("--- obtain CELL lock on project ---"); - JSONObject result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(CELL), "lockvalue", "1,1"); - String lock = result.getString("lock"); - - logger.info("--- other user must fail to obtain lock on the same CELL, COL or ALL ---"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(ALL), "lockvalue", ""); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(COL), "lockvalue", "1"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(CELL), "lockvalue", "1,1"); - - logger.info("--- but succeed in getting a CELL lock on a cell in another column ---"); - result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(CELL), "lockvalue", "2,1"); - String lock2 = result.getString("lock"); - - logger.info("--- now it's our first user's turn to fail to get lock ---"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(ALL), "lockvalue", ""); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(COL), "lockvalue", "2"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(CELL), "lockvalue", "2,1"); - - logger.info("--- release the locks ---"); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user, "lock", lock); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user2, "lock", lock2); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test public void testCompleteProjectLifeCycle() { - try { - String project = "proj4"; - String user = "testuser"; - String user2 = "testuser2"; - String data = "blah"; - String metadata = "{}"; - String transformations = "[]"; - String rev = "0"; - - logger.info("--- obtain ALL lock on project ---"); - JSONObject result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(ALL), "lockvalue", ""); - assertJSON(result, "uid", user); - String lock = result.getString("lock"); - - logger.info("--- start project ---"); - success(broker, request, response, START, "pid", project, "uid", user, "lock", lock, "data", data, "metadata", metadata, "transformations", transformations); - - logger.info("--- verify project state contains lock ---"); - result = success(broker, request, response, GET_STATE, "pid", project, "uid", user, "rev", rev); - JSONArray locks = result.getJSONArray("locks"); - Assert.assertEquals(locks.length(), 1); - JSONObject l = locks.getJSONObject(0); - assertJSON(l, "uid", "testuser"); - Assert.assertEquals(l.getInt("type"), ALL); - - logger.info("--- release ALL lock on project ---"); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user, "lock", lock); - - logger.info("--- verify no locks are present ---"); - result = success(broker, request, response, GET_STATE, "pid", project, "uid", user, "rev", rev); - locks = result.getJSONArray("locks"); - Assert.assertEquals(locks.length(), 0); - - logger.info("--- open project and verify data was loaded correctly ---"); - result = success(broker, request, response, OPEN, "pid", project, "uid", user, "rev", rev); - JSONArray result_data = result.getJSONArray("data"); - Assert.assertEquals(result_data.length(),data.getBytes("UTF-8").length); - - JSONArray tt; - JSONObject t; - - logger.info("--- obtain column lock ---"); - String column = "1"; - result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(COL), "lockvalue", column); - String col_lock = result.getString("lock"); - - logger.info("--- perform column transformation ---"); - t = new JSONObject(); - t.put("op_type", COL); - t.put("op_value", column); // operate on col 1 - t.put("value", new JSONObject()); - tt = new JSONArray(); - tt.put(t); - result = success(broker, request, response, TRANSFORM, "pid", project, "uid", user, "lock", col_lock, "transformations", tt.toString()); - - logger.info("--- make sure transformation was recorded properly ---"); - result = success(broker, request, response, GET_STATE, "pid", project, "uid", user, "rev", "0"); - tt = result.getJSONArray("transformations"); - Assert.assertEquals(tt.length(), 1); - t = tt.getJSONObject(0); - assertJSON(t, "op_value", column); - - logger.info("--- make sure revision numbers in state management work as expected ---"); - result = success(broker, request, response, GET_STATE, "pid", project, "uid", user, "rev", "1"); - tt = result.getJSONArray("transformations"); - Assert.assertEquals(tt.length(), 0); - - logger.info("--- perform cell transformation ---"); - String cell = "1"; - t = new JSONObject(); - t.put("op_type", CELL); - t.put("op_value", column + "," + cell); // operate on cell at row 1 column 1 - t.put("value", new JSONObject()); - tt = new JSONArray(); - tt.put(t); - result = success(broker, request, response, TRANSFORM, "pid", project, "uid", user, "lock", col_lock, "transformations", tt.toString()); - - logger.info("--- make sure transformation was recorded properly ---"); - result = success(broker, request, response, GET_STATE, "pid", project, "uid", user, "rev", "0"); - tt = result.getJSONArray("transformations"); - Assert.assertEquals(tt.length(), 2); - - result = success(broker, request, response, GET_STATE, "pid", project, "uid", user, "rev", "1"); - tt = result.getJSONArray("transformations"); - Assert.assertEquals(tt.length(), 1); - t = tt.getJSONObject(0); - assertJSON(t, "op_value", column + "," + cell); - - logger.info("--- make sure another user fails to acquire ALL lock ---"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(ALL), "lockvalue", ""); - - logger.info("--- make sure another user fails to acquire COL lock on the same column ---"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(COL), "lockvalue", column); - - logger.info("--- make sure another user manages to acquire COL lock on another column ---"); - String column2 = "2"; - result = success(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user2, "locktype", Integer.toString(COL), "lockvalue", column2); - String col_lock2 = result.getString("lock"); - - logger.info("--- make sure that both locks are present ---"); - result = success(broker, request, response, GET_STATE, "pid", project, "uid", user, "rev", "2"); - locks = result.getJSONArray("locks"); - Assert.assertEquals(locks.length(), 2); - - logger.info("--- make sure we can't escalate our current COL lock to an ALL lock ---"); - failure(broker, request, response, OBTAIN_LOCK, "pid", project, "uid", user, "locktype", Integer.toString(ALL), "lockvalue", ""); - - logger.info("--- release column locks ---"); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user, "lock", col_lock); - success(broker, request, response, RELEASE_LOCK, "pid", project, "uid", user2, "lock", col_lock2); - - logger.info("--- make sure the project has no locks ---"); - result = success(broker, request, response, GET_STATE, "pid", project, "uid", user, "rev", "2"); - locks = result.getJSONArray("locks"); - Assert.assertEquals(locks.length(), 0); - - } catch (Exception e) { - Assert.fail(); - } - } - - // ------------------------------------------------------------------------------------ - - private void assertJSON(JSONObject o, String name, String value) throws JSONException { - Assert.assertEquals(o.get(name), value); - } - - private JSONObject success(RefineBroker broker, HttpServletRequest request, HttpServletResponse response, String service, String... params) throws Exception { - return call(true, broker, request, response, service, params); - } - - private JSONObject failure(RefineBroker broker, HttpServletRequest request, HttpServletResponse response, String service, String... params) throws Exception { - return call(false, broker, request, response, service, params); - } - - private JSONObject call(boolean successful, RefineBroker broker, HttpServletRequest request, HttpServletResponse response, String service, String... params) throws Exception { - if (params != null) { - for (int i = 0; i < params.length; ) { - String name = params[i++]; - String value = params[i++]; - if ("data".equals(name)) { - final ByteArrayInputStream inputStream = new ByteArrayInputStream(value.getBytes("UTF-8")); - when(request.getInputStream()).thenReturn(new ServletInputStream() { - public int read() throws IOException { - return inputStream.read(); - } - }); - } else { - when(request.getParameter(name)).thenReturn(value); - } - } - } - - StringWriter writer = new StringWriter(); - when(response.getWriter()).thenReturn(new PrintWriter(writer)); - - broker.process(service, request, response); - - JSONObject result = new JSONObject(writer.toString()); - - if (successful) { - assertJSON(result, "status", "ok"); - } else { - assertJSON(result, "status", "error"); - } - - logger.info(result.toString()); - - return result; - } -} diff --git a/broker/core/tests/src/tests.log4j.properties b/broker/core/tests/src/tests.log4j.properties deleted file mode 100644 index d8c0aa370..000000000 --- a/broker/core/tests/src/tests.log4j.properties +++ /dev/null @@ -1,6 +0,0 @@ -log4j.rootLogger=INFO, console - -log4j.appender.console=org.apache.log4j.ConsoleAppender - -log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=%-4r %-5p [%t] %m%n \ No newline at end of file