diff options
42 files changed, 3860 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/.classpath b/plugins/org.eclipse.emf.cdo.server.net4j/.classpath new file mode 100644 index 0000000000..64c5e31b7a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/.cvsignore b/plugins/org.eclipse.emf.cdo.server.net4j/.cvsignore new file mode 100644 index 0000000000..693869726d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/.cvsignore @@ -0,0 +1,2 @@ +bin +doc diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/.options b/plugins/org.eclipse.emf.cdo.server.net4j/.options new file mode 100644 index 0000000000..34c8a92780 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/.options @@ -0,0 +1,11 @@ +# Debugging and tracing options + +org.eclipse.emf.cdo.server.net4j/debug = true +org.eclipse.emf.cdo.server.net4j/debug.protocol = true +org.eclipse.emf.cdo.server.net4j/debug.repository = true +org.eclipse.emf.cdo.server.net4j/debug.session = true +org.eclipse.emf.cdo.server.net4j/debug.transaction = true +org.eclipse.emf.cdo.server.net4j/debug.revision = true +org.eclipse.emf.cdo.server.net4j/debug.resource = true +org.eclipse.emf.cdo.server.net4j/debug.store = true +org.eclipse.emf.cdo.server.net4j/debug.types = true diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/.project b/plugins/org.eclipse.emf.cdo.server.net4j/.project new file mode 100644 index 0000000000..65c8fc3d1e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/.project @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.cdo.server.net4j.net4j</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> + </natures> +</projectDescription> diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..92654e06ca --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,272 @@ +#Sun Mar 01 17:27:11 CET 2009 +eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=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_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=1 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=2 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=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=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_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.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=120 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..10e967d21a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,118 @@ +#Wed Sep 17 09:23:34 CEST 2008 +cleanup.add_default_serial_version_id=true +cleanup.add_generated_serial_version_id=false +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_serial_version_id=true +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=false +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=true +cleanup.format_source_code=true +cleanup.format_source_code_changes_only=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=false +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=true +cleanup.organize_imports=true +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +cleanup.qualify_static_member_accesses_with_declaring_class=false +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_trailing_whitespaces=true +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=false +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_blocks=true +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_parentheses_in_expressions=true +cleanup.use_this_for_non_static_field_access=true +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=true +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup_profile=_EMFT +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_EMFT +formatter_settings_version=11 +org.eclipse.jdt.ui.exception.name=ex +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=org.eclipse.emf.cdo;org.eclipse.emf.internal.cdo;org.eclipse.net4j;org.eclipse.internal.net4j;org.eclipse.emf;org.eclipse;com;org;javax;java; +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.ondemandthreshold=99 +org.eclipse.jdt.ui.overrideannotation=true +org.eclipse.jdt.ui.staticondemandthreshold=99 +org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment"/><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n * Eike Stepper - initial API and implementation\r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author Eike Stepper\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment"/><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment"/><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates> +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=false +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=true +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.make_local_variable_final=false +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=true +sp_cleanup.on_save_use_additional_actions=true +sp_cleanup.organize_imports=true +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_trailing_whitespaces=true +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=true +sp_cleanup.remove_unused_imports=true +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_blocks=true +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_parentheses_in_expressions=true +sp_cleanup.use_this_for_non_static_field_access=true +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=true +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000000..e55598dd60 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.mylyn.tasks.ui.prefs @@ -0,0 +1,4 @@ +#Sun Mar 09 19:10:10 CET 2008 +eclipse.preferences.version=1 +project.repository.kind=bugzilla +project.repository.url=https\://bugs.eclipse.org/bugs diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.mylyn.team.ui.prefs new file mode 100644 index 0000000000..c934014306 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.mylyn.team.ui.prefs @@ -0,0 +1,3 @@ +#Sun Mar 09 19:10:10 CET 2008 +commit.comment.template=[${task.id}] ${task.description} \r\n${task.url} +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.pde.prefs new file mode 100644 index 0000000000..2ab30d1a8c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/.settings/org.eclipse.pde.prefs @@ -0,0 +1,25 @@ +#Thu May 14 11:06:01 BST 2009 +compilers.f.unresolved-features=1 +compilers.f.unresolved-plugins=1 +compilers.incompatible-environment=1 +compilers.p.build=1 +compilers.p.deprecated=1 +compilers.p.discouraged-class=1 +compilers.p.internal=1 +compilers.p.missing-packages=1 +compilers.p.missing-version-export-package=1 +compilers.p.missing-version-import-package=1 +compilers.p.missing-version-require-bundle=1 +compilers.p.no-required-att=0 +compilers.p.not-externalized-att=1 +compilers.p.unknown-attribute=1 +compilers.p.unknown-class=1 +compilers.p.unknown-element=1 +compilers.p.unknown-identifier=1 +compilers.p.unknown-resource=1 +compilers.p.unresolved-ex-points=0 +compilers.p.unresolved-import=0 +compilers.s.create-docs=false +compilers.s.doc-folder=doc +compilers.s.open-tags=1 +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/CDOServer.launch b/plugins/org.eclipse.emf.cdo.server.net4j/CDOServer.launch new file mode 100644 index 0000000000..dc2ecc3998 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/CDOServer.launch @@ -0,0 +1,363 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench"> +<booleanAttribute key="append.args" value="true"/> +<stringAttribute key="application" value="org.eclipse.emf.cdo.server.net4j.app"/> +<booleanAttribute key="askclear" value="true"/> +<booleanAttribute key="automaticAdd" value="false"/> +<booleanAttribute key="automaticValidate" value="false"/> +<stringAttribute key="bootstrap" value=""/> +<stringAttribute key="checked" value="org.eclipse.emf.cdo.server.net4j,org.eclipse.emf.cdo.server.net4j.db,org.eclipse.net4j,org.eclipse.net4j.db,org.eclipse.net4j.db.derby,org.eclipse.net4j.http.common,org.eclipse.net4j.http.server,org.eclipse.net4j.tcp,org.eclipse.net4j.util"/> +<booleanAttribute key="clearConfig" value="true"/> +<booleanAttribute key="clearws" value="false"/> +<booleanAttribute key="clearwslog" value="false"/> +<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/CDOServer"/> +<booleanAttribute key="default" value="false"/> +<booleanAttribute key="includeOptional" value="true"/> +<stringAttribute key="location" value="${workspace_loc}/../cdo.server"/> +<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> +<listEntry value="org.eclipse.debug.ui.launchGroup.run"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -debug -console"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx1024m -Ddebug=true -Dnet4j.config="${resource_loc:/org.eclipse.emf.cdo.server.net4j.product/rootfiles/configuration}" -Dorg.osgi.service.http.port=8080"/> +<stringAttribute key="pde.version" value="3.3"/> +<stringAttribute key="product" value="org.eclipse.sdk.ide"/> +<stringAttribute key="selected_target_plugins" value="org.eclipse.core.filesystem.win32.x86@default:false,com.springsource.org.apache.commons.logging@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.core.resources.win32.x86@default:false,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.variables@default:default,org.eclipse.core.expressions@default:default,org.eclipse.emf.common@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.app@default:default,org.eclipse.emf.ecore.xmi@default:default,com.springsource.org.hsqldb@default:default,org.eclipse.core.contenttype@default:default,com.springsource.com.mysql.jdbc@default:default,org.eclipse.equinox.common@default:default,org.mortbay.jetty.server@default:default,org.eclipse.team.core@default:default,javax.servlet@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.http.registry@default:default,com.springsource.javax.xml.stream@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.resources@default:default,org.mortbay.jetty.util@default:default,org.apache.derby@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.core.resources.compatibility@default:false,org.eclipse.core.jobs@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.runtime@default:true,org.eclipse.osgi@default:default,org.eclipse.emf.ecore@default:default"/> +<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.server.net4j@default:default,org.eclipse.net4j.db.derby@default:default,org.eclipse.emf.cdo.server.net4j.db@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.db.mysql@default:default,org.eclipse.net4j.util@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.db.hsqldb@default:default,org.eclipse.net4j@default:default"/> +<booleanAttribute key="show_selected_only" value="false"/> +<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/> +<booleanAttribute key="tracing" value="true"/> +<mapAttribute key="tracingOptions"> +<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/> +<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/> +<mapEntry key="org.eclipse.ui/trace/sources" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/> +<mapEntry key="org.eclipse.net4j.buddies.chat/debug" value="true"/> +<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/> +<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/> +<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/> +<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/> +<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/> +<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug" value="true"/> +<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/> +<mapEntry key="org.eclipse.net4j.tcp/debug" value="true"/> +<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server.net4j/debug.repository" value="true"/> +<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/> +<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.common/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/> +<mapEntry key="org.eclipse.net4j.util/debug.lifecycle.dump" value="true"/> +<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.util" value="true"/> +<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/> +<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/> +<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/> +<mapEntry key="org.eclipse.ui/debug" value="false"/> +<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/> +<mapEntry key="org.eclipse.pde.core/classpath" value="false"/> +<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/> +<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/> +<mapEntry key="org.eclipse.net4j.jms.server/debug.store" value="true"/> +<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/> +<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/> +<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/> +<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/> +<mapEntry key="org.eclipse.team.core/threading" value="false"/> +<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/> +<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/> +<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/> +<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/> +<mapEntry key="org.eclipse.net4j.db/debug" value="true"/> +<mapEntry key="org.eclipse.net4j.buddies.chat.ui/debug" value="true"/> +<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/> +<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/> +<mapEntry key="org.eclipse.net4j.jms/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.debug.ui/debug" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/> +<mapEntry key="org.eclipse.help.base/debug/search" value="false"/> +<mapEntry key="org.eclipse.pde.build/debug" value="false"/> +<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/> +<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/> +<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/> +<mapEntry key="org.eclipse.update.core/debug/type" value="false"/> +<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/> +<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/> +<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/> +<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/> +<mapEntry key="org.eclipse.core.resources/refresh" value="false"/> +<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/> +<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/> +<mapEntry key="org.eclipse.help.webapp/debug" value="true"/> +<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/> +<mapEntry key="org.eclipse.osgi/debug" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server.net4j/debug.types" value="true"/> +<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/> +<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/> +<mapEntry key="org.eclipse.net4j.buddies/debug" value="true"/> +<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/> +<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/> +<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/> +<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/> +<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/> +<mapEntry key="org.eclipse.net4j/perf" value="false"/> +<mapEntry key="org.eclipse.help.base/debug" value="true"/> +<mapEntry key="org.eclipse.net4j/debug" value="true"/> +<mapEntry key="org.eclipse.net4j/debug.signal" value="true"/> +<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/> +<mapEntry key="org.eclipse.net4j.fileshare/debug" value="true"/> +<mapEntry key="org.eclipse.net4j.db.hsqldb/debug.sql" value="true"/> +<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/> +<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/> +<mapEntry key="org.eclipse.net4j/debug.buffer" value="true"/> +<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.repository" value="true"/> +<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/> +<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.examples/debug" value="true"/> +<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/> +<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/> +<mapEntry key="org.eclipse.ui.ide/debug" value="false"/> +<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/> +<mapEntry key="org.eclipse.pde.core/debug" value="true"/> +<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/> +<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/> +<mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/> +<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/> +<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/> +<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.object" value="true"/> +<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/> +<mapEntry key="org.eclipse.emf.cdo.server.net4j/debug.revision" value="true"/> +<mapEntry key="org.eclipse.core.resources/strings" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/> +<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/> +<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/> +<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/> +<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/> +<mapEntry key="org.eclipse.core.resources/preferences" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/> +<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/> +<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/perf.revision" value="false"/> +<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/> +<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/> +<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server.net4j/debug.session" value="true"/> +<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/> +<mapEntry key="org.eclipse.update.core/debug" value="true"/> +<mapEntry key="org.eclipse.osgi/debug/security" value="false"/> +<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/> +<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/> +<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/> +<mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.net4j.db.hsqldb/debug" value="true"/> +<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/> +<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server.net4j/debug.store" value="true"/> +<mapEntry key="org.eclipse.core.resources/history" value="false"/> +<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/> +<mapEntry key="org.eclipse.pde.core/validation" value="false"/> +<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/> +<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/> +<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/> +<mapEntry key="org.eclipse.core.runtime/debug" value="false"/> +<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/> +<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/> +<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/> +<mapEntry key="org.eclipse.emf.cdo/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/> +<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.common/perf.revision" value="true"/> +<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.common/debug.model" value="true"/> +<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/> +<mapEntry key="org.eclipse.emf.cdo.common/perf.revision.reading" value="true"/> +<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/> +<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/> +<mapEntry key="org.eclipse.net4j/debug.connector" value="true"/> +<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/> +<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/> +<mapEntry key="org.eclipse.core.resources/restore" value="false"/> +<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/> +<mapEntry key="org.eclipse.net4j.buddies.server/debug" value="true"/> +<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/> +<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/> +<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/> +<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/> +<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/> +<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/> +<mapEntry key="org.eclipse.net4j/debug.acceptor" value="true"/> +<mapEntry key="org.eclipse.net4j.buddies.ui/debug" value="true"/> +<mapEntry key="org.eclipse.emf.cdo/perf" value="false"/> +<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/> +<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/> +<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/> +<mapEntry key="org.eclipse.net4j.jvm/debug" value="true"/> +<mapEntry key="org.eclipse.ui/trace/operations" value="false"/> +<mapEntry key="org.eclipse.update.core/debug/install" value="false"/> +<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/> +<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/> +<mapEntry key="org.eclipse.net4j.util/debug.lifecycle" value="true"/> +<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/> +<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/> +<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/> +<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/> +<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/> +<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/> +<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/> +<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/> +<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/> +<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/> +<mapEntry key="org.eclipse.help/debug/context" value="false"/> +<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug" value="true"/> +<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.ui/debug" value="true"/> +<mapEntry key="org.eclipse.net4j.examples/debug" value="true"/> +<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/> +<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/> +<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/> +<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/> +<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/> +<mapEntry key="org.eclipse.team.core/debug" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.common/debug.revision" value="true"/> +<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/> +<mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/> +<mapEntry key="org.eclipse.core.resources/save" value="false"/> +<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/> +<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/> +<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server.net4j/debug" value="true"/> +<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/> +<mapEntry key="org.eclipse.osgi/debug/events" value="false"/> +<mapEntry key="org.eclipse.ui/trace/commands" value="false"/> +<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/> +<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/> +<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/> +<mapEntry key="org.eclipse.net4j.util/debug.om" value="true"/> +<mapEntry key="org.eclipse.net4j.jms.server/debug" value="true"/> +<mapEntry key="org.eclipse.net4j.db.mysql/debug" value="true"/> +<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/> +<mapEntry key="org.eclipse.net4j.util/debug" value="true"/> +<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/> +<mapEntry key="org.eclipse.ui.intro/debug" value="true"/> +<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/> +<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/> +<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server.net4j/debug.resource" value="true"/> +<mapEntry key="org.eclipse.net4j.db.derby/debug.sql" value="true"/> +<mapEntry key="org.eclipse.net4j.debug/debug" value="true"/> +<mapEntry key="org.eclipse.pde.core/cache" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.transaction" value="true"/> +<mapEntry key="org.eclipse.emf.cdo.server.net4j.db/debug" value="true"/> +<mapEntry key="org.eclipse.net4j/debug.selector" value="true"/> +<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.common/perf" value="true"/> +<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/> +<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/> +<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/> +<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/> +<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/> +<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/> +<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/> +<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/> +<mapEntry key="org.eclipse.net4j.util/debug.concurrency" value="true"/> +<mapEntry key="org.eclipse.net4j.fileshare.ui/debug" value="true"/> +<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/> +<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/> +<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/> +<mapEntry key="org.eclipse.core.resources/natures" value="false"/> +<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/> +<mapEntry key="org.eclipse.emf.cdo.common/perf.revision.writing" value="true"/> +<mapEntry key="org.eclipse.net4j.jms.admin/debug" value="true"/> +<mapEntry key="org.eclipse.emf.cdo/debug.model" value="true"/> +<mapEntry key="org.eclipse.net4j.db.derby/debug" value="true"/> +<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/> +<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/> +<mapEntry key="org.eclipse.help/debug/search" value="false"/> +<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/> +<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/> +<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/> +<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/> +<mapEntry key="org.eclipse.team.core/streams" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.common/debug" value="true"/> +<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/> +<mapEntry key="org.eclipse.net4j.ui/debug" value="true"/> +<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/> +<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/> +<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/> +<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.session" value="true"/> +<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.adapter" value="true"/> +<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/> +<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/> +<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/> +<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/> +<mapEntry key="org.eclipse.osgi/debug/services" value="false"/> +<mapEntry key="org.eclipse.net4j.db.mysql/debug.sql" value="true"/> +<mapEntry key="org.eclipse.net4j.util.ui/debug" value="true"/> +<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/> +<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/> +<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/> +<mapEntry key="org.eclipse.net4j.buddies.common/debug" value="true"/> +<mapEntry key="org.eclipse.debug.core/debug" value="false"/> +<mapEntry key="org.eclipse.core.resources/debug" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server.net4j/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.ui.browser/debug" value="false"/> +<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/> +<mapEntry key="org.eclipse.update.core/debug/web" value="false"/> +<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/> +<mapEntry key="org.eclipse.help/debug" value="true"/> +<mapEntry key="org.eclipse.core.runtime/perf" value="false"/> +<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/> +<mapEntry key="org.eclipse.net4j/debug.channel" value="true"/> +<mapEntry key="org.eclipse.emf.cdo/perf.revision.loading" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.revision" value="true"/> +<mapEntry key="org.eclipse.emf.cdo/debug.view" value="true"/> +<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/> +<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/> +<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/> +<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/> +<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/> +<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/> +<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.resource" value="true"/> +<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/> +<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/> +<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/> +<mapEntry key="org.eclipse.net4j/debug.buffer.stream" value="false"/> +<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/> +<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/> +<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/> +<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/> +<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/> +<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/> +<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/> +<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/> +<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/> +<mapEntry key="org.eclipse.update.configurator/debug" value="false"/> +<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/> +<mapEntry key="org.eclipse.help.ui/debug" value="true"/> +<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/> +<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/> +</mapAttribute> +<booleanAttribute key="useDefaultConfig" value="true"/> +<booleanAttribute key="useDefaultConfigArea" value="true"/> +<booleanAttribute key="useNamedJRE" value="true"/> +<booleanAttribute key="useProduct" value="false"/> +<booleanAttribute key="usefeatures" value="false"/> +</launchConfiguration> diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/AuthenticationRequest.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/AuthenticationRequest.java new file mode 100644 index 0000000000..39b233ada7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/AuthenticationRequest.java @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.protocol.CDOAuthenticationResult; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; + +import org.eclipse.net4j.signal.RequestWithConfirmation; +import org.eclipse.net4j.util.io.ExtendedDataInputStream; +import org.eclipse.net4j.util.io.ExtendedDataOutputStream; + +/** + * @author Eike Stepper + */ +public class AuthenticationRequest extends RequestWithConfirmation<CDOAuthenticationResult> +{ + private byte[] randomToken; + + public AuthenticationRequest(CDOServerProtocol protocol, byte[] randomToken) + { + super(protocol, CDOProtocolConstants.SIGNAL_AUTHENTICATION); + this.randomToken = randomToken; + } + + @Override + protected void requesting(ExtendedDataOutputStream out) throws Exception + { + out.writeByteArray(randomToken); + } + + @Override + protected CDOAuthenticationResult confirming(ExtendedDataInputStream in) throws Exception + { + boolean authenticated = in.readBoolean(); + if (!authenticated) + { + return null; + } + + return new CDOAuthenticationResult(in); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOReadIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOReadIndication.java new file mode 100644 index 0000000000..4e6d000a1e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOReadIndication.java @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.internal.server.Session; +import org.eclipse.emf.cdo.server.StoreThreadLocal; + +import org.eclipse.net4j.buffer.BufferInputStream; +import org.eclipse.net4j.buffer.BufferOutputStream; + +/** + * @author Eike Stepper + */ +public abstract class CDOReadIndication extends CDOServerIndication +{ + public CDOReadIndication(CDOServerProtocol protocol, short signalID) + { + super(protocol, signalID); + } + + @Override + protected void execute(BufferInputStream in, BufferOutputStream out) throws Exception + { + try + { + Session session = getSession(); + StoreThreadLocal.setSession(session); + super.execute(in, out); + } + finally + { + StoreThreadLocal.release(); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerIndication.java new file mode 100644 index 0000000000..a1ceee51aa --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerIndication.java @@ -0,0 +1,137 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + * Simon McDuff - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory; +import org.eclipse.emf.cdo.common.id.CDOIDProvider; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.model.CDOPackageRegistry; +import org.eclipse.emf.cdo.common.revision.CDOListFactory; +import org.eclipse.emf.cdo.common.revision.CDORevisionResolver; +import org.eclipse.emf.cdo.internal.common.io.CDODataInputImpl; +import org.eclipse.emf.cdo.internal.common.io.CDODataOutputImpl; +import org.eclipse.emf.cdo.internal.common.revision.CDOListImpl; +import org.eclipse.emf.cdo.internal.server.Repository; +import org.eclipse.emf.cdo.internal.server.Session; +import org.eclipse.emf.cdo.server.IStore; + +import org.eclipse.net4j.signal.IndicationWithResponse; +import org.eclipse.net4j.util.io.ExtendedDataInputStream; +import org.eclipse.net4j.util.io.ExtendedDataOutputStream; +import org.eclipse.net4j.util.io.StringIO; +import org.eclipse.net4j.util.lifecycle.LifecycleUtil; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public abstract class CDOServerIndication extends IndicationWithResponse +{ + public CDOServerIndication(CDOServerProtocol protocol, short signalID) + { + super(protocol, signalID); + } + + @Override + public CDOServerProtocol getProtocol() + { + return (CDOServerProtocol)super.getProtocol(); + } + + protected Session getSession() + { + return (Session)getProtocol().getSession(); + } + + protected Repository getRepository() + { + Repository repository = (Repository)getSession().getManager().getRepository(); + if (!LifecycleUtil.isActive(repository)) + { + throw new IllegalStateException("Repository has been deactivated"); //$NON-NLS-1$ + } + + return repository; + } + + protected IStore getStore() + { + IStore store = getRepository().getStore(); + if (!LifecycleUtil.isActive(store)) + { + throw new IllegalStateException("Store has been deactivated"); //$NON-NLS-1$ + } + + return store; + } + + @Override + protected final void indicating(ExtendedDataInputStream in) throws Exception + { + indicating(new CDODataInputImpl(in) + { + @Override + protected CDORevisionResolver getRevisionResolver() + { + return getRepository().getRevisionManager(); + } + + @Override + protected CDOPackageRegistry getPackageRegistry() + { + return getRepository().getPackageRegistry(); + } + + @Override + protected StringIO getPackageURICompressor() + { + return getProtocol().getPackageURICompressor(); + } + + @Override + protected CDOIDObjectFactory getIDFactory() + { + return getStore().getCDOIDObjectFactory(); + } + + @Override + protected CDOListFactory getListFactory() + { + return CDOListImpl.FACTORY; + } + }); + } + + @Override + protected final void responding(ExtendedDataOutputStream out) throws Exception + { + responding(new CDODataOutputImpl(out) + { + @Override + protected StringIO getPackageURICompressor() + { + return getProtocol().getPackageURICompressor(); + } + + public CDOIDProvider getIDProvider() + { + return getSession(); + } + }); + } + + protected abstract void indicating(CDODataInput in) throws IOException; + + protected abstract void responding(CDODataOutput out) throws IOException; +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocol.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocol.java new file mode 100644 index 0000000000..941fa28b75 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocol.java @@ -0,0 +1,221 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + * Simon McDuff - http://bugs.eclipse.org/233273 + * Simon McDuff - http://bugs.eclipse.org/230832 + * Simon McDuff - http://bugs.eclipse.org/233490 + * Simon McDuff - http://bugs.eclipse.org/213402 + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDAndVersion; +import org.eclipse.emf.cdo.common.model.CDOPackageUnit; +import org.eclipse.emf.cdo.common.protocol.CDOAuthenticationResult; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; +import org.eclipse.emf.cdo.server.IRepositoryProvider; +import org.eclipse.emf.cdo.server.ISession; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; +import org.eclipse.emf.cdo.spi.server.ISessionProtocol; + +import org.eclipse.net4j.channel.IChannel; +import org.eclipse.net4j.signal.SignalProtocol; +import org.eclipse.net4j.signal.SignalReactor; +import org.eclipse.net4j.util.io.StringCompressor; +import org.eclipse.net4j.util.io.StringIO; +import org.eclipse.net4j.util.lifecycle.LifecycleUtil; + +import java.util.List; + +/** + * @author Eike Stepper + */ +public class CDOServerProtocol extends SignalProtocol<ISession> implements ISessionProtocol +{ + public static final long DEFAULT_NEGOTIATION_TIMEOUT = 15 * 1000; + + private long negotiationTimeout = DEFAULT_NEGOTIATION_TIMEOUT; + + private IRepositoryProvider repositoryProvider; + + private StringIO packageURICompressor = new StringCompressor(false); + + public CDOServerProtocol(IRepositoryProvider repositoryProvider) + { + super(CDOProtocolConstants.PROTOCOL_NAME); + this.repositoryProvider = repositoryProvider; + } + + public ISession getSession() + { + return getInfraStructure(); + } + + public IRepositoryProvider getRepositoryProvider() + { + return repositoryProvider; + } + + public StringIO getPackageURICompressor() + { + return packageURICompressor; + } + + public long getNegotiationTimeout() + { + return negotiationTimeout; + } + + public void setNegotiationTimeout(long negotiationTimeout) + { + this.negotiationTimeout = negotiationTimeout; + } + + public CDOAuthenticationResult sendAuthenticationChallenge(byte[] randomToken) throws Exception + { + return new AuthenticationRequest(this, randomToken).send(negotiationTimeout); + } + + public void sendCommitNotification(long timeStamp, CDOPackageUnit[] packageUnits, List<CDOIDAndVersion> dirtyIDs, + List<CDOID> detachedObjects, List<CDORevisionDelta> newDeltas) + { + try + { + if (!dirtyIDs.isEmpty() || !newDeltas.isEmpty() || !detachedObjects.isEmpty() || packageUnits.length > 0) + { + IChannel channel = getChannel(); + if (LifecycleUtil.isActive(channel)) + { + new CommitNotificationRequest(channel, timeStamp, packageUnits, dirtyIDs, detachedObjects, newDeltas) + .sendAsync(); + } + else + { + OM.LOG.warn("Session channel is inactive: " + this); //$NON-NLS-1$ + } + } + } + catch (Exception ex) + { + OM.LOG.error(ex); + } + } + + public void sendRemoteSessionNotification(byte opcode, ISession session) + { + try + { + IChannel channel = getChannel(); + if (LifecycleUtil.isActive(channel)) + { + new RemoteSessionNotificationRequest(channel, opcode, session).sendAsync(); + } + else + { + OM.LOG.warn("Session channel is inactive: " + this); //$NON-NLS-1$ + } + } + catch (Exception ex) + { + OM.LOG.error(ex); + } + } + + @Override + protected SignalReactor createSignalReactor(short signalID) + { + switch (signalID) + { + case CDOProtocolConstants.SIGNAL_OPEN_SESSION: + return new OpenSessionIndication(this); + + case CDOProtocolConstants.SIGNAL_LOAD_LIBRARIES: + return new LoadLibrariesIndication(this); + + case CDOProtocolConstants.SIGNAL_VIEWS_CHANGED: + return new ViewsChangedIndication(this); + + case CDOProtocolConstants.SIGNAL_RESOURCE_ID: + return new ResourceIDIndication(this); + + case CDOProtocolConstants.SIGNAL_LOAD_PACKAGES: + return new LoadPackagesIndication(this); + + case CDOProtocolConstants.SIGNAL_LOAD_REVISION: + return new LoadRevisionIndication(this); + + case CDOProtocolConstants.SIGNAL_LOAD_REVISION_BY_TIME: + return new LoadRevisionByTimeIndication(this); + + case CDOProtocolConstants.SIGNAL_LOAD_REVISION_BY_VERSION: + return new LoadRevisionByVersionIndication(this); + + case CDOProtocolConstants.SIGNAL_LOAD_CHUNK: + return new LoadChunkIndication(this); + + case CDOProtocolConstants.SIGNAL_VERIFY_REVISION: + return new VerifyRevisionIndication(this); + + case CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION: + return new CommitTransactionIndication(this); + + case CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION_PHASE1: + return new CommitTransactionPhase1Indication(this); + + case CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION_PHASE2: + return new CommitTransactionPhase2Indication(this); + + case CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION_PHASE3: + return new CommitTransactionPhase3Indication(this); + + case CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION_CANCEL: + return new CommitTransactionCancelIndication(this); + + case CDOProtocolConstants.SIGNAL_QUERY: + return new QueryIndication(this); + + case CDOProtocolConstants.SIGNAL_QUERY_CANCEL: + return new QueryCancelIndication(this); + + case CDOProtocolConstants.SIGNAL_SYNC_REVISIONS: + return new SyncRevisionsIndication(this); + + case CDOProtocolConstants.SIGNAL_PASSIVE_UPDATE: + return new SetPassiveUpdateIndication(this); + + case CDOProtocolConstants.SIGNAL_CHANGE_SUBSCRIPTION: + return new ChangeSubscriptionIndication(this); + + case CDOProtocolConstants.SIGNAL_SET_AUDIT: + return new SetAuditIndication(this); + + case CDOProtocolConstants.SIGNAL_REPOSITORY_TIME: + return new RepositoryTimeIndication(this); + + case CDOProtocolConstants.SIGNAL_LOCK_OBJECTS: + return new LockObjectsIndication(this); + + case CDOProtocolConstants.SIGNAL_UNLOCK_OBJECTS: + return new UnlockObjectsIndication(this); + + case CDOProtocolConstants.SIGNAL_OBJECT_LOCKED: + return new ObjectLockedIndication(this); + + case CDOProtocolConstants.SIGNAL_GET_REMOTE_SESSIONS: + return new GetRemoteSessionsIndication(this); + + case CDOProtocolConstants.SIGNAL_UNSUBSCRIBE_REMOTE_SESSIONS: + return new UnsubscribeRemoteSessionsIndication(this); + + default: + return super.createSignalReactor(signalID); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocolFactory.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocolFactory.java new file mode 100644 index 0000000000..3683548d61 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocolFactory.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.IRepositoryProvider; + +import org.eclipse.net4j.util.container.IManagedContainer; + +import org.eclipse.spi.net4j.ServerProtocolFactory; + +/** + * @author Eike Stepper + */ +public class CDOServerProtocolFactory extends ServerProtocolFactory +{ + public static final String TYPE = CDOProtocolConstants.PROTOCOL_NAME; + + private IRepositoryProvider repositoryProvider; + + public CDOServerProtocolFactory(IRepositoryProvider repositoryProvider) + { + super(TYPE); + this.repositoryProvider = repositoryProvider; + } + + public IRepositoryProvider getRepositoryProvider() + { + return repositoryProvider; + } + + public CDOServerProtocol create(String description) + { + return new CDOServerProtocol(repositoryProvider); + } + + public static CDOServerProtocol get(IManagedContainer container, String description) + { + return (CDOServerProtocol)container.getElement(PRODUCT_GROUP, TYPE, description); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerRequest.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerRequest.java new file mode 100644 index 0000000000..520e19f068 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerRequest.java @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOIDProvider; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.internal.common.io.CDODataOutputImpl; +import org.eclipse.emf.cdo.internal.server.Session; + +import org.eclipse.net4j.channel.IChannel; +import org.eclipse.net4j.signal.Request; +import org.eclipse.net4j.util.io.ExtendedDataOutputStream; +import org.eclipse.net4j.util.io.StringIO; +import org.eclipse.net4j.util.lifecycle.LifecycleUtil; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public abstract class CDOServerRequest extends Request +{ + public CDOServerRequest(IChannel channel, short signalID) + { + super(extractProtocol(channel), signalID); + } + + @Override + public CDOServerProtocol getProtocol() + { + return (CDOServerProtocol)super.getProtocol(); + } + + protected Session getSession() + { + return (Session)getProtocol().getSession(); + } + + @Override + protected final void requesting(ExtendedDataOutputStream out) throws Exception + { + requesting(new CDODataOutputImpl(out) + { + @Override + protected StringIO getPackageURICompressor() + { + return getProtocol().getPackageURICompressor(); + } + + public CDOIDProvider getIDProvider() + { + return getSession(); + } + }); + } + + protected abstract void requesting(CDODataOutput out) throws IOException; + + private static CDOServerProtocol extractProtocol(IChannel channel) + { + if (LifecycleUtil.isActive(channel)) + { + return (CDOServerProtocol)channel.getReceiveHandler(); + } + + throw new IllegalStateException("Channel is inactive: " + channel); //$NON-NLS-1$ + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ChangeSubscriptionIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ChangeSubscriptionIndication.java new file mode 100644 index 0000000000..a203741d0e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ChangeSubscriptionIndication.java @@ -0,0 +1,81 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.internal.server.View; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Simon McDuff + */ +public class ChangeSubscriptionIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ChangeSubscriptionIndication.class); + + public ChangeSubscriptionIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_CHANGE_SUBSCRIPTION); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + boolean subscribeMode = true; + + int viewID = in.readInt(); + boolean clear = in.readBoolean(); + int size = in.readInt(); + if (size <= 0) + { + subscribeMode = false; + size = -size; + } + + View view = (View)getSession().getView(viewID); + if (clear) + { + if (TRACER.isEnabled()) + { + TRACER.trace("Clear subscription"); //$NON-NLS-1$ + } + + view.clearChangeSubscription(); + } + + for (int i = 0; i < size; i++) + { + CDOID id = in.readCDOID(); + if (subscribeMode) + { + view.subscribe(id); + } + else + { + view.unsubscribe(id); + } + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + out.writeBoolean(true); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitNotificationRequest.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitNotificationRequest.java new file mode 100644 index 0000000000..3ea3e361b0 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitNotificationRequest.java @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + * Simon McDuff - http://bugs.eclipse.org/201266 + * Simon McDuff - http://bugs.eclipse.org/233490 + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDAndVersion; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.model.CDOPackageUnit; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.channel.IChannel; +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; +import java.util.List; + +/** + * @author Eike Stepper + */ +public class CommitNotificationRequest extends CDOServerRequest +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitNotificationRequest.class); + + private long timeStamp; + + private final CDOPackageUnit[] packageUnits; + + private List<CDOIDAndVersion> dirtyIDs; + + private List<CDORevisionDelta> deltas; + + private List<CDOID> detachedObjects; + + public CommitNotificationRequest(IChannel channel, long timeStamp, CDOPackageUnit[] packageUnits, + List<CDOIDAndVersion> dirtyIDs, List<CDOID> detachedObjects, List<CDORevisionDelta> deltas) + { + super(channel, CDOProtocolConstants.SIGNAL_COMMIT_NOTIFICATION); + this.timeStamp = timeStamp; + this.packageUnits = packageUnits; + this.dirtyIDs = dirtyIDs; + this.deltas = deltas; + this.detachedObjects = detachedObjects; + } + + @Override + protected void requesting(CDODataOutput out) throws IOException + { + if (TRACER.isEnabled()) + { + TRACER.format("Writing timeStamp: {0,date} {0,time}", timeStamp); //$NON-NLS-1$ + } + + out.writeLong(timeStamp); + if (TRACER.isEnabled()) + { + TRACER.format("Writing {0} dirty IDs", dirtyIDs.size()); //$NON-NLS-1$ + } + + out.writeCDOPackageUnits(packageUnits); + + out.writeInt(dirtyIDs == null ? 0 : dirtyIDs.size()); + for (CDOIDAndVersion dirtyID : dirtyIDs) + { + if (TRACER.isEnabled()) + { + TRACER.format("Writing dirty ID: {0}", dirtyID); //$NON-NLS-1$ + } + + out.writeCDOIDAndVersion(dirtyID); + } + + out.writeInt(deltas == null ? 0 : deltas.size()); + for (CDORevisionDelta delta : deltas) + { + out.writeCDORevisionDelta(delta); + } + + out.writeInt(detachedObjects == null ? 0 : detachedObjects.size()); + for (CDOID id : detachedObjects) + { + out.writeCDOID(id); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java new file mode 100644 index 0000000000..a76bf147cb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java @@ -0,0 +1,383 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + * Simon McDuff - http://bugs.eclipse.org/201266 + * Simon McDuff - http://bugs.eclipse.org/213402 + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDMetaRange; +import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory; +import org.eclipse.emf.cdo.common.id.CDOIDProvider; +import org.eclipse.emf.cdo.common.id.CDOIDTemp; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.model.CDOPackageRegistry; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.common.revision.CDOListFactory; +import org.eclipse.emf.cdo.common.revision.CDORevisionResolver; +import org.eclipse.emf.cdo.internal.common.io.CDODataInputImpl; +import org.eclipse.emf.cdo.internal.common.io.CDODataOutputImpl; +import org.eclipse.emf.cdo.internal.common.revision.CDOListImpl; +import org.eclipse.emf.cdo.internal.server.Repository; +import org.eclipse.emf.cdo.internal.server.Session; +import org.eclipse.emf.cdo.internal.server.Transaction; +import org.eclipse.emf.cdo.internal.server.Transaction.InternalCommitContext; +import org.eclipse.emf.cdo.server.IStore; +import org.eclipse.emf.cdo.server.IView; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; +import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry; +import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta; + +import org.eclipse.net4j.signal.IndicationWithMonitoring; +import org.eclipse.net4j.util.WrappedException; +import org.eclipse.net4j.util.io.ExtendedDataInputStream; +import org.eclipse.net4j.util.io.ExtendedDataOutputStream; +import org.eclipse.net4j.util.io.StringIO; +import org.eclipse.net4j.util.lifecycle.LifecycleUtil; +import org.eclipse.net4j.util.om.monitor.OMMonitor; +import org.eclipse.net4j.util.om.monitor.ProgressDistributable; +import org.eclipse.net4j.util.om.monitor.ProgressDistributor; +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +/** + * @author Eike Stepper + */ +public class CommitTransactionIndication extends IndicationWithMonitoring +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitTransactionIndication.class); + + @SuppressWarnings("unchecked") + private static final ProgressDistributable<InternalCommitContext>[] ops = ProgressDistributor.array( // + new ProgressDistributable.Default<InternalCommitContext>() + { + public void runLoop(int index, InternalCommitContext commitContext, OMMonitor monitor) throws Exception + { + commitContext.write(monitor.fork()); + } + }, // + + new ProgressDistributable.Default<InternalCommitContext>() + { + public void runLoop(int index, InternalCommitContext commitContext, OMMonitor monitor) throws Exception + { + if (commitContext.getRollbackMessage() == null) + { + commitContext.commit(monitor.fork()); + } + else + { + monitor.worked(); + } + } + }); + + protected InternalCommitContext commitContext; + + public CommitTransactionIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION); + } + + protected CommitTransactionIndication(CDOServerProtocol protocol, short signalID) + { + super(protocol, signalID); + } + + @Override + public CDOServerProtocol getProtocol() + { + return (CDOServerProtocol)super.getProtocol(); + } + + protected Session getSession() + { + return (Session)getProtocol().getSession(); + } + + protected Repository getRepository() + { + Repository repository = (Repository)getSession().getManager().getRepository(); + if (!LifecycleUtil.isActive(repository)) + { + throw new IllegalStateException("Repository has been deactivated"); //$NON-NLS-1$ + } + + return repository; + } + + protected IStore getStore() + { + IStore store = getRepository().getStore(); + if (!LifecycleUtil.isActive(store)) + { + throw new IllegalStateException("Store has been deactivated"); //$NON-NLS-1$ + } + + return store; + } + + @Override + protected final void indicating(ExtendedDataInputStream in, OMMonitor monitor) throws Exception + { + indicating(new CDODataInputImpl(in) + { + @Override + protected CDORevisionResolver getRevisionResolver() + { + return CommitTransactionIndication.this.getRepository().getRevisionManager(); + } + + @Override + protected CDOPackageRegistry getPackageRegistry() + { + return commitContext.getPackageRegistry(); + } + + @Override + protected StringIO getPackageURICompressor() + { + return getProtocol().getPackageURICompressor(); + } + + @Override + protected CDOIDObjectFactory getIDFactory() + { + return CommitTransactionIndication.this.getStore().getCDOIDObjectFactory(); + } + + @Override + protected CDOListFactory getListFactory() + { + return CDOListImpl.FACTORY; + } + }, monitor); + } + + @Override + protected final void responding(ExtendedDataOutputStream out, OMMonitor monitor) throws Exception + { + responding(new CDODataOutputImpl(out) + { + @Override + protected StringIO getPackageURICompressor() + { + return getProtocol().getPackageURICompressor(); + } + + public CDOIDProvider getIDProvider() + { + return CommitTransactionIndication.this.getSession(); + } + }, monitor); + } + + protected void indicating(CDODataInput in, OMMonitor monitor) throws Exception + { + try + { + monitor.begin(OMMonitor.TEN); + indicatingCommit(in, monitor.fork(OMMonitor.ONE)); + indicatingCommit(monitor.fork(OMMonitor.TEN - OMMonitor.ONE)); + } + catch (IOException ex) + { + throw ex; + } + catch (Exception ex) + { + OM.LOG.error(ex); + throw WrappedException.wrap(ex); + } + finally + { + monitor.done(); + } + } + + protected void responding(CDODataOutput out, OMMonitor monitor) throws Exception + { + boolean success = false; + + try + { + success = respondingException(out, commitContext.getRollbackMessage()); + if (success) + { + respondingTimestamp(out); + respondingMappingNewPackages(out); + respondingMappingNewObjects(out); + } + } + finally + { + commitContext.postCommit(success); + } + } + + protected void indicatingTransaction(CDODataInput in) throws Exception + { + int viewID = in.readInt(); + commitContext = getTransaction(viewID).createCommitContext(); + } + + protected void indicatingCommit(CDODataInput in, OMMonitor monitor) throws Exception + { + // Create commit context + indicatingTransaction(in); + commitContext.preCommit(); + + boolean autoReleaseLocksEnabled = in.readBoolean(); + commitContext.setAutoReleaseLocksEnabled(autoReleaseLocksEnabled); + + InternalCDOPackageUnit[] newPackageUnits = new InternalCDOPackageUnit[in.readInt()]; + InternalCDORevision[] newObjects = new InternalCDORevision[in.readInt()]; + InternalCDORevisionDelta[] dirtyObjectDeltas = new InternalCDORevisionDelta[in.readInt()]; + CDOID[] detachedObjects = new CDOID[in.readInt()]; + monitor.begin(newPackageUnits.length + newObjects.length + dirtyObjectDeltas.length + detachedObjects.length); + + try + { + // New package units + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} new package units", newPackageUnits.length); //$NON-NLS-1$ + } + + InternalCDOPackageRegistry packageRegistry = commitContext.getPackageRegistry(); + for (int i = 0; i < newPackageUnits.length; i++) + { + newPackageUnits[i] = (InternalCDOPackageUnit)in.readCDOPackageUnit(packageRegistry); + packageRegistry.putPackageUnit(newPackageUnits[i]); // Must happen before readCDORevision!!! + monitor.worked(); + } + + // When all packages are deserialized and registered, resolve them + for (InternalCDOPackageUnit packageUnit : newPackageUnits) + { + for (EPackage ePackage : packageUnit.getEPackages(true)) + { + EcoreUtil.resolveAll(ePackage); + } + } + + // New objects + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} new objects", newObjects.length); //$NON-NLS-1$ + } + + for (int i = 0; i < newObjects.length; i++) + { + newObjects[i] = (InternalCDORevision)in.readCDORevision(); + monitor.worked(); + } + + // Dirty objects + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} dirty object deltas", dirtyObjectDeltas.length); //$NON-NLS-1$ + } + + for (int i = 0; i < dirtyObjectDeltas.length; i++) + { + dirtyObjectDeltas[i] = (InternalCDORevisionDelta)in.readCDORevisionDelta(); + monitor.worked(); + } + + for (int i = 0; i < detachedObjects.length; i++) + { + detachedObjects[i] = in.readCDOID(); + monitor.worked(); + } + + commitContext.setNewPackageUnits(newPackageUnits); + commitContext.setNewObjects(newObjects); + commitContext.setDirtyObjectDeltas(dirtyObjectDeltas); + commitContext.setDetachedObjects(detachedObjects); + } + finally + { + monitor.done(); + } + } + + protected void indicatingCommit(OMMonitor monitor) + { + ProgressDistributor distributor = getStore().getIndicatingCommitDistributor(); + distributor.run(ops, commitContext, monitor); + } + + protected boolean respondingException(CDODataOutput out, String rollbackMessage) throws Exception + { + boolean success = rollbackMessage == null; + out.writeBoolean(success); + if (!success) + { + out.writeString(rollbackMessage); + } + + return success; + } + + protected void respondingTimestamp(CDODataOutput out) throws Exception + { + out.writeLong(commitContext.getTimeStamp()); + } + + protected void respondingMappingNewPackages(CDODataOutput out) throws Exception + { + // Meta ID ranges + List<CDOIDMetaRange> metaRanges = commitContext.getMetaIDRanges(); + for (CDOIDMetaRange metaRange : metaRanges) + { + out.writeCDOIDMetaRange(metaRange); + } + } + + protected void respondingMappingNewObjects(CDODataOutput out) throws Exception + { + // ID mappings + Map<CDOIDTemp, CDOID> idMappings = commitContext.getIDMappings(); + for (Entry<CDOIDTemp, CDOID> entry : idMappings.entrySet()) + { + CDOIDTemp oldID = entry.getKey(); + if (!oldID.isMeta()) + { + CDOID newID = entry.getValue(); + out.writeCDOID(oldID); + out.writeCDOID(newID); + } + } + + out.writeCDOID(CDOID.NULL); + } + + protected Transaction getTransaction(int viewID) + { + IView view = getSession().getView(viewID); + if (view instanceof Transaction) + { + return (Transaction)view; + } + + throw new IllegalStateException("Illegal transaction: " + view); //$NON-NLS-1$ + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionPhase2Indication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionPhase2Indication.java new file mode 100644 index 0000000000..fea2491ce2 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionPhase2Indication.java @@ -0,0 +1,97 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDTemp; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.internal.server.XATransactionCommitContext; +import org.eclipse.emf.cdo.internal.server.XATransactionCommitContext.CommitState; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.monitor.OMMonitor; +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.util.concurrent.ExecutionException; + +/** + * @author Simon McDuff + */ +public class CommitTransactionPhase2Indication extends CommitTransactionIndication +{ + private static final ContextTracer PROTOCOL = new ContextTracer(OM.DEBUG_PROTOCOL, + CommitTransactionPhase2Indication.class); + + public CommitTransactionPhase2Indication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION_PHASE2); + } + + @Override + protected void indicating(CDODataInput in, OMMonitor monitor) throws Exception + { + indicatingTransaction(in); + XATransactionCommitContext xaContextContext = (XATransactionCommitContext)commitContext; + + int size = in.readInt(); + if (PROTOCOL.isEnabled()) + { + PROTOCOL.format("Receiving {0} mapping informations", size); //$NON-NLS-1$ + } + + for (int i = 0; i < size; i++) + { + CDOIDTemp oldID = (CDOIDTemp)in.readCDOID(); + CDOID newID = in.readCDOID(); + xaContextContext.addIDMapping(oldID, newID); + } + + // Mapping information from others CDOTransactions was added. Notify the commit process to continue. + xaContextContext.getState().set(CommitState.APPLY_ID_MAPPING_DONE); + } + + @Override + protected void responding(CDODataOutput out, OMMonitor monitor) throws Exception + { + String exceptionMessage = null; + + try + { + // Return to the client only when the process is ready to commit + getRepository().getCommitManager().waitForTermination(commitContext.getTransaction()); + } + catch (InterruptedException ex) + { + exceptionMessage = ex.getMessage(); + } + catch (ExecutionException ex) + { + exceptionMessage = ex.getMessage(); + } + + if (exceptionMessage == null) + { + exceptionMessage = commitContext.getRollbackMessage(); + } + + respondingException(out, exceptionMessage); + } + + @Override + protected void indicatingTransaction(CDODataInput in) throws Exception + { + int viewID = in.readInt(); + commitContext = getRepository().getCommitManager().get(getTransaction(viewID)); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionPhase3Indication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionPhase3Indication.java new file mode 100644 index 0000000000..5c3fe8e619 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionPhase3Indication.java @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; + +import org.eclipse.net4j.util.om.monitor.OMMonitor; + +/** + * @author Simon McDuff + */ +public class CommitTransactionPhase3Indication extends CommitTransactionIndication +{ + public CommitTransactionPhase3Indication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION_PHASE3); + } + + @Override + protected void indicating(CDODataInput in, OMMonitor monitor) throws Exception + { + indicatingTransaction(in); + } + + @Override + protected void responding(CDODataOutput out, OMMonitor monitor) throws Exception + { + commitContext.commit(monitor); + boolean success = respondingException(out, commitContext.getRollbackMessage()); + if (success) + { + respondingMappingNewPackages(out); + } + + commitContext.postCommit(success); + } + + @Override + protected void indicatingTransaction(CDODataInput in) throws Exception + { + int viewID = in.readInt(); + commitContext = getRepository().getCommitManager().get(getTransaction(viewID)); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/GetRemoteSessionsIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/GetRemoteSessionsIndication.java new file mode 100644 index 0000000000..797d7dd921 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/GetRemoteSessionsIndication.java @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.internal.server.Session; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class GetRemoteSessionsIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, GetRemoteSessionsIndication.class); + + private boolean subscribe; + + public GetRemoteSessionsIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_GET_REMOTE_SESSIONS); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + subscribe = in.readBoolean(); + if (TRACER.isEnabled()) + { + TRACER.format("Read subscribe: {0}", subscribe); //$NON-NLS-1$ + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + Session localSession = getSession(); + Session[] sessions = getSession().getManager().getSessions(); + for (Session session : sessions) + { + if (session != localSession) + { + out.writeInt(session.getSessionID()); + out.writeString(session.getUserID()); + out.writeBoolean(session.isSubscribed()); + } + } + + out.writeInt(CDOProtocolConstants.NO_MORE_REMOTE_SESSIONS); + localSession.setSubscribed(subscribe); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadChunkIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadChunkIndication.java new file mode 100644 index 0000000000..b3a7c07860 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadChunkIndication.java @@ -0,0 +1,102 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + * Simon McDuff - http://bugs.eclipse.org/210868 + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.model.CDOModelUtil; +import org.eclipse.emf.cdo.common.model.CDOType; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; + +import org.eclipse.net4j.util.collection.MoveableList; +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class LoadChunkIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadChunkIndication.class); + + private CDOID id; + + private int version; + + private EStructuralFeature feature; + + private int fromIndex; + + private int toIndex; + + public LoadChunkIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_LOAD_CHUNK); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + id = in.readCDOID(); + if (TRACER.isEnabled()) + { + TRACER.format("Read revision ID: {0}", id); //$NON-NLS-1$ + } + + version = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Read revision version: {0}", version); //$NON-NLS-1$ + } + + EClass eClass = (EClass)in.readCDOClassifierRefAndResolve(); + int featureID = in.readInt(); + feature = eClass.getEStructuralFeature(featureID); + if (TRACER.isEnabled()) + { + TRACER.format("Read feature: {0}", feature); //$NON-NLS-1$ + } + + fromIndex = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Read fromIndex: {0}", fromIndex); //$NON-NLS-1$ + } + + toIndex = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Read toIndex: {0}", toIndex); //$NON-NLS-1$ + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + InternalCDORevision revision = getRepository().getRevisionManager().getRevisionByVersion(id, 0, version); + getRepository().getRevisionManager().ensureChunk(revision, feature, fromIndex, toIndex + 1); + + CDOType type = CDOModelUtil.getType(feature); + MoveableList<Object> list = revision.getList(feature); + for (int i = fromIndex; i <= toIndex; i++) + { + type.writeValue(out, list.get(i)); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadLibrariesIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadLibrariesIndication.java new file mode 100644 index 0000000000..b2aa9c6dc8 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadLibrariesIndication.java @@ -0,0 +1,86 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOIDLibraryProvider; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.io.IOUtil; +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; +import java.io.InputStream; + +/** + * @author Eike Stepper + */ +public class LoadLibrariesIndication extends CDOServerIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadLibrariesIndication.class); + + private String[] libraryNames; + + public LoadLibrariesIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_LOAD_LIBRARIES); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + int size = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} library names", size); //$NON-NLS-1$ + } + + libraryNames = new String[size]; + for (int i = 0; i < size; i++) + { + libraryNames[i] = in.readString(); + if (TRACER.isEnabled()) + { + TRACER.format("Read library name: {0}", libraryNames[i]); //$NON-NLS-1$ + } + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + byte[] buffer = new byte[IOUtil.DEFAULT_BUFFER_SIZE]; + CDOIDLibraryProvider libraryProvider = getStore().getCDOIDLibraryProvider(); + for (String libraryName : libraryNames) + { + int size = libraryProvider.getSize(libraryName); + if (TRACER.isEnabled()) + { + TRACER.format("Writing library {0}: {1} bytes", libraryName, size); //$NON-NLS-1$ + } + + out.writeInt(size); + InputStream in = null; + + try + { + in = libraryProvider.getContents(libraryName); + IOUtil.copy(in, getCurrentOutputStream(), size, buffer); + } + finally + { + IOUtil.close(in); + } + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadPackagesIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadPackagesIndication.java new file mode 100644 index 0000000000..c7835050e6 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadPackagesIndication.java @@ -0,0 +1,62 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.model.CDOModelUtil; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; +import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import org.eclipse.emf.ecore.EPackage; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class LoadPackagesIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadPackagesIndication.class); + + private String packageUnitID; + + public LoadPackagesIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_LOAD_PACKAGES); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + packageUnitID = in.readCDOPackageURI(); + if (TRACER.isEnabled()) + { + TRACER.format("Read packageUnitID: {0}", packageUnitID); //$NON-NLS-1$ + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + InternalCDOPackageRegistry packageRegistry = getRepository().getPackageRegistry(); + EPackage ePackage = packageRegistry.getEPackage(packageUnitID); + if (ePackage == null) + { + throw new IllegalStateException("Package unit not found: " + packageUnitID); //$NON-NLS-1$ + } + + CDOModelUtil.writePackage(out, ePackage, true, packageRegistry); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadRevisionByTimeIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadRevisionByTimeIndication.java new file mode 100644 index 0000000000..60ae3af47e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadRevisionByTimeIndication.java @@ -0,0 +1,53 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class LoadRevisionByTimeIndication extends LoadRevisionIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadRevisionByTimeIndication.class); + + private long timeStamp; + + public LoadRevisionByTimeIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_LOAD_REVISION_BY_TIME); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + super.indicating(in); + timeStamp = in.readLong(); + if (TRACER.isEnabled()) + { + TRACER.format("Read timeStamp: {0}", timeStamp); //$NON-NLS-1$ + } + } + + @Override + protected InternalCDORevision getRevision(CDOID cdoID) + { + return getRepository().getRevisionManager().getRevisionByTime(cdoID, referenceChunk, timeStamp); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadRevisionByVersionIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadRevisionByVersionIndication.java new file mode 100644 index 0000000000..5515ac1bc7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadRevisionByVersionIndication.java @@ -0,0 +1,54 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class LoadRevisionByVersionIndication extends LoadRevisionIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, + LoadRevisionByVersionIndication.class); + + private int version; + + public LoadRevisionByVersionIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_LOAD_REVISION_BY_VERSION); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + super.indicating(in); + version = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Read version: {0}", version); //$NON-NLS-1$ + } + } + + @Override + protected InternalCDORevision getRevision(CDOID id) + { + return getRepository().getRevisionManager().getRevisionByVersion(id, referenceChunk, version); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadRevisionIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadRevisionIndication.java new file mode 100644 index 0000000000..72b892f240 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadRevisionIndication.java @@ -0,0 +1,235 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.CDOFetchRule; +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDUtil; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.common.revision.CDORevision; +import org.eclipse.emf.cdo.internal.server.RevisionManager; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; + +import org.eclipse.net4j.util.collection.MoveableList; +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @author Eike Stepper + */ +public class LoadRevisionIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadRevisionIndication.class); + + protected CDOID[] ids; + + protected int referenceChunk; + + protected Map<EClass, CDOFetchRule> fetchRules = new HashMap<EClass, CDOFetchRule>(); + + protected CDOID contextID = CDOID.NULL; + + protected int loadRevisionCollectionChunkSize; + + public LoadRevisionIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_LOAD_REVISION); + } + + public LoadRevisionIndication(CDOServerProtocol protocol, short signalID) + { + super(protocol, signalID); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + referenceChunk = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Read referenceChunk: {0}", referenceChunk); //$NON-NLS-1$ + } + + int size = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} IDs", size); //$NON-NLS-1$ + } + + ids = new CDOID[size]; + for (int i = 0; i < size; i++) + { + CDOID id = in.readCDOID(); + if (TRACER.isEnabled()) + { + TRACER.format("Read ID: {0}", id); //$NON-NLS-1$ + } + + ids[i] = id; + } + + int fetchSize = in.readInt(); + if (fetchSize > 0) + { + loadRevisionCollectionChunkSize = in.readInt(); + if (loadRevisionCollectionChunkSize < 1) + { + loadRevisionCollectionChunkSize = 1; + } + + contextID = in.readCDOID(); + if (TRACER.isEnabled()) + { + TRACER.format("Reading fetch rules for context {0}", contextID); //$NON-NLS-1$ + } + + for (int i = 0; i < fetchSize; i++) + { + CDOFetchRule fetchRule = new CDOFetchRule(in, getRepository().getPackageRegistry()); + fetchRules.put(fetchRule.getEClass(), fetchRule); + } + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + List<CDORevision> additionalRevisions = new ArrayList<CDORevision>(); + Set<CDOID> revisionIDs = new HashSet<CDOID>(); + if (TRACER.isEnabled()) + { + TRACER.format("Writing {0} revisions", ids.length); //$NON-NLS-1$ + } + + for (CDOID id : ids) + { + revisionIDs.add(id); + } + + // Need to fetch the rule first. + Set<CDOFetchRule> visitedFetchRules = new HashSet<CDOFetchRule>(); + if (!CDOIDUtil.isNull(contextID) && fetchRules.size() > 0) + { + if (TRACER.isEnabled()) + { + TRACER.format("Collecting more revisions based on rules"); //$NON-NLS-1$ + } + + InternalCDORevision revisionContext = getRevision(contextID); + collectRevisions(revisionContext, revisionIDs, additionalRevisions, visitedFetchRules); + } + + CDORevision[] revisions = new CDORevision[ids.length]; + for (int i = 0; i < ids.length; i++) + { + CDOID id = ids[i]; + InternalCDORevision revision = getRevision(id); + revisions[i] = revision; + if (loadRevisionCollectionChunkSize > 0) + { + collectRevisions(revision, revisionIDs, additionalRevisions, visitedFetchRules); + } + } + + getRepository().notifyReadAccessHandlers(getSession(), revisions, additionalRevisions); + for (CDORevision revision : revisions) + { + out.writeCDORevision(revision, referenceChunk); + } + + int additionalSize = additionalRevisions.size(); + if (TRACER.isEnabled()) + { + TRACER.format("Writing {0} additional revisions", additionalSize); //$NON-NLS-1$ + } + + out.writeInt(additionalSize); + for (CDORevision revision : additionalRevisions) + { + out.writeCDORevision(revision, referenceChunk); + } + } + + protected InternalCDORevision getRevision(CDOID id) + { + RevisionManager revisionManager = getRepository().getRevisionManager(); + return revisionManager.getRevision(id, referenceChunk); + } + + private void collectRevisions(InternalCDORevision revision, Set<CDOID> revisions, + List<CDORevision> additionalRevisions, Set<CDOFetchRule> visitedFetchRules) + { + getSession().collectContainedRevisions(revision, referenceChunk, revisions, additionalRevisions); + CDOFetchRule fetchRule = fetchRules.get(revision.getEClass()); + if (fetchRule == null || visitedFetchRules.contains(fetchRule)) + { + return; + } + + visitedFetchRules.add(fetchRule); + + RevisionManager revisionManager = (RevisionManager)getSession().getManager().getRepository() + .getRevisionManager(); + for (EStructuralFeature feature : fetchRule.getFeatures()) + { + if (feature.isMany()) + { + MoveableList<Object> list = revision.getList(feature); + int toIndex = Math.min(loadRevisionCollectionChunkSize, list.size()) - 1; + for (int i = 0; i <= toIndex; i++) + { + Object value = list.get(i); + if (value instanceof CDOID) + { + CDOID id = (CDOID)value; + if (!CDOIDUtil.isNull(id) && !revisions.contains(id)) + { + InternalCDORevision containedRevision = revisionManager.getRevision(id, referenceChunk); + revisions.add(containedRevision.getID()); + additionalRevisions.add(containedRevision); + collectRevisions(containedRevision, revisions, additionalRevisions, visitedFetchRules); + } + } + } + } + else + { + Object value = revision.getValue(feature); + if (value instanceof CDOID) + { + CDOID id = (CDOID)value; + if (!id.isNull() && !revisions.contains(id)) + { + InternalCDORevision containedRevision = revisionManager.getRevision(id, referenceChunk); + revisions.add(containedRevision.getID()); + additionalRevisions.add(containedRevision); + collectRevisions(containedRevision, revisions, additionalRevisions, visitedFetchRules); + } + } + } + } + + visitedFetchRules.remove(fetchRule); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LockObjectsIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LockObjectsIndication.java new file mode 100644 index 0000000000..b0d54db319 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LockObjectsIndication.java @@ -0,0 +1,90 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDAndVersion; +import org.eclipse.emf.cdo.common.id.CDOIDUtil; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.IView; + +import org.eclipse.net4j.util.concurrent.RWLockManager; +import org.eclipse.net4j.util.io.IORuntimeException; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Simon McDuff + */ +public class LockObjectsIndication extends AbstractSyncRevisionsIndication +{ + private RWLockManager.LockType lockType; + + private List<CDOID> ids = new ArrayList<CDOID>(); + + private List<CDOIDAndVersion> idAndVersions = new ArrayList<CDOIDAndVersion>(); + + private IView view; + + public LockObjectsIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_LOCK_OBJECTS); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + super.indicating(in); + + int viewID = in.readInt(); + lockType = in.readCDOLockType(); + long timeout = in.readLong(); + + try + { + view = getSession().getView(viewID); + getRepository().getLockManager().lock(lockType, view, ids, timeout); + } + catch (InterruptedException ex) + { + throw new IORuntimeException(ex); + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + for (CDOIDAndVersion idAndVersion : idAndVersions) + { + udpateObjectList(idAndVersion.getID(), idAndVersion.getVersion()); + } + + if (!detachedObjects.isEmpty()) + { + getRepository().getLockManager().unlock(lockType, view, ids); + throw new IllegalArgumentException(detachedObjects.size() + " objects are not persistent anymore"); //$NON-NLS-1$ + } + + super.responding(out); + } + + @Override + protected void process(CDOID id, int version) + { + ids.add(id); + idAndVersions.add(CDOIDUtil.createIDAndVersion(id, version)); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ObjectLockedIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ObjectLockedIndication.java new file mode 100644 index 0000000000..91de914afa --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ObjectLockedIndication.java @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.IView; + +import org.eclipse.net4j.util.concurrent.RWLockManager; + +import java.io.IOException; + +/** + * @author Simon McDuff + */ +public class ObjectLockedIndication extends CDOReadIndication +{ + private boolean isLocked; + + public ObjectLockedIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_OBJECT_LOCKED); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + int viewID = in.readInt(); + IView view = getSession().getView(viewID); + + RWLockManager.LockType lockType = in.readCDOLockType(); + CDOID id = in.readCDOID(); + boolean byOthers = in.readBoolean(); + if (byOthers) + { + isLocked = getRepository().getLockManager().hasLockByOthers(lockType, view, id); + } + else + { + isLocked = getRepository().getLockManager().hasLock(lockType, view, id); + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + out.writeBoolean(isLocked); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/OpenSessionIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/OpenSessionIndication.java new file mode 100644 index 0000000000..f5e3c5be86 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/OpenSessionIndication.java @@ -0,0 +1,138 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.model.CDOPackageUnit; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.internal.server.Repository; +import org.eclipse.emf.cdo.internal.server.Session; +import org.eclipse.emf.cdo.internal.server.SessionManager; +import org.eclipse.emf.cdo.server.IRepositoryProvider; +import org.eclipse.emf.cdo.server.RepositoryNotFoundException; +import org.eclipse.emf.cdo.server.SessionCreationException; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class OpenSessionIndication extends RepositoryTimeIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, OpenSessionIndication.class); + + private String repositoryName; + + private boolean passiveUpdateEnabled; + + private Repository repository; + + private Session session; + + public OpenSessionIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_OPEN_SESSION); + } + + @Override + protected Repository getRepository() + { + return repository; + } + + @Override + protected Session getSession() + { + return session; + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + super.indicating(in); + repositoryName = in.readString(); + if (TRACER.isEnabled()) + { + TRACER.format("Read repositoryName: {0}", repositoryName); //$NON-NLS-1$ + } + + passiveUpdateEnabled = in.readBoolean(); + if (TRACER.isEnabled()) + { + TRACER.format("Read passiveUpdateEnabled: {0}", passiveUpdateEnabled); //$NON-NLS-1$ + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + try + { + CDOServerProtocol protocol = getProtocol(); + IRepositoryProvider repositoryProvider = protocol.getRepositoryProvider(); + repository = (Repository)repositoryProvider.getRepository(repositoryName); + if (repository == null) + { + throw new RepositoryNotFoundException(repositoryName); + } + + SessionManager sessionManager = repository.getSessionManager(); + session = sessionManager.openSession(protocol); + session.setPassiveUpdateEnabled(passiveUpdateEnabled); + + // Adjust the infra structure (was IRepositoryProvider) + protocol.setInfraStructure(session); + if (TRACER.isEnabled()) + { + TRACER.format("Writing sessionID: {0}", session.getSessionID()); //$NON-NLS-1$ + } + + out.writeInt(session.getSessionID()); + if (TRACER.isEnabled()) + { + TRACER.format("Writing repositoryUUID: {0}", repository.getUUID()); //$NON-NLS-1$ + } + + out.writeString(repository.getUUID()); + out.writeLong(repository.getCreationTime()); + out.writeBoolean(repository.isSupportingAudits()); + repository.getStore().getCDOIDLibraryDescriptor().write(out); + + CDOPackageUnit[] packageUnits = repository.getPackageRegistry().getPackageUnits(); + out.writeCDOPackageUnits(packageUnits); + } + catch (RepositoryNotFoundException ex) + { + if (TRACER.isEnabled()) + { + TRACER.format("Repository {0} not found", repositoryName); //$NON-NLS-1$ + } + + out.writeInt(CDOProtocolConstants.ERROR_REPOSITORY_NOT_FOUND); + } + catch (SessionCreationException ex) + { + if (TRACER.isEnabled()) + { + TRACER.format("Failed to open session for repository {0}", repositoryName); //$NON-NLS-1$ + } + + out.writeInt(CDOProtocolConstants.ERROR_NO_SESSION); + return; + } + + super.responding(out); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryCancelIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryCancelIndication.java new file mode 100644 index 0000000000..4276a5cfc4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryCancelIndication.java @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2004-2008 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Simon McDuff + */ +public class QueryCancelIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, QueryCancelIndication.class); + + private int queryID; + + public QueryCancelIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_QUERY_CANCEL); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + queryID = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.trace("Query " + queryID + " will be cancelled"); //$NON-NLS-1$ //$NON-NLS-2$ + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + try + { + getRepository().getQueryManager().cancel(queryID); + out.writeBoolean(false); + } + catch (Exception exception) + { + out.writeBoolean(true); + out.writeString(exception.getMessage()); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryIndication.java new file mode 100644 index 0000000000..cb2ab1a1e2 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryIndication.java @@ -0,0 +1,83 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.CDOQueryInfo; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.internal.common.CDOQueryInfoImpl; +import org.eclipse.emf.cdo.internal.server.QueryManager; +import org.eclipse.emf.cdo.internal.server.QueryResult; +import org.eclipse.emf.cdo.server.IView; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Simon McDuff + */ +public class QueryIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, QueryIndication.class); + + private QueryResult queryResult; + + public QueryIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_QUERY); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + int viewID = in.readInt(); + CDOQueryInfo cdoQuery = new CDOQueryInfoImpl(in); // TODO Add CDODataInput.readCDOQueryInfo() + IView view = getSession().getView(viewID); + QueryManager queryManager = getRepository().getQueryManager(); + queryResult = queryManager.execute(view, cdoQuery); + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + int numberOfResults = 0; + + // Return queryID immediately. + out.writeInt(queryResult.getQueryID()); + flush(); + + while (queryResult.hasNext()) + { + Object object = queryResult.next(); + + // Object to return + numberOfResults++; + out.writeBoolean(true); + out.writeCDORevisionOrPrimitive(object); + if (queryResult.peek() == null) + { + flush(); + } + } + + if (TRACER.isEnabled()) + { + TRACER.trace("Query returned " + numberOfResults + " results"); //$NON-NLS-1$ //$NON-NLS-2$ + } + + // Query is done successfully + out.writeBoolean(false); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/RemoteSessionNotificationRequest.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/RemoteSessionNotificationRequest.java new file mode 100644 index 0000000000..cd6b52338f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/RemoteSessionNotificationRequest.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + * Simon McDuff - http://bugs.eclipse.org/201266 + * Simon McDuff - http://bugs.eclipse.org/233490 + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.ISession; + +import org.eclipse.net4j.channel.IChannel; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class RemoteSessionNotificationRequest extends CDOServerRequest +{ + private byte opcode; + + private ISession session; + + public RemoteSessionNotificationRequest(IChannel channel, byte opcode, ISession session) + { + super(channel, CDOProtocolConstants.SIGNAL_REMOTE_SESSION_NOTIFICATION); + this.opcode = opcode; + this.session = session; + } + + @Override + protected void requesting(CDODataOutput out) throws IOException + { + out.writeByte(opcode); + out.writeInt(session.getSessionID()); + if (opcode == CDOProtocolConstants.REMOTE_SESSION_OPENED) + { + out.writeString(session.getUserID()); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ResourceIDIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ResourceIDIndication.java new file mode 100644 index 0000000000..5a6bcce4c7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ResourceIDIndication.java @@ -0,0 +1,67 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.IView; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class ResourceIDIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ResourceIDIndication.class); + + private CDOID id; + + public ResourceIDIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_RESOURCE_ID); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + int viewID = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Read viewID: {0}", viewID); //$NON-NLS-1$ + } + + String path = in.readString(); + if (TRACER.isEnabled()) + { + TRACER.format("Read path: {0}", path); //$NON-NLS-1$ + } + + IView view = getSession().getView(viewID); + id = view.getResourceID(path); + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + if (TRACER.isEnabled()) + { + TRACER.format("Writing ID: {0}", id); //$NON-NLS-1$ + } + + out.writeCDOID(id); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/SetAuditIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/SetAuditIndication.java new file mode 100644 index 0000000000..84d4b37e3f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/SetAuditIndication.java @@ -0,0 +1,102 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.common.revision.CDORevision; +import org.eclipse.emf.cdo.server.IAudit; +import org.eclipse.emf.cdo.server.IView; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eike Stepper + */ +public class SetAuditIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SetAuditIndication.class); + + private List<CDORevision> revisions; + + public SetAuditIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_SET_AUDIT); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + int viewID = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Read viewID: {0}", viewID); //$NON-NLS-1$ + } + + long timeStamp = in.readLong(); + if (TRACER.isEnabled()) + { + TRACER.format("Read timeStamp: {0,date} {0,time}", timeStamp); //$NON-NLS-1$ + } + + int size = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} IDs", size); //$NON-NLS-1$ + } + + List<CDOID> invalidObjects = new ArrayList<CDOID>(size); + for (int i = 0; i < size; i++) + { + CDOID id = in.readCDOID(); + invalidObjects.add(id); + if (TRACER.isEnabled()) + { + TRACER.format("Read ID: {0}", id); //$NON-NLS-1$ + } + } + + IView view = getSession().getView(viewID); + if (view instanceof IAudit) + { + IAudit audit = (IAudit)view; + revisions = audit.setTimeStamp(timeStamp, invalidObjects); + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + if (TRACER.isEnabled()) + { + TRACER.format("Writing {0} existanceFlags", revisions.size()); //$NON-NLS-1$ + } + + out.writeInt(revisions.size()); + for (CDORevision revision : revisions) + { + boolean existanceFlag = revision != null; + if (TRACER.isEnabled()) + { + TRACER.format("Writing existanceFlag: {0}", existanceFlag); //$NON-NLS-1$ + } + + out.writeBoolean(existanceFlag); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/SetPassiveUpdateIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/SetPassiveUpdateIndication.java new file mode 100644 index 0000000000..42f410fa0a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/SetPassiveUpdateIndication.java @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Simon McDuff - http://bugs.eclipse.org/230832 + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Simon McDuff + */ +public class SetPassiveUpdateIndication extends SyncRevisionsIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SetPassiveUpdateIndication.class); + + public SetPassiveUpdateIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_PASSIVE_UPDATE); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + super.indicating(in); + boolean passiveUpdateEnabled = in.readBoolean(); + if (TRACER.isEnabled()) + { + TRACER.trace("Turning " + (passiveUpdateEnabled ? "on" : "off") + " passive update"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + } + + getSession().setPassiveUpdateEnabled(passiveUpdateEnabled); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/SyncRevisionsIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/SyncRevisionsIndication.java new file mode 100644 index 0000000000..55392fc042 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/SyncRevisionsIndication.java @@ -0,0 +1,64 @@ +/*************************************************************************** + * Copyright (c) 2004-2007 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Eike Stepper - maintenance + **************************************************************************/ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.IStoreAccessor; +import org.eclipse.emf.cdo.server.StoreThreadLocal; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Simon McDuff + */ +public class SyncRevisionsIndication extends AbstractSyncRevisionsIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SyncRevisionsIndication.class); + + public SyncRevisionsIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_SYNC_REVISIONS); + } + + public SyncRevisionsIndication(CDOServerProtocol protocol, short signalID) + { + super(protocol, signalID); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + IStoreAccessor reader = StoreThreadLocal.getAccessor(); + if (TRACER.isEnabled()) + { + TRACER.format("Refreshing store accessor: " + reader); //$NON-NLS-1$ + } + + reader.refreshRevisions(); + + super.indicating(in); + } + + @Override + protected void process(CDOID id, int version) + { + if (version > 0) + { + udpateObjectList(id, version); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/UnlockObjectsIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/UnlockObjectsIndication.java new file mode 100644 index 0000000000..61301ab3fe --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/UnlockObjectsIndication.java @@ -0,0 +1,66 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Simon McDuff - initial API and implementation + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.server.IView; + +import org.eclipse.net4j.util.concurrent.RWLockManager; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Simon McDuff + */ +public class UnlockObjectsIndication extends CDOReadIndication +{ + public UnlockObjectsIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_UNLOCK_OBJECTS); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + int viewID = in.readInt(); + RWLockManager.LockType lockType = in.readCDOLockType(); + int size = in.readInt(); + + IView view = getSession().getView(viewID); + if (size == CDOProtocolConstants.RELEASE_ALL_LOCKS) + { + getRepository().getLockManager().unlock(view); + } + else + { + List<CDOID> ids = new ArrayList<CDOID>(size); + for (int i = 0; i < size; i++) + { + CDOID id = in.readCDOID(); + ids.add(id); + } + + getRepository().getLockManager().unlock(lockType, view, ids); + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + out.writeBoolean(true); + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/UnsubscribeRemoteSessionsIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/UnsubscribeRemoteSessionsIndication.java new file mode 100644 index 0000000000..bc108fbcdb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/UnsubscribeRemoteSessionsIndication.java @@ -0,0 +1,103 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.common.revision.CDORevision; +import org.eclipse.emf.cdo.server.IAudit; +import org.eclipse.emf.cdo.server.IView; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eike Stepper + */ +public class UnsubscribeRemoteSessionsIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, + UnsubscribeRemoteSessionsIndication.class); + + private List<CDORevision> revisions; + + public UnsubscribeRemoteSessionsIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_SET_AUDIT); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + int viewID = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Read viewID: {0}", viewID); //$NON-NLS-1$ + } + + long timeStamp = in.readLong(); + if (TRACER.isEnabled()) + { + TRACER.format("Read timeStamp: {0,date} {0,time}", timeStamp); //$NON-NLS-1$ + } + + int size = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} IDs", size); //$NON-NLS-1$ + } + + List<CDOID> invalidObjects = new ArrayList<CDOID>(size); + for (int i = 0; i < size; i++) + { + CDOID id = in.readCDOID(); + invalidObjects.add(id); + if (TRACER.isEnabled()) + { + TRACER.format("Read ID: {0}", id); //$NON-NLS-1$ + } + } + + IView view = getSession().getView(viewID); + if (view instanceof IAudit) + { + IAudit audit = (IAudit)view; + revisions = audit.setTimeStamp(timeStamp, invalidObjects); + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + if (TRACER.isEnabled()) + { + TRACER.format("Writing {0} existanceFlags", revisions.size()); //$NON-NLS-1$ + } + + out.writeInt(revisions.size()); + for (CDORevision revision : revisions) + { + boolean existanceFlag = revision != null; + if (TRACER.isEnabled()) + { + TRACER.format("Writing existanceFlag: {0}", existanceFlag); //$NON-NLS-1$ + } + + out.writeBoolean(existanceFlag); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/VerifyRevisionIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/VerifyRevisionIndication.java new file mode 100644 index 0000000000..0ffdc62b51 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/VerifyRevisionIndication.java @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.internal.server.RevisionManager; +import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; + +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class VerifyRevisionIndication extends CDOReadIndication +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, VerifyRevisionIndication.class); + + protected long[] timeStamps; + + public VerifyRevisionIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_VERIFY_REVISION); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + int size = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} IDs and versions", size); //$NON-NLS-1$ + } + + RevisionManager revisionManager = getRepository().getRevisionManager(); + timeStamps = new long[size]; + for (int i = 0; i < size; i++) + { + CDOID id = in.readCDOID(); + int version = in.readInt(); + if (TRACER.isEnabled()) + { + TRACER.format("Read ID and version: {0}v{1}", id, version); //$NON-NLS-1$ + } + + InternalCDORevision revision = revisionManager.getRevisionByVersion(id, 0, version); + timeStamps[i] = revision.getRevised(); + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + for (long revised : timeStamps) + { + out.writeLong(revised); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ViewsChangedIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ViewsChangedIndication.java new file mode 100644 index 0000000000..17a6013afb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ViewsChangedIndication.java @@ -0,0 +1,74 @@ +/** + * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.net4j.protocol; + +import org.eclipse.emf.cdo.common.io.CDODataInput; +import org.eclipse.emf.cdo.common.io.CDODataOutput; +import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.internal.server.Session; +import org.eclipse.emf.cdo.server.IView; + +import org.eclipse.net4j.util.ImplementationError; + +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class ViewsChangedIndication extends CDOServerIndication +{ + public ViewsChangedIndication(CDOServerProtocol protocol) + { + super(protocol, CDOProtocolConstants.SIGNAL_VIEWS_CHANGED); + } + + @Override + protected void indicating(CDODataInput in) throws IOException + { + int viewID = in.readInt(); + byte kind = in.readByte(); + Session session = getSession(); + + switch (kind) + { + case CDOProtocolConstants.VIEW_CLOSED: + IView view = session.getView(viewID); + if (view != null) + { + view.close(); + } + + break; + + case CDOProtocolConstants.VIEW_TRANSACTION: + session.openTransaction(viewID); + break; + + case CDOProtocolConstants.VIEW_READONLY: + session.openView(viewID); + break; + + case CDOProtocolConstants.VIEW_AUDIT: + long timeStamp = in.readLong(); + session.openAudit(viewID, timeStamp); + break; + + default: + throw new ImplementationError("Invalid kind: " + kind); //$NON-NLS-1$ + } + } + + @Override + protected void responding(CDODataOutput out) throws IOException + { + out.writeBoolean(true); + } +} |