Merge with ui. Synchronous connection worked.
Add some checkstyle xml rules to use with the checkstyle plugin for eclipse
and also a formatter for eclipse.
Still work needs on asynchrounous connect
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Beem-ecipse-formatter.xml Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="11">
+<profile kind="CodeFormatterProfile" name="Eclipse [good tabsize]" version="11">
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="mixed"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="8"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+</profile>
+</profiles>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/checkstyle.xml Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,225 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+ "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+ "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+
+<!--
+
+ Checkstyle configuration that checks the sun coding conventions from:
+
+ - the Java Language Specification at
+ http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+ - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+ - the Javadoc guidelines at
+ http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+ - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+ - some best practices
+
+ Checkstyle is very configurable. Be sure to read the documentation at
+ http://checkstyle.sf.net (or in your downloaded distribution).
+
+ Most Checks are configurable, be sure to consult the documentation.
+
+ To completely disable a check, just comment it out or delete it from the file.
+
+ Finally, it is worth reading the documentation.
+
+-->
+
+<module name="Checker">
+
+ <!-- Checks that a package.html file exists for each package. -->
+ <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
+ <module name="PackageHtml"/>
+
+ <!-- Checks whether files end with a new line. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+ <module name="NewlineAtEndOfFile"/>
+
+ <!-- Checks that property files contain the same keys. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+ <module name="Translation"/>
+
+
+ <module name="TreeWalker">
+
+ <!-- Checks for Javadoc comments. -->
+ <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+ <module name="JavadocMethod">
+ <property name="allowUndeclaredRTE" value="true"/>
+ </module>
+ <module name="JavadocType"/>
+ <module name="JavadocVariable">
+ <property name="scope" value="package" />
+ </module>
+ <module name="JavadocStyle">
+ <property name="checkEmptyJavadoc" value="true"/>
+ </module>
+
+
+ <!-- Checks for Naming Conventions. -->
+ <!-- See http://checkstyle.sf.net/config_naming.html -->
+ <module name="ConstantName"/>
+ <module name="LocalFinalVariableName"/>
+ <module name="LocalVariableName"/>
+ <module name="MemberName">
+ <property name="format" value="^m[A-Z][a-zA-Z0-9]*$"/>
+ </module>
+ <module name="MethodName"/>
+ <module name="PackageName"/>
+ <module name="ParameterName"/>
+ <module name="StaticVariableName"/>
+ <module name="TypeName"/>
+
+
+ <!-- Checks for Headers -->
+ <!-- See http://checkstyle.sf.net/config_header.html -->
+ <!-- <module name="Header"> -->
+ <!-- The follow property value demonstrates the ability -->
+ <!-- to have access to ANT properties. In this case it uses -->
+ <!-- the ${basedir} property to allow Checkstyle to be run -->
+ <!-- from any directory within a project. See property -->
+ <!-- expansion, -->
+ <!-- http://checkstyle.sf.net/config.html#properties -->
+ <!-- <property -->
+ <!-- name="headerFile" -->
+ <!-- value="${basedir}/java.header"/> -->
+ <!-- </module> -->
+
+ <!-- Following interprets the header file as regular expressions. -->
+ <!-- <module name="RegexpHeader"/> -->
+
+
+ <!-- Checks for imports -->
+ <!-- See http://checkstyle.sf.net/config_import.html -->
+ <module name="AvoidStarImport"/>
+ <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+ <module name="RedundantImport"/>
+ <module name="UnusedImports"/>
+
+
+ <!-- Checks for Size Violations. -->
+ <!-- See http://checkstyle.sf.net/config_sizes.html -->
+ <module name="FileLength"/>
+ <module name="LineLength">
+ <property name="max" value="120" />
+ </module>
+ <module name="MethodLength"/>
+ <module name="ParameterNumber"/>
+ <module name="AnonInnerLength">
+ <property name="max" value="60" />
+ </module>
+
+
+ <!-- Checks for whitespace -->
+ <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+ <module name="EmptyForIteratorPad"/>
+ <module name="MethodParamPad"/>
+ <module name="NoWhitespaceAfter"/>
+ <module name="NoWhitespaceBefore"/>
+ <module name="OperatorWrap"/>
+ <module name="ParenPad"/>
+ <module name="TypecastParenPad"/>
+ <!-- We want mixed tabulation
+ <module name="TabCharacter"/>
+ -->
+ <module name="WhitespaceAfter"/>
+ <module name="WhitespaceAround"/>
+
+
+ <!-- Modifier Checks -->
+ <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+ <module name="ModifierOrder"/>
+ <module name="RedundantModifier"/>
+
+
+ <!-- Checks for blocks. You know, those {}'s -->
+ <!-- See http://checkstyle.sf.net/config_blocks.html -->
+ <module name="AvoidNestedBlocks"/>
+ <module name="EmptyBlock"/>
+ <module name="LeftCurly"/>
+ <!--
+ <module name="NeedBraces"/>
+ -->
+ <module name="RightCurly"/>
+
+
+ <!-- Checks for common coding problems -->
+ <!-- See http://checkstyle.sf.net/config_coding.html -->
+ <module name="CovariantEquals"/>
+ <module name="AvoidInlineConditionals"/>
+ <module name="InnerAssignment" />
+ <module name="DoubleCheckedLocking"/> <!-- MY FAVOURITE -->
+ <module name="EmptyStatement"/>
+ <module name="EqualsHashCode"/>
+ <module name="HiddenField">
+ <property name="ignoreConstructorParameter" value="true"/>
+ <property name="ignoreAbstractMethods" value="true"/>
+ <property name="ignoreSetter" value="true"/>
+ </module>
+ <module name="IllegalInstantiation"/>
+ <module name="InnerAssignment"/>
+ <!--
+ <module name="MagicNumber"/>
+ -->
+ <module name="MissingSwitchDefault"/>
+ <module name="RedundantThrows"/>
+ <module name="SimplifyBooleanExpression"/>
+ <module name="SimplifyBooleanReturn"/>
+ <module name="StringLiteralEquality"/>
+ <module name="SuperFinalize"/>
+ <module name="IllegalCatch"/>
+ <module name="IllegalThrows"/>
+ <module name="PackageDeclaration"/>
+ <module name="JUnitTestCase"/>
+ <module name="DeclarationOrder"/>
+ <module name="ExplicitInitialization"/>
+ <module name="DefaultComesLast"/>
+ <module name="MissingCtor"/>
+ <module name="FallThrough"/>
+ <module name="MultipleStringLiterals"/>
+ <module name="MultipleVariableDeclarations"/>
+ <module name="UnnecessaryParentheses"/>
+ <module name="ParameterAssignment"/>
+ <module name="SuperClone"/>
+
+ <!-- Checks for class design -->
+ <!-- See http://checkstyle.sf.net/config_design.html -->
+ <module name="DesignForExtension"/>
+ <module name="FinalClass"/>
+ <module name="HideUtilityClassConstructor"/>
+ <module name="InterfaceIsType"/>
+ <module name="VisibilityModifier"/>
+ <module name="MutableException"/>
+
+
+ <!-- Miscellaneous other checks. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html -->
+ <module name="ArrayTypeStyle"/>
+ <module name="FinalParameters">
+ <property name="tokens" value="CTOR_DEF"/>
+ </module>
+ <module name="Indentation"/>
+
+ <module name="GenericIllegalRegexp">
+ <property name="format" value="\s+$"/>
+ <property name="message" value="Line has trailing spaces."/>
+ </module>
+ <module name="TodoComment"/>
+ <module name="UpperEll"/>
+
+ <module name="BooleanExpressionComplexity"/>
+ <module name="UpperEll"/>
+
+
+ <module name="ArrayTypeStyle"/>
+
+ </module>
+ <module name="StrictDuplicateCode"/>
+ <module name="NewlineAtEndOfFile"/>
+
+</module>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/BeemException.java Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,67 @@
+/**
+ *
+ */
+package com.beem.project.beem;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * @author darisk
+ *
+ */
+public class BeemException extends Exception implements Parcelable {
+
+ public static final Parcelable.Creator<BeemException> CREATOR = new Creator<BeemException>() {
+
+ @Override
+ public BeemException[] newArray(int size) {
+ // TODO Auto-generated method stub
+ return new BeemException[size];
+ }
+
+ @Override
+ public BeemException createFromParcel(Parcel source) {
+ // TODO Auto-generated method stub
+ return new BeemException(source);
+ }
+ };
+
+ public BeemException() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public BeemException(String detailMessage, Throwable throwable) {
+ super(detailMessage, throwable);
+ // TODO Auto-generated constructor stub
+ }
+
+ public BeemException(String detailMessage) {
+ super(detailMessage);
+ // TODO Auto-generated constructor stub
+ }
+
+ public BeemException(Throwable throwable) {
+ super(throwable);
+ // TODO Auto-generated constructor stub
+ }
+
+ private BeemException(Parcel parcel){
+ this(parcel.readString());
+ }
+
+ @Override
+ public int describeContents() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ // TODO Auto-generated method stub
+ dest.writeString(getLocalizedMessage());
+ }
+
+
+}
--- a/src/com/beem/project/beem/BeemService.java Sat Mar 21 00:00:14 2009 +0100
+++ b/src/com/beem/project/beem/BeemService.java Sat Mar 21 02:09:05 2009 +0100
@@ -3,8 +3,13 @@
*/
package com.beem.project.beem;
-import java.util.List;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import org.jivesoftware.smack.Roster;
+import org.jivesoftware.smack.RosterListener;
+import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
@@ -15,11 +20,13 @@
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.IBinder;
+import android.os.Looper;
import android.os.RemoteException;
import android.widget.Toast;
-import com.beem.project.beem.service.IXMPPFacade;
-
+import com.beem.project.beem.service.XMPPConnectionAdapter;
+import com.beem.project.beem.service.aidl.IXMPPConnection;
+import com.beem.project.beem.service.aidl.IXMPPFacade;
/**
* @author darisk
*
@@ -28,27 +35,35 @@
private NotificationManager notificationManager;
- private XMPPConnection connection;
-
+ private IXMPPConnection connection;
private SharedPreferences settings;
-
- private String login;
-
- private String password;
-
- private String host;
+ private String mLogin;
+ private String mPassword;
+ private String mHost;
private IXMPPFacade.Stub bind = new IXMPPFacade.Stub() {
- @Override
- public List<String> getContactList() throws RemoteException {
- return null;
- }
+ @Override
+ public IXMPPConnection getXMPPConnection() throws RemoteException {
+ return connection;
+ }
+
+ @Override
+ public void disconnect() throws RemoteException {
+ connection.disconnect();
+ }
+
- @Override
- public List<String> getGroupList() throws RemoteException {
- return null;
- }
+ @Override
+ public void connectAsync() throws RemoteException {
+ connection.connectAsync(mLogin, mPassword, "BEEM");
+ }
+
+
+ @Override
+ public void connectSync() throws RemoteException {
+ connection.connectSync(mLogin, mPassword, "BEEM");
+ }
};
/*
@@ -57,25 +72,26 @@
* @see android.app.Service#onBind(android.content.Intent)
*/
@Override
- public IBinder onBind(Intent arg0) {
- try {
- connection = new XMPPConnection("10.0.2.2"); // address du pc host
- // de l'emulateur
- connection.connect();
- connection.login(login, password);
- notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- showBasicNotification(R.string.BeemServiceCreated);
- } catch (XMPPException e) {
- // TODO Auto-generated catch block
- Toast toast = Toast.makeText(this, "ERREUR " + e.getMessage(),
- Toast.LENGTH_LONG);
- toast.show();
- notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- showBasicNotification(R.string.PreferenceFileName);
- }
- return bind;
+ public IBinder onBind(Intent intent) {
+ showBasicNotification(R.string.BeemServiceCreated);
+ return bind;
+ // to forbid a client to bind
+ // return null;
}
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ settings = getSharedPreferences(getString(R.string.PreferenceFileName),
+ MODE_PRIVATE);
+ mLogin = settings.getString(getString(R.string.PreferenceLoginKey), "");
+ mPassword = settings.getString(
+ getString(R.string.PreferencePasswordKey), "");
+ mHost = settings.getString(getString(R.string.PreferenceHostKey), "");
+ notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+ connection = new XMPPConnectionAdapter("10.0.2.2"); // address
+ }
+
private void showBasicNotification(int stringResource) {
String text = (String) getText(stringResource);
Notification notif = new Notification(R.drawable.logo, text, System
@@ -90,43 +106,29 @@
}
@Override
- public void onCreate() {
- super.onCreate();
- settings = getSharedPreferences(getString(R.string.PreferenceFileName),
- MODE_PRIVATE);
- login = settings.getString(getString(R.string.PreferenceLoginKey), "");
- password = settings.getString(
- getString(R.string.PreferencePasswordKey), "");
- host = settings.getString(getString(R.string.PreferenceHostKey), "");
- }
-
- @Override
public void onStart(Intent intent, int startId) {
- try {
- connection = new XMPPConnection("10.0.2.2"); // address du pc host
- // de l'emulateur
- connection.connect();
- connection.login(login, password);
- notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- showBasicNotification(R.string.BeemServiceCreated);
- } catch (XMPPException e) {
- // TODO Auto-generated catch block
- Toast toast = Toast.makeText(this, "ERREUR " + e.getMessage(),
- Toast.LENGTH_LONG);
- toast.show();
- notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- showBasicNotification(R.string.PreferenceFileName);
- }
- }
-
- private void closeConnection() {
- if (connection != null)
- connection.disconnect();
+ try {
+ connection.connectSync(mLogin, mPassword, "BEEM");
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
@Override
public void onDestroy() {
- closeConnection();
- }
+ closeConnection();
+ showBasicNotification(R.string.BeemServiceDestroyed);
+ }
+
+ private void closeConnection() {
+ if (connection != null)
+ try {
+ connection.disconnect();
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
}
--- a/src/com/beem/project/beem/service/IXMPPFacade.aidl Sat Mar 21 00:00:14 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-package com.beem.project.beem.service;
-
-// import org.jivesoftware.smack.XMPPConnection;
-
-interface IXMPPFacade {
-
- // org.jivesoftware.smack.XMPPConnection getXMPPConnection();
-
- List<String> getContactList();
- List<String> getGroupList();
-
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/RosterAdapter.java Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,61 @@
+/**
+ *
+ */
+package com.beem.project.beem.service;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.jivesoftware.smack.Roster;
+import org.jivesoftware.smack.RosterEntry;
+import org.jivesoftware.smack.XMPPException;
+
+import android.os.RemoteException;
+
+import com.beem.project.beem.service.aidl.IRosterEntry;
+import com.beem.project.beem.service.aidl.IRoster.Stub;
+
+/**
+ * @author darisk
+ *
+ */
+public class RosterAdapter extends com.beem.project.beem.service.aidl.IRoster.Stub {
+
+ private Roster adaptee;
+
+ public RosterAdapter(Roster roster) {
+ adaptee = roster;
+ }
+
+ @Override
+ public IRosterEntry createEntry(String user, String name, String[] groups)
+ throws RemoteException {
+ try {
+ adaptee.createEntry(user, name, groups);
+ } catch (XMPPException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ public void createGroup(String groupname) throws RemoteException {
+ // TODO Auto-generated method stub
+ adaptee.createGroup(groupname);
+ }
+
+ @Override
+ public List getEntries() throws RemoteException {
+ // TODO Auto-generated method stub
+ Collection<RosterEntry> col = adaptee.getEntries();
+ ArrayList<IRosterEntry> result = new ArrayList<IRosterEntry>(col.size());
+ for (RosterEntry rosterEntry : col ) {
+ result.add(new RosterEntryAdapter(rosterEntry));
+ }
+ return result;
+ }
+
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/RosterEntryAdapter.java Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,42 @@
+/**
+ *
+ */
+package com.beem.project.beem.service;
+
+import org.jivesoftware.smack.RosterEntry;
+import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.packet.RosterPacket.ItemStatus;
+import org.jivesoftware.smack.packet.RosterPacket.ItemType;
+
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.beem.project.beem.service.aidl.IRosterEntry;
+
+/**
+ * @author darisk
+ *
+ */
+public class RosterEntryAdapter extends IRosterEntry.Stub {
+
+ private RosterEntry adaptee;
+
+ public RosterEntryAdapter(RosterEntry entry) {
+ adaptee = entry;
+ }
+
+ @Override
+ public String getName() throws RemoteException {
+ return adaptee.getName();
+ }
+
+ @Override
+ public String getUser() throws RemoteException {
+ return adaptee.getUser();
+ }
+
+ @Override
+ public void setName(String name) throws RemoteException {
+ adaptee.setName(name);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/XMPPConnectionAdapter.java Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,204 @@
+/**
+ *
+ */
+package com.beem.project.beem.service;
+
+import org.jivesoftware.smack.ConnectionConfiguration;
+import org.jivesoftware.smack.ConnectionListener;
+import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.XMPPException;
+
+import android.os.RemoteCallbackList;
+import android.os.RemoteException;
+
+import com.beem.project.beem.BeemException;
+import com.beem.project.beem.service.aidl.IBeemConnectionListener;
+import com.beem.project.beem.service.aidl.IRoster;
+import com.beem.project.beem.service.aidl.IXMPPConnection;
+
+/**
+ * @author darisk
+ *
+ */
+public class XMPPConnectionAdapter extends IXMPPConnection.Stub {
+
+ private XMPPConnection adaptee;
+ private BeemException lastException;
+
+ private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners = new RemoteCallbackList<IBeemConnectionListener>();
+ private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
+
+ public XMPPConnectionAdapter(XMPPConnection con) {
+ adaptee = con;
+ }
+
+ public XMPPConnectionAdapter(String serviceName) {
+ this(new XMPPConnection(serviceName));
+ }
+
+ public XMPPConnectionAdapter(ConnectionConfiguration config) {
+ this(new XMPPConnection(config));
+ }
+
+ @Override
+ public boolean connectSync(String username, String password, String resource)
+ throws RemoteException {
+ try {
+ adaptee.connect();
+ adaptee.addConnectionListener(mConListener);
+ adaptee.login(username, password, resource);
+ lastException = null;
+ triggerAsynchronousConnectEvent();
+ return true;
+ } catch (XMPPException e) {
+ lastException = new BeemException(e);
+ }
+ return false;
+ }
+
+ public boolean disconnect() {
+ adaptee.disconnect();
+ lastException = null;
+ return true;
+ }
+
+ @Override
+ public IRoster getRoster() throws RemoteException {
+ return new RosterAdapter(adaptee.getRoster());
+ }
+
+ @Override
+ public void connectAsync(final String username, final String password, final String resource)
+ throws RemoteException {
+ Thread t = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ try {
+ connectSync(username,password,resource);
+ } catch (RemoteException e) {
+
+ }
+ }
+ });
+ t.start();
+ }
+
+ @Override
+ public void addConnectionListener(IBeemConnectionListener listen)
+ throws RemoteException {
+ if (listen != null)
+ mRemoteConnListeners.register(listen);
+ }
+
+ @Override
+ public void removeConnectionListener(IBeemConnectionListener listen)
+ throws RemoteException {
+ if (listen != null)
+ mRemoteConnListeners.unregister(listen);
+ }
+
+ private void triggerAsynchronousConnectEvent() {
+ mConListener.onConnect();
+ }
+
+ private class ConnexionListenerAdapter implements ConnectionListener {
+
+ public void onConnect() {
+ final int N = mRemoteConnListeners.beginBroadcast();
+
+ for (int i = 0; i < N; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.onConnect();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
+ }
+
+ @Override
+ public void connectionClosed() {
+ final int N = mRemoteConnListeners.beginBroadcast();
+
+ for (int i = 0; i < N; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.connectionClosed();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
+ }
+
+ @Override
+ public void connectionClosedOnError(Exception arg0) {
+ final int N = mRemoteConnListeners.beginBroadcast();
+
+ for (int i = 0; i < N; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.connectionClosedOnError();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
+ }
+
+ @Override
+ public void reconnectingIn(int arg0) {
+ final int N = mRemoteConnListeners.beginBroadcast();
+
+ for (int i = 0; i < N; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.reconnectingIn(arg0);
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
+ }
+
+ @Override
+ public void reconnectionFailed(Exception arg0) {
+ final int N = mRemoteConnListeners.beginBroadcast();
+
+ for (int i = 0; i < N; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.reconnectionFailed();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
+ }
+
+ @Override
+ public void reconnectionSuccessful() {
+ final int N = mRemoteConnListeners.beginBroadcast();
+
+ for (int i = 0; i < N; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.reconnectionSuccessful();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
+ }
+ }
+
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IBeemConnectionListener.aidl Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,17 @@
+package com.beem.project.beem.service.aidl;
+
+interface IBeemConnectionListener {
+
+ void connectionClosed();
+
+ void onConnect();
+
+ //void connectionClosedOnError(in Exception e);
+ void connectionClosedOnError();
+
+ void reconnectingIn(in int seconds);
+
+ void reconnectionFailed();
+
+ void reconnectionSuccessful();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IRoster.aidl Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,14 @@
+package com.beem.project.beem.service.aidl;
+
+import com.beem.project.beem.service.aidl.IRosterEntry;
+
+interface IRoster {
+
+ IRosterEntry createEntry(in String user, in String name, in String[] groups);
+
+ void createGroup(in String groupname);
+
+ // List<IRosterEntry>
+ List getEntries();
+
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IRosterEntry.aidl Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,12 @@
+package com.beem.project.beem.service.aidl;
+
+interface IRosterEntry {
+
+ String getName();
+ String getUser();
+ void setName(in String name);
+ //TODO
+ // getStatus()
+ // getType
+
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IXMPPConnection.aidl Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,20 @@
+package com.beem.project.beem.service.aidl;
+
+import com.beem.project.beem.service.aidl.IRoster;
+import com.beem.project.beem.service.aidl.IBeemConnectionListener;
+
+interface IXMPPConnection {
+
+ boolean connectSync(in String username, in String password, in String resource);
+
+ void connectAsync(in String username, in String password, in String resource);
+
+ boolean disconnect();
+
+ // void login(String username, String password, String resource);
+
+ IRoster getRoster();
+
+ void addConnectionListener(in IBeemConnectionListener listen);
+ void removeConnectionListener(in IBeemConnectionListener listen);
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IXMPPFacade.aidl Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,15 @@
+package com.beem.project.beem.service.aidl;
+
+import com.beem.project.beem.service.aidl.IXMPPConnection;
+
+interface IXMPPFacade {
+
+ IXMPPConnection getXMPPConnection();
+
+ void connectSync();
+
+ void connectAsync();
+
+ void disconnect();
+
+}
--- a/src/com/beem/project/beem/ui/Beem.java Sat Mar 21 00:00:14 2009 +0100
+++ b/src/com/beem/project/beem/ui/Beem.java Sat Mar 21 02:09:05 2009 +0100
@@ -4,6 +4,7 @@
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
+import android.os.Handler;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -13,62 +14,96 @@
import com.beem.project.beem.R;
+/**
+ * La principale activite to be continuous.
+ */
public class Beem extends Activity {
private SharedPreferences mSettings;
private BeemDialogSettings mDialog;
private Button mButton;
+ private Handler mHandler;
+
+ /**
+ * Default constructor.
+ */
+ public Beem() {
+ super();
+ mHandler= new Handler();
+ }
/**
* Called when the activity is first created.
+ * @param savedInstanceState
+ * previous state.
*/
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.beem);
- mSettings = getSharedPreferences(
- getString(R.string.PreferenceFileName), MODE_PRIVATE);
- mDialog = new BeemDialogSettings(this, mSettings);
+ public final void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.beem);
+ mSettings = getSharedPreferences(
+ getString(R.string.PreferenceFileName), MODE_PRIVATE);
+ mDialog = new BeemDialogSettings(this, mSettings);
- mButton = (Button) findViewById(R.id.connection);
- mButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mButton.getText() == getString(R.string.BeemCreateAccount))
- mDialog.show();
- else
- startActivity(new Intent(Beem.this, ContactList.class));
- }
- });
- showJID();
+ mButton = (Button) findViewById(R.id.connection);
+ mButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mButton.getText() == getString(R.string.BeemCreateAccount))
+ mDialog.show();
+ else
+ startActivity(new Intent(Beem.this, ContactList.class));
+ }
+ });
+ showJID();
}
+ /**
+ * Callback for menu creation.
+ * @param menu
+ * the menu created
+ * @return true on success, false otherwise
+ */
@Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.beemmenu, menu);
- return true;
+ public final boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.beemmenu, menu);
+ return true;
}
+ /**
+ * Callback for menu item selected.
+ * @param item
+ * the item selected
+ * @return true on success, false otherwise
+ */
@Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.account_edit:
- mDialog.show();
- return true;
- case R.id.account_about:
- return true;
- }
- return false;
+ public final boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.account_edit:
+ mDialog.show();
+ return true;
+ case R.id.account_about:
+ return true;
+ default:
+ return false;
+ }
}
- public void showJID() {
- String jid = mSettings.getString(getString(R.string.PreferenceLoginKey), "") + "@"
- + mSettings.getString(getString(R.string.PreferenceHostKey), "");
- if (jid.length() == 1)
- jid = getString(R.string.BeemCreateAccount);
- mButton.setText(jid);
+ /**
+ * Show jabber id in button.
+ */
+ public final void showJID() {
+ String jid = mSettings.getString(
+ getString(R.string.PreferenceLoginKey), "")
+ + "@"
+ + mSettings
+ .getString(getString(R.string.PreferenceHostKey), "");
+ if (jid.length() == 1)
+ jid = getString(R.string.BeemCreateAccount);
+ mButton.setText(jid);
}
+
}
--- a/src/com/beem/project/beem/ui/ContactList.java Sat Mar 21 00:00:14 2009 +0100
+++ b/src/com/beem/project/beem/ui/ContactList.java Sat Mar 21 02:09:05 2009 +0100
@@ -11,12 +11,16 @@
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.Log;
import android.widget.ExpandableListAdapter;
import android.widget.SimpleExpandableListAdapter;
import com.beem.project.beem.BeemService;
import com.beem.project.beem.R;
-import com.beem.project.beem.service.IXMPPFacade;
+import com.beem.project.beem.service.aidl.IBeemConnectionListener;
+import com.beem.project.beem.service.aidl.IXMPPConnection;
+import com.beem.project.beem.service.aidl.IXMPPFacade;
public class ContactList extends ExpandableListActivity {
@@ -27,7 +31,6 @@
super.onCreate(saveBundle);
bindService(new Intent(this, BeemService.class), mConnection,
BIND_AUTO_CREATE | BIND_DEBUG_UNBIND);
- showContactList();
}
private void showContactList() {
@@ -44,7 +47,7 @@
for (int j = 0; j < 5; j++) {
Map<String, String> curChildMap = new HashMap<String, String>();
children.add(curChildMap);
- curChildMap.put("NAME CHILD", "Child " + j);
+ curChildMap.put("NAOME CHILD", "Child " + j);
}
childData.add(children);
}
@@ -61,10 +64,19 @@
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mService = IXMPPFacade.Stub.asInterface(service);
+ try {
+ IXMPPConnection con = mService.getXMPPConnection();
+ con.addConnectionListener(new TestConnectionListener());
+ mService.connectSync();
+ Log.i("BEEM", "Connected !!!");
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
/*
* mService.getGroupList(); mService.getContactList();
*/
- showContactList();
}
@Override
@@ -79,4 +91,44 @@
unbindService(mConnection);
}
+ private class TestConnectionListener extends IBeemConnectionListener.Stub {
+
+ @Override
+ public void connectionClosed() throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void connectionClosedOnError() throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onConnect() throws RemoteException {
+ // TODO Auto-generated method stub
+ showContactList();
+ }
+
+ @Override
+ public void reconnectingIn(int seconds) throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void reconnectionFailed() throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void reconnectionSuccessful() throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
}