January Branch 2012
diff --git a/org.eclipse.scout.releng.ant/.classpath b/org.eclipse.scout.releng.ant/.classpath
new file mode 100644
index 0000000..e8be644
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/.classpath
@@ -0,0 +1,8 @@
+<?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/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="test"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.scout.releng.ant/.project b/org.eclipse.scout.releng.ant/.project
new file mode 100644
index 0000000..86f9782
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.scout.releng.ant</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>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.scout.releng.ant/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.scout.releng.ant/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..284df1b
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,278 @@
+#Thu Apr 08 15:59:16 CEST 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=m_
+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.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=0
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+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=false
+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=true
+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=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=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=true
+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=true
+org.eclipse.jdt.core.formatter.lineSplit=9999
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true
+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=true
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/org.eclipse.scout.releng.ant/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.releng.ant/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..9ba6f37
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,62 @@
+#Thu Apr 08 15:52:58 CEST 2010
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=false
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_serial_version_id=false
+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=false
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_Eclipse Scout
+cleanup_settings_version=2
+eclipse.preferences.version=1
+formatter_profile=_Eclipse Scout
+formatter_settings_version=11
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><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) 2010 BSI Business Systems Integration AG.\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 * BSI Business Systems Integration AG - 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">/** <h4> ${type_name} </h4>&\#13;\r\n *&\#13;\r\n * @author ${user}&\#13;\r\n * @since 1.1.0 (${date})&\#13;\r\n *&\#13;\r\n * ${tags}&\#13;\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\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><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\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Jsdoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.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.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated function stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.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.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/org.eclipse.scout.releng.ant/.settings/org.eclipse.wst.validation.prefs b/org.eclipse.scout.releng.ant/.settings/org.eclipse.wst.validation.prefs
new file mode 100644
index 0000000..89544ed
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/.settings/org.eclipse.wst.validation.prefs
@@ -0,0 +1,6 @@
+#Tue Feb 27 20:07:48 CET 2007
+DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator;
+USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;
+USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;
+USER_PREFERENCE=overrideGlobalPreferencesfalse
+eclipse.preferences.version=1
diff --git a/org.eclipse.scout.releng.ant/META-INF/MANIFEST.MF b/org.eclipse.scout.releng.ant/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..dbba08c
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ant
+Bundle-SymbolicName: org.eclipse.scout.releng.ant;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.apache.ant;bundle-version="1.7.1",
+ org.junit4;bundle-version="4.8.1"
diff --git a/org.eclipse.scout.releng.ant/build.properties b/org.eclipse.scout.releng.ant/build.properties
new file mode 100644
index 0000000..b5f7a17
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+ test/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/org.eclipse.scout.releng.ant/buildJar.properties b/org.eclipse.scout.releng.ant/buildJar.properties
new file mode 100644
index 0000000..c6f0d23
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/buildJar.properties
@@ -0,0 +1,5 @@
+bootclasspath=${javahome}/jre/lib/rt.jar${path.separator}${javahome}/jre/lib/jsse.jar
+jarName=scoutAnt.jar
+build.result.folder=./jar
+antBundleLocation=E:/eclipse/eclipse3.6.1/plugins/org.apache.ant_1.7.1.v20100518-1145
+publishDir=../org.eclipse.scout.releng/buildFiles/lib
\ No newline at end of file
diff --git a/org.eclipse.scout.releng.ant/buildJar.xml b/org.eclipse.scout.releng.ant/buildJar.xml
new file mode 100644
index 0000000..cbe99fb
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/buildJar.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="org.eclipse.scout.releng.ant" default="buildAll" basedir=".">
+ <property file="buildJar.properties" />
+
+ <path id="@dot.classpath">
+ <pathelement path="${antBundleLocation}/lib/ant.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-antlr.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-apache-bcel.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-apache-bsf.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-apache-log4j.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-apache-oro.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-apache-regexp.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-apache-resolver.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-commons-logging.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-commons-net.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-jai.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-javamail.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-jdepend.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-jmf.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-jsch.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-junit.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-launcher.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-netrexx.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-nodeps.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-starteam.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-stylebook.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-swing.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-trax.jar" />
+ <pathelement path="${antBundleLocation}/lib/ant-weblogic.jar" />
+ </path>
+
+ <target name="clean">
+ <delete dir="${build.result.folder}" />
+ <mkdir dir="${build.result.folder}/@dot" />
+ </target>
+
+ <target name="buildAll" depends="clean, compile, packJar, publish">
+
+ <delete dir="${build.result.folder}" />
+ </target>
+
+ <target name="compile">
+ <javac destdir="${build.result.folder}/@dot" failonerror="${javacFailOnError}" verbose="${javacVerbose}" debug="true" includeAntRuntime="no" bootclasspath="${bundleBootClasspath}">
+ <!-- <compilerarg line="${compilerArg}" compiler="${build.compiler}"/> -->
+ <classpath refid="@dot.classpath" />
+ <src path="src/" />
+ <compilerarg value="@${basedir}/javaCompiler...args" compiler="org.eclipse.jdt.core.JDTCompilerAdapter" />
+ <!-- <compilerarg line="-log '${build.result.folder}/@dot${logExtension}'" compiler="org.eclipse.jdt.core.JDTCompilerAdapter" /> -->
+ </javac>
+ </target>
+
+ <target name="packJar">
+ <jar destfile="${build.result.folder}/${jarName}">
+ <fileset dir="${build.result.folder}/@dot">
+ <include name="**/**" />
+ </fileset>
+ </jar>
+ </target>
+
+ <target name="publish" if="publishDir">
+ <copy file="${build.result.folder}/${jarName}" todir="${publishDir}" />
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/CreateRepositoryOverview.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/CreateRepositoryOverview.java
new file mode 100644
index 0000000..b5ff740
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/CreateRepositoryOverview.java
@@ -0,0 +1,299 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+import java.text.SimpleDateFormat;
+import java.util.TreeMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.eclipse.scout.releng.ant.util.DropInZip;
+import org.eclipse.scout.releng.ant.util.DropInZipFilter;
+import org.eclipse.scout.releng.ant.util.ReverseStringComparator;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * <h4>CreateRepositoryOverview</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (31.01.2011)
+ */
+public class CreateRepositoryOverview extends Task {
+
+ private String rootUrl;
+ private File uploadDir;
+ private File repositoryDir;
+ private File overviewFile;
+
+ private SimpleDateFormat dateFormat;
+
+ public CreateRepositoryOverview() {
+ dateFormat = new SimpleDateFormat("yyyyMMdd-HHmm");
+ }
+
+ /**
+ * @param rootUrl
+ * the rootUrl to set
+ */
+ public void setRootUrl(String rootUrl) {
+ this.rootUrl = rootUrl.replaceAll("/$", "");
+ }
+
+ /**
+ * @return the rootUrl
+ */
+ public String getRootUrl() {
+ return rootUrl;
+ }
+
+ /**
+ * @param uploadDir
+ * the uploadDir to set
+ */
+ public void setUploadDir(File uploadDir) {
+ this.uploadDir = uploadDir;
+ }
+
+ /**
+ * @return the uploadDir
+ */
+ public File getUploadDir() {
+ return uploadDir;
+ }
+
+ /**
+ * @param repositoryDir
+ * the repositoryDir to set
+ */
+ public void setRepositoryDir(File repositoryDir) {
+ this.repositoryDir = repositoryDir;
+ }
+
+ /**
+ * @return the repositoryDir
+ */
+ public File getRepositoryDir() {
+ return repositoryDir;
+ }
+
+ /**
+ * @param overviewFile
+ * the overviewFile to set
+ */
+ public void setOverviewFile(File overviewFile) {
+ this.overviewFile = overviewFile;
+ }
+
+ /**
+ * @return the overviewFile
+ */
+ public File getOverviewFile() {
+ return overviewFile;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ try {
+ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+ Document document = documentBuilder.newDocument();
+ Element rootElement = document.createElement("repository");
+ rootElement.setAttribute("name", "Scout");
+ document.appendChild(rootElement);
+ findReleases(document, rootElement);
+ // write xml
+ writeXmlFile(document);
+ }
+ catch (Exception e) {
+ throw new BuildException("could not create xml document.", e);
+ }
+ }
+
+ private void findReleases(Document doc, Element repository) {
+ // nightly
+// File nightlyDir = new File(getRepositoryDir().getAbsolutePath() + File.separator + "nightly");
+// if (nightlyDir.exists()) {
+// addRelease(nightlyDir, doc, repository);
+// }
+ P_ReleaseFilter releseFilter = new P_ReleaseFilter();
+ if (getRepositoryDir() != null) {
+ getRepositoryDir().list(releseFilter);
+ }
+ if (getUploadDir() != null) {
+ getUploadDir().list(releseFilter);
+ }
+ for (ReleaseFile releaseDir : releseFilter.getReleses()) {
+ addRelease(releaseDir, doc, repository);
+ }
+ }
+
+ private void addRelease(ReleaseFile releaseDir, Document doc, Element repository) {
+ Element releaseElement = doc.createElement("release");
+
+ File updateDir = new File(releaseDir.getFile().getAbsolutePath() + File.separator + "update");
+ if (updateDir.exists()) {
+ URI uri = releaseDir.getFolder().relativize(updateDir.getAbsoluteFile().toURI());
+ releaseElement.setAttribute("url", rootUrl + "/" + uri.toString());
+ releaseElement.setAttribute("version", releaseDir.getFile().getName());
+ }
+ findZips(releaseDir, doc, releaseElement);
+// File zipDir = new File(releaseDir.getFile().getAbsolutePath() + File.separator + "zip");
+// if (zipDir.exists()) {
+// findZips(zipDir, doc, releaseElement);
+// }
+
+ if (releaseElement.hasChildNodes() || releaseElement.hasAttributes()) {
+ try {
+ File eclipseVersionFile = new File(releaseDir.getFile().getAbsolutePath() + File.separator + "eclipseVersion.txt");
+ if (eclipseVersionFile.exists()) {
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new FileReader(eclipseVersionFile));
+ String line = reader.readLine();
+ if (line != null) {
+ Matcher m = Pattern.compile("^\\s*\\[\\s*([0-9]{1,2}\\.[0-9]{1,2})\\s*\\,\\s*([0-9]{1,2}\\.[0-9]{1,2})\\s*\\]\\s*$").matcher(line);
+ if (m.matches()) {
+ releaseElement.setAttribute("eclipseMinVersion", m.group(1));
+ releaseElement.setAttribute("eclipseMaxVersion", m.group(2));
+ }
+ }
+ }
+ finally {
+ if(reader != null) {
+ try {
+ reader.close();
+ } catch(Exception e) {}
+ }
+ }
+ }
+ }
+ catch (IOException e) {
+ log("could not parse eclipse min max version!", e, Project.MSG_WARN);
+ }
+ repository.appendChild(releaseElement);
+ }
+
+ }
+
+ private void findZips(ReleaseFile releseFile, Document doc, Element releaseElement) {
+ File zipDir = new File(releseFile.getFile().getAbsolutePath()+File.separator+"zip");
+ if(zipDir.exists() && zipDir.isDirectory()){
+
+ String attVersion = releaseElement.getAttribute("version");
+ DropInZipFilter filter = new DropInZipFilter();
+ zipDir.list(filter);
+ for (DropInZip zip : filter.getOrderedZipFiles()) {
+ if (attVersion == null || attVersion.length() == 0) {
+ attVersion = zip.getVersionMajor() + "." + zip.getVersionMinor();
+ releaseElement.setAttribute("version", attVersion);
+ }
+ Element zipElement = doc.createElement("zip");
+ zipElement.setAttribute("date", dateFormat.format(zip.getBuildDate()));
+ URI uri = releseFile.getFolder().relativize(zip.getZipFile().getAbsoluteFile().toURI());
+ zipElement.setAttribute("url", rootUrl + "/" + uri.toString());
+ releaseElement.appendChild(zipElement);
+ }
+ }
+ }
+
+ private void writeXmlFile(Document document) throws Exception {
+ OutputStream fos = null;
+ try {
+ if (!getOverviewFile().exists()) {
+ getOverviewFile().getParentFile().mkdirs();
+ }
+ fos = new FileOutputStream(getOverviewFile());
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+ DOMSource source = new DOMSource(document);
+ StreamResult result = new StreamResult(fos);
+ transformer.transform(source, result);
+ }
+ finally {
+ fos.close();
+ }
+ }
+
+ private void validate() throws BuildException {
+ if (getRepositoryDir() == null && getUploadDir() == null) {
+ throw new BuildException("parameter repositoryDir (Folder) or uploadDir (Folder) must be specified.");
+ }
+ if (getRootUrl() == null) {
+ throw new BuildException("parameter rootUrl (URL) must be specified.");
+ }
+ }
+
+ private class P_ReleaseFilter implements FilenameFilter {
+ TreeMap<String, ReleaseFile> releses = new TreeMap<String, ReleaseFile>(new ReverseStringComparator());
+
+ @Override
+ public boolean accept(File dir, String name) {
+ if (name.matches("([0-9]{1,2}\\.[0-9]{1,2}|nightly)")) {
+ releses.put("z"+name, new ReleaseFile(new File(dir.getAbsoluteFile() + File.separator + name),dir.toURI()));
+ }
+ return false;
+ }
+
+ /**
+ * @return the releses
+ */
+ public ReleaseFile[] getReleses() {
+ return releses.values().toArray(new ReleaseFile[releses.size()]);
+ }
+ }
+
+
+ private class ReleaseFile{
+ private File file;
+ private URI folder;
+
+ public ReleaseFile(File file, URI folder){
+ this.file = file;
+ this.folder = folder;
+ }
+
+ /**
+ * @return the file
+ */
+ public File getFile() {
+ return file;
+ }
+ /**
+ * @return the folder
+ */
+ public URI getFolder() {
+ return folder;
+ }
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/TrunkateRepository.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/TrunkateRepository.java
new file mode 100644
index 0000000..559e543
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/TrunkateRepository.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.TreeMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.eclipse.scout.releng.ant.util.ReverseStringComparator;
+
+/**
+ * <h4>TrunkateRepository</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (29.01.2011)
+ */
+public class TrunkateRepository extends Task {
+
+ private File repositoryLocation;
+ private int keep = 3;
+
+ /**
+ * @return the repositoryLocation
+ */
+ public File getRepositoryLocation() {
+ return repositoryLocation;
+ }
+
+ /**
+ * @param repositoryLocation
+ * the repositoryLocation to set
+ */
+ public void setRepositoryLocation(File repositoryLocation) {
+ this.repositoryLocation = repositoryLocation;
+ }
+
+ /**
+ * @return the keep
+ */
+ public int getKeep() {
+ return keep;
+ }
+
+ /**
+ * @param keep
+ * the keep to set
+ */
+ public void setKeep(int keep) {
+ this.keep = keep;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ P_ShellScriptFilter filter = new P_ShellScriptFilter();
+ getRepositoryLocation().list(filter);
+ if (filter.size() > keep) {
+ int i =0;
+ for(List<File> files : filter.getOrderedScripts()){
+ if(i >= keep){
+ for(File f : files){
+ FileUtility.deleteFile(f);
+ }
+ }
+ i++;
+ }
+
+ }
+ }
+
+ private void validate() throws BuildException {
+ if (getRepositoryLocation() == null) {
+ throw new BuildException("parameter repositoryLocation missing.");
+ }
+ }
+
+ private class P_ShellScriptFilter implements FilenameFilter {
+ private TreeMap<String, List<File>> orderedScripts;
+ Pattern zipPattern = Pattern.compile("^[A-Z]\\-scout\\-([0-9]{1,2})\\.([0-9]{1,2})\\.(([0-9]{1,2}))?([^\\-]*)?\\-([0-9]{8})\\-([0-9]{4})(-Incubation)?\\.zip$");
+ Pattern versionPattern = Pattern.compile("^.*([0-9]{12})\\.jar(\\.pack\\.gz)?$");
+
+ public P_ShellScriptFilter() {
+ this.orderedScripts = new TreeMap<String, List<File>>(new ReverseStringComparator());
+ }
+
+ @Override
+ public boolean accept(File dir, String name) {
+
+ File file = new File(dir.getAbsolutePath()+File.separator+name);
+ if(file.exists() && file.isDirectory()){
+ file.list(P_ShellScriptFilter.this);
+ }else{
+ Matcher zipMatcher = zipPattern.matcher(name);
+ if(zipMatcher.matches()){
+ String timeStamp = zipMatcher.group(6)+zipMatcher.group(7);
+ addFile(timeStamp, file);
+ }else{
+ Matcher jarMatcher = versionPattern.matcher(name);
+ if(jarMatcher.matches()){
+ addFile(jarMatcher.group(1), file);
+ }
+ }
+ }
+ return false;
+ }
+
+ private void addFile(String timeStamp, File file){
+ List<File> fileList = orderedScripts.get(timeStamp);
+ if(fileList == null){
+ fileList = new ArrayList<File>();
+ orderedScripts.put(timeStamp, fileList);
+ }
+ fileList.add(file);
+ }
+
+ public int size() {
+ return orderedScripts.size();
+ }
+
+ /**
+ * @return the orderedScripts
+ */
+ public Collection<List<File>> getOrderedScripts() {
+ return orderedScripts.values();
+ }
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/WaitForFile.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/WaitForFile.java
new file mode 100644
index 0000000..6f1c2b7
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/WaitForFile.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant;
+
+import java.io.File;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ * <h4>WaitForFile</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (26.01.2011)
+ */
+public class WaitForFile extends Task {
+
+ private File file;
+ private int maxMinutes = 30;
+ private int maxSecounds = 0;
+ private int pollSecounds = 5;
+
+ /**
+ * @param file
+ * the file to set
+ */
+ public void setFile(File file) {
+ this.file = file;
+ }
+
+ /**
+ * @return the file
+ */
+ public File getFile() {
+ return file;
+ }
+
+ /**
+ * @param maxMinutes
+ * the maxMinutes to set
+ */
+ public void setMaxMinutes(int maxMinutes) {
+ this.maxMinutes = maxMinutes;
+ }
+
+ /**
+ * @return the maxMinutes
+ */
+ public int getMaxMinutes() {
+ return maxMinutes;
+ }
+
+ /**
+ * @param maxSecounds
+ * the maxSecounds to set
+ */
+ public void setMaxSecounds(int maxSecounds) {
+ this.maxSecounds = maxSecounds;
+ }
+
+ /**
+ * @return the maxSecounds
+ */
+ public int getMaxSecounds() {
+ return maxSecounds;
+ }
+
+ /**
+ * @return the pollSecounds
+ */
+ public int getPollSecounds() {
+ return pollSecounds;
+ }
+
+ /**
+ * @param pollSecounds
+ * the pollSecounds to set
+ */
+ public void setPollSecounds(int pollSecounds) {
+ this.pollSecounds = pollSecounds;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ long maxWaitTime = System.currentTimeMillis() + getMaxMinutes() * 60 * 1000 + getMaxSecounds() * 1000;
+ waitForFile(maxWaitTime, getPollSecounds(), -1);
+ }
+
+ private void waitForFile(long maxWaitTime, long pollSecounds, long fileLengh) throws BuildException {
+ log("wait for '" + getFile() + "'.");
+ if (System.currentTimeMillis() > maxWaitTime) {
+ throw new BuildException("wait for file '" + getFile() + "' timed out after '" + getMaxMinutes() + "' minutes and '" + getMaxSecounds() + "' secounds.");
+ }
+ if (getFile().exists() && file.isFile() && file.canRead()) {
+ if(getFile().length() == fileLengh){
+ log("file '" + getFile() + "' found .");
+ return;
+ }else{
+ fileLengh = getFile().length();
+ try {
+ Thread.sleep(getPollSecounds() * 1000);
+ waitForFile(maxWaitTime, Math.max(pollSecounds, 5), fileLengh);
+ }
+ catch (InterruptedException e) {
+ throw new BuildException("wait for file interrupted. ", e);
+ }
+ }
+ }
+ else {
+ try {
+ Thread.sleep(getPollSecounds() * 1000);
+ waitForFile(maxWaitTime, pollSecounds, fileLengh);
+ }
+ catch (InterruptedException e) {
+ throw new BuildException("wait for file interrupted. ", e);
+ }
+ }
+
+ }
+
+ private void validate() throws BuildException {
+ if (getFile() == null) {
+ throw new BuildException("no file to wait for specified");
+ }
+ }
+
+ public static void main(String[] args) {
+ WaitForFile waitForFile = new WaitForFile();
+ waitForFile.setFile(new File("D:/Temp/max24h/eclipseBuild/sign/out/sign.zip"));
+ waitForFile.setPollSecounds(2);
+ waitForFile.execute();
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/CreateArchive.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/CreateArchive.java
new file mode 100644
index 0000000..517b644
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/CreateArchive.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URI;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+
+/**
+ * <h4>CreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (21.01.2011)
+ */
+public class CreateArchive extends Task {
+
+ private File inputDir;
+ private File outputDir;
+
+ private String suffix = "_unpack";
+
+ /**
+ * @param inputDir
+ * the inputDir to set
+ */
+ public void setInputDir(File inputDir) {
+ this.inputDir = inputDir;
+ }
+
+ /**
+ * @return the inputDir
+ */
+ public File getInputDir() {
+ return inputDir;
+ }
+
+ /**
+ * @param outputDir
+ * the outputDir to set
+ */
+ public void setOutputDir(File outputDir) {
+ this.outputDir = outputDir;
+ }
+
+ /**
+ * @return the outputDir
+ */
+ public File getOutputDir() {
+ return outputDir;
+ }
+
+ /**
+ * @return the suffix
+ */
+ public String getSuffix() {
+ return suffix;
+ }
+
+ /**
+ * @param suffix
+ * the suffix to set
+ */
+ public void setSuffix(String suffix) {
+ this.suffix = suffix;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ if (getInputDir() == null) {
+ throw new BuildException("the directory is null. Please set the property 'dir'.");
+ }
+ if (!getInputDir().exists()) {
+ throw new BuildException("the directory '" + getInputDir() + "' does not exist.");
+ }
+ if (!getInputDir().isDirectory()) {
+ throw new BuildException("'" + getInputDir() + "' must be a directory.");
+ }
+ if (!getInputDir().canWrite()) {
+ throw new BuildException("'" + getInputDir() + "' must be accessable to write.");
+ }
+ if (getOutputDir() == null) {
+ setOutputDir(getInputDir());
+ }
+ if (!getOutputDir().exists()) {
+ getOutputDir().mkdirs();
+ }
+ boolean outputEqualsInput = getInputDir().equals(getOutputDir());
+ for (File f : getInputDir().listFiles()) {
+ try {
+ if (f.isFile()) {
+ FileUtility.copyToDir(f, getOutputDir());
+ }
+ else if (f.isDirectory()) {
+ File jarFile = new File(getOutputDir().getAbsolutePath() + File.separator + f.getName() + getSuffix() + ".jar");
+ if (archive(f, jarFile)) {
+ if (outputEqualsInput) {
+ FileUtility.deleteFile(f);
+ }
+ }
+ }
+ }
+ catch (IOException e) {
+ throw new BuildException("could not create jar of '" + f.getAbsolutePath() + "'.", e);
+ }
+ }
+ }
+
+ private boolean archive(File folderToArchive, File jarFile) throws IOException {
+ JarOutputStream target = null;
+ try {
+ FileOutputStream dest = new FileOutputStream(jarFile);
+ target = new JarOutputStream(new BufferedOutputStream(dest));
+ add(folderToArchive, target, folderToArchive.getAbsoluteFile().toURI());
+ return true;
+ }
+ finally {
+ if (target != null) {
+ try {
+ target.finish();
+ target.close();
+ }
+ catch (IOException e) {
+ // void
+ }
+ }
+ }
+ }
+
+ private void add(File source, JarOutputStream target, URI relUri) throws IOException {
+ BufferedInputStream in = null;
+ try {
+ if (source.isDirectory()) {
+ String name = relUri.relativize(source.toURI()).toString().replace("\\", "/");
+ if (!name.isEmpty()) {
+ if (!name.endsWith("/")) name += "/";
+ JarEntry entry = new JarEntry(relUri.relativize(source.toURI()).toString());
+ entry.setTime(source.lastModified());
+ target.putNextEntry(entry);
+ target.closeEntry();
+ }
+ for (File nestedFile : source.listFiles())
+ add(nestedFile, target, relUri);
+ return;
+ }
+
+ JarEntry entry = new JarEntry(relUri.relativize(source.toURI()).toString().replace("\\", "/"));
+ entry.setTime(source.lastModified());
+ target.putNextEntry(entry);
+ in = new BufferedInputStream(new FileInputStream(source));
+
+ byte[] buffer = new byte[20480];
+ while (true) {
+ int count = in.read(buffer);
+ if (count == -1) break;
+ target.write(buffer, 0, count);
+ }
+ target.closeEntry();
+ }
+ finally {
+ if (in != null) in.close();
+ }
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/CreateDropInZip.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/CreateDropInZip.java
new file mode 100644
index 0000000..079d060
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/CreateDropInZip.java
@@ -0,0 +1,282 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.FileSet;
+
+/**
+ * <h4>CreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (21.01.2011)
+ */
+public class CreateDropInZip extends Task {
+
+ private final ArrayList<FileSet> filesets;
+ private File outputDir;
+ private String zipName;
+ private String milestone;
+ private String versionMajor;
+ private String versionMinor;
+ private String versionMicro;
+ private String version;
+ private String timestamp;
+ private boolean incubation;
+
+ public CreateDropInZip() {
+ filesets = new ArrayList<FileSet>();
+ }
+
+ public void setOutputDir(File outputDir) {
+ this.outputDir = outputDir;
+ }
+
+ /**
+ * @return the outputDir
+ */
+ public File getOutputDir() {
+ return outputDir;
+ }
+
+ public void addFileset(FileSet set) {
+ filesets.add(set);
+ }
+
+ /**
+ * @return the zipName
+ */
+ public String getZipName() {
+ return zipName;
+ }
+
+ /**
+ * @param zipName
+ * the zipName to set
+ */
+ public void setZipName(String zipName) {
+ this.zipName = zipName;
+ }
+
+ /**
+ * @return the milestone
+ */
+ public String getMilestone() {
+ return milestone;
+ }
+
+ /**
+ * @return the version
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ * @param version
+ * the version to set
+ */
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ /**
+ * @param milestone
+ * the milestone to set
+ */
+ public void setMilestone(String milestone) {
+ this.milestone = milestone;
+ }
+
+ /**
+ * @return the versionMajor
+ */
+ public String getVersionMajor() {
+ return versionMajor;
+ }
+
+ /**
+ * @param versionMajor
+ * the versionMajor to set
+ */
+ public void setVersionMajor(String versionMajor) {
+ this.versionMajor = versionMajor;
+ }
+
+ /**
+ * @return the versionMinor
+ */
+ public String getVersionMinor() {
+ return versionMinor;
+ }
+
+ /**
+ * @param versionMinor
+ * the versionMinor to set
+ */
+ public void setVersionMinor(String versionMinor) {
+ this.versionMinor = versionMinor;
+ }
+
+ /**
+ * @return the versionMicro
+ */
+ public String getVersionMicro() {
+ return versionMicro;
+ }
+
+ /**
+ * @param versionMicro
+ * the versionMicro to set
+ */
+ public void setVersionMicro(String versionMicro) {
+ this.versionMicro = versionMicro;
+ }
+
+ /**
+ * @return the timestamp
+ */
+ public String getTimestamp() {
+ return timestamp;
+ }
+
+ /**
+ * @param timestamp
+ * the timestamp to set
+ */
+ public void setTimestamp(String timestamp) {
+ this.timestamp = timestamp;
+ }
+
+ /**
+ * @param incubation
+ * the incubation to set
+ */
+ public void setIncubation(boolean incubation) {
+ this.incubation = incubation;
+ }
+
+ /**
+ * @return the incubation
+ */
+ public boolean isIncubation() {
+ return incubation;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ ZipOutputStream zipOut = null;
+ try {
+ // pattern name_
+ String fileName = getZipName();
+ if (isIncubation()) {
+ fileName += "-Incubation";
+ }
+ if (getVersion() != null) {
+ fileName += "-" + getVersion();
+ }
+ else {
+ if (getVersionMajor() != null) {
+ fileName += "-" + getVersionMajor();
+ if (getVersionMinor() != null) {
+ fileName += "." + getVersionMinor();
+ if (getVersionMicro() != null) {
+ fileName += "." + getVersionMicro();
+ }
+ }
+ }
+ }
+ if (getMilestone() != null) {
+ fileName += "" + getMilestone();
+ }
+ if (getTimestamp() != null) {
+ fileName += "-" + getTimestamp();
+ }
+ fileName += ".zip";
+ File zipFile = new File(getOutputDir() + File.separator + fileName);
+ if (!zipFile.exists()) {
+ zipFile.getParentFile().mkdirs();
+ }
+ zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
+ HashMap<String, File> files = new HashMap<String, File>();
+ for (FileSet fs : filesets) {
+ DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+ File rootDir = fs.getDir(getProject());
+ for (String name : ds.getIncludedFiles()) {
+ files.put(name, new File(rootDir.getAbsoluteFile(), name));
+ }
+ }
+ for (Entry<String, File> e : files.entrySet()) {
+ addFile(zipOut, e.getValue(), e.getKey());
+ }
+ }
+ catch (IOException e) {
+ throw new BuildException("could not create zip ''.", e);
+ }
+ finally {
+ if (zipOut != null) {
+ try {
+ zipOut.finish();
+ zipOut.close();
+ }
+ catch (IOException e) {
+ // void
+ }
+ }
+ }
+ }
+
+ private void addFile(ZipOutputStream zipStream, File fileToAdd, String relativeFileName) throws IOException {
+ BufferedInputStream in = null;
+ try {
+ ZipEntry entry = new ZipEntry(relativeFileName);
+ entry.setTime(fileToAdd.lastModified());
+ zipStream.putNextEntry(entry);
+ in = new BufferedInputStream(new FileInputStream(fileToAdd));
+ byte[] buffer = new byte[20480];
+ while (true) {
+ int count = in.read(buffer);
+ if (count == -1) break;
+ zipStream.write(buffer, 0, count);
+ }
+ zipStream.closeEntry();
+ }
+ finally {
+ if (in != null) {
+ in.close();
+ }
+ }
+ }
+
+ private void validate() throws BuildException {
+ if (filesets.size() == 0) {
+ throw new BuildException("need to specify a fileset");
+ }
+ if (getZipName() == null) {
+ throw new BuildException("zipName can not be null");
+ }
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/ExtractArchive.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/ExtractArchive.java
new file mode 100644
index 0000000..5cf838f
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/ExtractArchive.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+
+/**
+ * <h4>CreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (21.01.2011)
+ */
+public class ExtractArchive extends Task {
+
+ private File inputDir;
+ private File outputDir;
+
+ private String suffix = "_unpack";
+
+ /**
+ * @param inputDir
+ * the inputDir to set
+ */
+ public void setInputDir(File inputDir) {
+ this.inputDir = inputDir;
+ }
+
+ /**
+ * @return the inputDir
+ */
+ public File getInputDir() {
+ return inputDir;
+ }
+
+ /**
+ * @param outputDir
+ * the outputDir to set
+ */
+ public void setOutputDir(File outputDir) {
+ this.outputDir = outputDir;
+ }
+
+ /**
+ * @return the outputDir
+ */
+ public File getOutputDir() {
+ return outputDir;
+ }
+
+ /**
+ * @return the suffix
+ */
+ public String getSuffix() {
+ return suffix;
+ }
+
+ /**
+ * @param suffix
+ * the suffix to set
+ */
+ public void setSuffix(String suffix) {
+ this.suffix = suffix;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ if (getInputDir() == null) {
+ throw new BuildException("the directory is null. Please set the property 'dir'.");
+ }
+ if (!getInputDir().exists()) {
+ throw new BuildException("the directory '" + getInputDir() + "' does not exist.");
+ }
+ if (!getInputDir().isDirectory()) {
+ throw new BuildException("'" + getInputDir() + "' must be a directory.");
+ }
+ if (!getInputDir().canWrite()) {
+ throw new BuildException("'" + getInputDir() + "' must be accessable to write.");
+ }
+ if (getOutputDir() == null) {
+ setOutputDir(getInputDir());
+ }
+ if (!getOutputDir().exists()) {
+ getOutputDir().mkdirs();
+ }
+ boolean outputEqualsInput = getInputDir().equals(getOutputDir());
+ Pattern pattern = Pattern.compile("^(.*)" + getSuffix() + ".jar$");
+ for (File f : getInputDir().listFiles()) {
+ try {
+ if (f.isDirectory()) {
+ FileUtility.copyToDir(f, getOutputDir());
+ }
+ else if (f.isFile()) {
+ Matcher m = pattern.matcher(f.getName());
+ if (m.matches()) {
+ if (unpack(f, getOutputDir().getAbsolutePath() + File.separator + m.group(1))) {
+ if (outputEqualsInput) {
+ FileUtility.deleteFile(f);
+ }
+ }
+ }
+ else {
+ FileUtility.copyToDir(f, getOutputDir());
+ }
+ }
+ }
+ catch (IOException e) {
+ throw new BuildException("could not unpack jar file '" + f.getAbsolutePath() + "'.", e);
+ }
+ }
+
+ }
+
+ private boolean unpack(File jarFile, String destName) throws IOException {
+ File dest = new File(destName);
+ if (!dest.exists()) {
+ dest.mkdirs();
+ }
+ ZipInputStream jin = null;
+ try {
+ jin = new ZipInputStream(new FileInputStream(jarFile));
+ byte[] buffer = new byte[1024];
+
+ ZipEntry entry = jin.getNextEntry();
+ while (entry != null) {
+ String fileName = entry.getName();
+ if (fileName.charAt(fileName.length() - 1) == '/') {
+ fileName = fileName.substring(0, fileName.length() - 1);
+ }
+ if (fileName.charAt(0) == '/') {
+ fileName = fileName.substring(1);
+ }
+ if (File.separatorChar != '/') {
+ fileName = fileName.replace('/', File.separatorChar);
+ }
+ File file = new File(dest, fileName);
+ if (entry.isDirectory()) {
+ // make sure the directory exists
+ file.mkdirs();
+ jin.closeEntry();
+ }
+ else {
+ // make sure the directory exists
+ File parent = file.getParentFile();
+ if (parent != null && !parent.exists()) {
+ parent.mkdirs();
+ }
+
+ // dump the file
+ OutputStream out = new FileOutputStream(file);
+ int len = 0;
+ while ((len = jin.read(buffer, 0, buffer.length)) != -1) {
+ out.write(buffer, 0, len);
+ }
+ out.flush();
+ out.close();
+ jin.closeEntry();
+ file.setLastModified(entry.getTime());
+ }
+ entry = jin.getNextEntry();
+
+ }
+ return true;
+ }
+
+ finally {
+ try {
+ jin.close();
+ }
+ catch (IOException e) {
+ // void
+ }
+ }
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/RemoveOldZipFiles.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/RemoveOldZipFiles.java
new file mode 100644
index 0000000..59b83be
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/RemoveOldZipFiles.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.File;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.eclipse.scout.releng.ant.util.DropInZip;
+import org.eclipse.scout.releng.ant.util.DropInZipFilter;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+
+/**
+ * <h4>RemoveOldZipFiles</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (29.01.2011)
+ */
+public class RemoveOldZipFiles extends Task {
+
+ private File dir;
+ private int keep = 3;
+
+ /**
+ * @return the dir
+ */
+ public File getDir() {
+ return dir;
+ }
+
+ /**
+ * @param dir
+ * the dir to set
+ */
+ public void setDir(File dir) {
+ this.dir = dir;
+ }
+
+ /**
+ * @return the keep
+ */
+ public int getKeep() {
+ return keep;
+ }
+
+ /**
+ * @param keep
+ * the keep to set
+ */
+ public void setKeep(int keep) {
+ this.keep = keep;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ DropInZipFilter filter = new DropInZipFilter();
+ getDir().list(filter);
+ if (filter.size() > keep) {
+ DropInZip[] toRemove = filter.getOrderedZipFiles();
+ for (int i = keep; i < toRemove.length; i++) {
+ if (toRemove[i].getZipFile().exists()) {
+ FileUtility.deleteFile(toRemove[i].getZipFile());
+ }
+ }
+ }
+ }
+
+ private void validate() throws BuildException {
+ if (getDir() == null) {
+ throw new BuildException("parameter dir missing.");
+ }
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/RemoveUnpackSuffix.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/RemoveUnpackSuffix.java
new file mode 100644
index 0000000..bc68980
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/archive/RemoveUnpackSuffix.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.FileSet;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+
+/**
+ * <h4>CreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (21.01.2011)
+ */
+public class RemoveUnpackSuffix extends Task {
+
+ private final ArrayList<FileSet> filesets;
+ private File dir;
+ private String suffix = "_unpack";
+
+ public RemoveUnpackSuffix() {
+ filesets = new ArrayList<FileSet>();
+ }
+
+ /**
+ * @return the dir
+ */
+ public File getDir() {
+ return dir;
+ }
+
+ /**
+ * @param dir
+ * the dir to set
+ */
+ public void setDir(File dir) {
+ this.dir = dir;
+ }
+
+ public void addFileset(FileSet fileset) {
+ this.filesets.add(fileset);
+ }
+
+ /**
+ * @return the suffix
+ */
+ public String getSuffix() {
+ return suffix;
+ }
+
+ /**
+ * @param suffix
+ * the suffix to set
+ */
+ public void setSuffix(String suffix) {
+ this.suffix = suffix;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ setup();
+ Pattern pattern = Pattern.compile("^(.*)" + getSuffix() + ".jar$");
+ for (FileSet fs : filesets) {
+ DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+ File inputDir = fs.getDir(getProject());
+ for (String fileName : ds.getIncludedFiles()) {
+ File inputFile = new File(inputDir, fileName);
+ Matcher m = pattern.matcher(inputFile.getAbsolutePath());
+ if (m.matches()) {
+ log("remove unpack suffix from file '"+inputFile.getName()+"'", Project.MSG_INFO);
+ try {
+ FileUtility.copy(inputFile, new File(m.group(1) + ".jar"));
+ inputFile.delete();
+ }
+ catch (IOException e) {
+ throw new BuildException("could not rename file '" + inputFile + "'.", e);
+ }
+ }
+ }
+ }
+ }
+
+
+ private void validate() throws BuildException{
+ if(filesets.isEmpty()){
+ if(getDir() == null){
+ throw new BuildException("dir or fileset must be set.");
+ }else if(!getDir().exists()){
+ throw new BuildException("dir '"+getDir()+"' does not exist.");
+ }else if(!getDir().canWrite()){
+ throw new BuildException("dir '"+getDir()+"' is not accessable.");
+ }
+ }
+ }
+
+ protected void setup(){
+ if(getDir() != null){
+ FileSet set = new FileSet();
+ set.setDir(getDir());
+ set.createInclude().setName("**/*.jar");
+ addFileset(set);
+ }
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/category/CategoryTask.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/category/CategoryTask.java
new file mode 100644
index 0000000..2d5d690
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/category/CategoryTask.java
@@ -0,0 +1,169 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.category;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * <h4>CategoryTask</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+public class CategoryTask extends Task {
+
+ private File categoryFile;
+ private File featuresFolder;
+
+ /**
+ * @param categoryFile
+ * the categoryFile to set
+ */
+ public void setCategoryFile(File categoryFile) {
+ this.categoryFile = categoryFile;
+ }
+
+ /**
+ * @return the categoryFile
+ */
+ public File getCategoryFile() {
+ return categoryFile;
+ }
+
+ /**
+ * @param featuresFolder
+ * the featuresFolder to set
+ */
+ public void setFeaturesFolder(File featuresFolder) {
+ this.featuresFolder = featuresFolder;
+ }
+
+ /**
+ * @return the featuresFolder
+ */
+ public File getFeaturesFolder() {
+ return featuresFolder;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ try {
+ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+ Document document = documentBuilder.newDocument();
+ Element rootElement = document.createElement("site");
+ document.appendChild(rootElement);
+ for(File feature : getFeaturesFolder().listFiles()){
+ if(feature.getName().endsWith(".jar")){
+ addFeature(document, rootElement, feature);
+ }
+ }
+ Element categoryDef = document.createElement("category-def");
+ categoryDef.setAttribute("name", "Scout");
+ categoryDef.setAttribute("label", "Scout Application Development");
+ rootElement.appendChild(categoryDef);
+
+ // write document
+ writeXmlFile(document);
+ }
+ catch (Exception e) {
+ throw new BuildException("could not create category file.", e);
+ }
+ }
+
+ private void validate() throws BuildException {
+ if(getCategoryFile() == null){
+ throw new BuildException("categoryFile must be set.");
+ }
+ if(getFeaturesFolder() == null){
+ throw new BuildException("featureFolder must be set");
+ }
+ }
+
+ private void addFeature(Document doc, Element site, File feature) throws Exception{
+ Element featureElement = doc.createElement("feature");
+ featureElement.setAttribute("url", "features/"+feature.getName());
+ fillFeatureIdVersion(feature, featureElement);
+ site.appendChild(featureElement);
+ // category
+
+ Element categoryElement = doc.createElement("category");
+ categoryElement.setAttribute("name", "Scout");
+ featureElement.appendChild(categoryElement);
+ }
+
+
+ private void fillFeatureIdVersion(File feature, Element featureElement) throws Exception{
+ JarFile jar = null;
+ try{
+ jar = new JarFile(feature);
+ JarEntry featureXml = jar.getJarEntry("feature.xml");
+ InputStream is = jar.getInputStream(featureXml);
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setExpandEntityReferences(false);
+ Document doc = factory.newDocumentBuilder().parse(is);
+ NodeList nodeList = doc.getElementsByTagName("feature");
+ if(nodeList.getLength() ==1){
+ Element originalFeatureElement = (Element)nodeList.item(0);
+ featureElement.setAttribute("id", originalFeatureElement.getAttribute("id"));
+ featureElement.setAttribute("version", originalFeatureElement.getAttribute("version"));
+ }
+ }finally{
+ if(jar != null){
+ jar.close();
+ }
+ }
+ }
+
+
+
+
+ private void writeXmlFile(Document document) throws Exception {
+ OutputStream fos = null;
+ try {
+ if(!getCategoryFile().exists()){
+ getCategoryFile().getParentFile().mkdirs();
+ }
+ fos = new FileOutputStream(getCategoryFile());
+// fos = System.out;
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+ DOMSource source = new DOMSource(document);
+ StreamResult result = new StreamResult(fos);
+ transformer.transform(source, result);
+ }
+ finally {
+ fos.close();
+ }
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/incubation/MarkIncubation.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/incubation/MarkIncubation.java
new file mode 100644
index 0000000..fc65834
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/incubation/MarkIncubation.java
@@ -0,0 +1,321 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.incubation;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.jar.JarOutputStream;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.zip.ZipFile;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.FileSet;
+import org.omg.CORBA.StringHolder;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * <h4>MarkIncubation</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (28.01.2011)
+ */
+public class MarkIncubation extends Task {
+ public static final String INCUBATION_APPENDIX = " (Incubation)";
+ private final ArrayList<FileSet> filesets;
+
+ public MarkIncubation() {
+ this.filesets = new ArrayList<FileSet>();
+ }
+
+ public void addFileset(FileSet set) {
+ filesets.add(set);
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ for (FileSet fs : filesets) {
+ DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+ File inputDir = fs.getDir(getProject());
+ for (String fileName : ds.getIncludedFiles()) {
+ File inputFile = new File(inputDir, fileName);
+ if (inputFile.isFile() && fileName.endsWith("jar")) {
+ try {
+ processJarFile(inputFile);
+ }
+ catch (Exception e) {
+ throw new BuildException("could not repack file '" + inputFile + "'.", e);
+ }
+ }
+ }
+ }
+
+ }
+
+ protected void processJarFile(File file) throws Exception {
+ log("mark file '"+file.getName()+"' as incubation.");
+ ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
+ JarOutputStream out = new JarOutputStream(byteStream);
+ JarFile jarFile = null;
+ HashMap<String, ByteArrayOutputStream> newEntries = new HashMap<String, ByteArrayOutputStream>();
+ try {
+ jarFile = new JarFile(file);
+ JarEntry featureXml = jarFile.getJarEntry("feature.xml");
+ if (featureXml != null) {
+ StringHolder labelKeyHolder = new StringHolder();
+ ByteArrayOutputStream featureOutputStream = processFeatureXml(jarFile.getInputStream(featureXml), labelKeyHolder);
+ if (labelKeyHolder.value != null) {
+ JarEntry propertyEntry = jarFile.getJarEntry("feature.properties");
+ if (propertyEntry != null) {
+ newEntries.put(propertyEntry.getName(), processFeatureProperties(jarFile.getInputStream(propertyEntry), labelKeyHolder.value));
+ }
+ }
+ else {
+ newEntries.put(featureXml.getName(), featureOutputStream);
+ }
+ }
+ JarEntry manifestEntry = jarFile.getJarEntry("META-INF/MANIFEST.MF");
+ if (manifestEntry != null) {
+ StringHolder labelKeyHolder = new StringHolder();
+ ByteArrayOutputStream manifestOutputStream = processManifest(jarFile.getInputStream(manifestEntry), labelKeyHolder);
+ if (labelKeyHolder.value != null) {
+ JarEntry propertyEntry = jarFile.getJarEntry("plugin.properties");
+ if (propertyEntry != null) {
+ newEntries.put(propertyEntry.getName(), processPluginProperties(jarFile.getInputStream(propertyEntry), labelKeyHolder.value));
+ }
+ }
+ else {
+ newEntries.put(manifestEntry.getName(), manifestOutputStream);
+ }
+ }
+ // rewrite jar
+ if (!newEntries.isEmpty()) {
+ Enumeration<JarEntry> entries = jarFile.entries();
+ while (entries.hasMoreElements()) {
+ JarEntry entry = entries.nextElement();
+ JarEntry newEntry = null;
+ ByteArrayOutputStream entryStream = null;
+ if (newEntries.containsKey(entry.getName())) {
+ entryStream = newEntries.remove(entry.getName());
+ newEntry = new JarEntry(entry.getName());
+ newEntry.setTime(entry.getTime());
+ }
+ else {
+ entryStream = processAnyFile(jarFile.getInputStream(entry));
+ newEntry = new JarEntry(entry);
+ }
+ out.putNextEntry(newEntry);
+ out.write(entryStream.toByteArray());
+ entryStream.close();
+ out.closeEntry();
+ }
+ out.finish();
+ out.flush();
+ }
+ }
+ finally {
+ closeQuiet(out);
+ closeQuiet(jarFile);
+ }
+ FileOutputStream outputStream = null;
+ try {
+ outputStream = new FileOutputStream(file);
+ outputStream.write(byteStream.toByteArray());
+ }
+ finally {
+ if (outputStream != null) {
+ outputStream.flush();
+ closeQuiet(outputStream);
+ }
+ }
+ }
+
+ private ByteArrayOutputStream processFeatureXml(InputStream fileStream, StringHolder labelKeyHolder) throws Exception {
+ try {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setExpandEntityReferences(false);
+ Document doc = factory.newDocumentBuilder().parse(fileStream);
+ NodeList nodeList = doc.getElementsByTagName("feature");
+ if (nodeList.getLength() == 1) {
+ Element originalFeatureElement = (Element) nodeList.item(0);
+ String label = originalFeatureElement.getAttribute("label");
+ if (label.startsWith("%")) {
+ labelKeyHolder.value = label.substring(1);
+ }
+ else {
+ originalFeatureElement.setAttribute("label", label + INCUBATION_APPENDIX);
+ }
+ }
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+ DOMSource source = new DOMSource(doc);
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ StreamResult result = new StreamResult(outputStream);
+ transformer.transform(source, result);
+ return outputStream;
+ }
+ finally {
+ closeQuiet(fileStream);
+ }
+ }
+
+ private ByteArrayOutputStream processFeatureProperties(InputStream fileStream, String labelKey) throws IOException {
+ BufferedWriter writer = null;
+ BufferedReader reader = null;
+ try {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ writer = new BufferedWriter(new OutputStreamWriter(out));
+ reader = new BufferedReader(new InputStreamReader(fileStream));
+ Pattern pattern = Pattern.compile("^(" + labelKey + "\\=\\s*)(.*)$");
+ String line = reader.readLine();
+ while (line != null) {
+ Matcher m = pattern.matcher(line);
+ if (m.matches()) {
+ if (!m.group(2).startsWith("%")) {
+ line = m.group(1) + m.group(2) + INCUBATION_APPENDIX;
+ }
+ }
+ writer.write(line);
+ writer.newLine();
+ line = reader.readLine();
+ }
+ writer.flush();
+ return out;
+ }
+ finally {
+ closeQuiet(reader);
+ closeQuiet(writer);
+ }
+ }
+
+ private ByteArrayOutputStream processManifest(InputStream manifest, StringHolder nameKey) throws IOException {
+ BufferedWriter writer = null;
+ BufferedReader reader = null;
+ try {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ writer = new BufferedWriter(new OutputStreamWriter(out));
+ reader = new BufferedReader(new InputStreamReader(manifest));
+ Pattern pattern = Pattern.compile("^(Bundle-Name\\:\\s*)(.*)$");
+ String line = reader.readLine();
+ while (line != null) {
+ Matcher m = pattern.matcher(line);
+ if (m.matches()) {
+ if (m.group(2).startsWith("%")) {
+ nameKey.value = m.group(2).substring(1);
+ }
+ else {
+ line = m.group(1) + m.group(2) + INCUBATION_APPENDIX;
+ }
+ }
+ writer.write(line);
+ writer.newLine();
+ line = reader.readLine();
+ }
+ writer.flush();
+ return out;
+ }
+ finally {
+ closeQuiet(reader);
+ closeQuiet(writer);
+ }
+ }
+
+ private ByteArrayOutputStream processPluginProperties(InputStream fileStream, String nameKey) throws IOException {
+ BufferedWriter writer = null;
+ BufferedReader reader = null;
+ try {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ writer = new BufferedWriter(new OutputStreamWriter(out));
+ reader = new BufferedReader(new InputStreamReader(fileStream));
+ Pattern pattern = Pattern.compile("^(" + nameKey + "\\=\\s*)(.*)$");
+ String line = reader.readLine();
+ while (line != null) {
+ Matcher m = pattern.matcher(line);
+ if (m.matches()) {
+ if (!m.group(2).startsWith("%")) {
+ line = m.group(1) + m.group(2) + INCUBATION_APPENDIX;
+ }
+ }
+ writer.write(line);
+ writer.newLine();
+ line = reader.readLine();
+ }
+ writer.flush();
+ return out;
+ }
+ finally {
+ closeQuiet(reader);
+ closeQuiet(writer);
+ }
+ }
+
+ private ByteArrayOutputStream processAnyFile(InputStream inputStream) throws IOException {
+ try {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ byte[] buffer = new byte[1024];
+ int read;
+ while ((read = inputStream.read(buffer)) != -1) {
+ out.write(buffer, 0, read);
+ }
+ return out;
+ }
+ finally {
+ closeQuiet(inputStream);
+ }
+ }
+
+ private void validate() throws BuildException {
+ if (filesets.isEmpty()) {
+ throw new BuildException("fileset can not be null.");
+ }
+ }
+
+ private static void closeQuiet(Closeable c) {
+ if(c == null)return;
+ try {
+ c.close();
+ } catch(Exception e) {}
+ }
+
+ private static void closeQuiet(ZipFile c) {
+ if(c == null)return;
+ try {
+ c.close();
+ } catch(Exception e) {}
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/BufferStream.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/BufferStream.java
new file mode 100644
index 0000000..f6a1640
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/BufferStream.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.pack200;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/** <h4> BufferStream </h4>
+ *
+ * @author aho
+ * @since 1.1.0 (26.01.2011)
+ *
+ */
+public class BufferStream extends OutputStream {
+
+ static final int PAGE_SIZE = 4096;
+
+ Page head;
+ Page cur;
+ int curPos;
+
+ /**
+ * Creates a new instance of BufferStream
+ */
+ public BufferStream() {
+ this.head = new Page();
+ this.cur = this.head;
+ }
+
+ public void write(int value) {
+ if(curPos == PAGE_SIZE) {
+ newPage();
+ }
+ cur.buffer[curPos++] = (byte)value;
+ }
+
+ public void write(byte[] b, int off, int len) {
+ while(len > 0) {
+ int copyCnt = PAGE_SIZE - curPos;
+ if(copyCnt == 0) {
+ newPage();
+ copyCnt = PAGE_SIZE;
+ }
+ if(copyCnt > len) {
+ copyCnt = len;
+ }
+ System.arraycopy(b, off, cur.buffer, curPos, copyCnt);
+ curPos += copyCnt;
+ off += copyCnt;
+ len -= copyCnt;
+ }
+ }
+
+ public InputStream getInputStream() {
+ return new BufferIS(head, curPos);
+ }
+
+ private void newPage() {
+ cur = cur.next = new Page();
+ curPos = 0;
+ }
+
+ static class Page {
+ final byte[] buffer;
+ Page next;
+
+ Page() {
+ this.buffer = new byte[PAGE_SIZE];
+ }
+ }
+
+ static class BufferIS extends InputStream {
+ Page cur;
+ int lastPageSize;
+ int offset;
+
+ BufferIS(Page head, int lastPageSize) {
+ this.cur = head;
+ this.lastPageSize = lastPageSize;
+ }
+
+ public int read() throws IOException {
+ if(!nextPage()) {
+ return -1;
+ }
+ return cur.buffer[offset++] & 255;
+ }
+
+ public int available() throws IOException {
+ if(!nextPage()) {
+ return 0;
+ }
+ if(cur.next == null) {
+ return lastPageSize - offset;
+ }
+ return PAGE_SIZE - offset;
+ }
+
+ public int read(byte[] b, int off, int len) throws IOException {
+ if(len <= 0) {
+ return 0;
+ }
+ int avail = available();
+ if(len > avail) {
+ len = avail;
+ }
+ if(len == 0) {
+ return -1;
+ }
+ System.arraycopy(cur.buffer, offset, b, off, len);
+ offset += len;
+ return len;
+ }
+
+ public long skip(long n) throws IOException {
+ int skip = (int)Math.min(n, available());
+ if(skip > 0) {
+ offset += skip;
+ return skip;
+ }
+ return 0;
+ }
+
+ private boolean nextPage() {
+ if(cur != null) {
+ if(offset == PAGE_SIZE || (offset == lastPageSize && cur.next == null)) {
+ offset = 0;
+ cur = cur.next;
+ }
+ }
+ return cur != null;
+ }
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/BufferedStream.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/BufferedStream.java
new file mode 100644
index 0000000..6c67cfe
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/BufferedStream.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.pack200;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/** <h4> BufferedStream </h4>
+ *
+ * @author aho
+ * @since 1.1.0 (26.01.2011)
+ *
+ */
+public class BufferedStream extends OutputStream {
+
+ @Override
+ public void write(int b) throws IOException {
+ // TODO Auto-generated method stub
+
+ }
+ @Override
+ public void write(byte[] b, int off, int len) {
+
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/Pack.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/Pack.java
new file mode 100644
index 0000000..b7b2143
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/Pack.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.pack200;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.jar.JarFile;
+import java.util.jar.Pack200.Packer;
+import java.util.zip.GZIPOutputStream;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.FileSet;
+
+/**
+ * <h4>Repack</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (26.01.2011)
+ */
+public class Pack extends Task {
+
+ private File outputDir;
+ private final ArrayList<FileSet> filesets;
+ private boolean gzip = true;
+
+ public Pack() {
+ this.filesets = new ArrayList<FileSet>();
+ }
+
+ /**
+ * @param outputDir
+ * the outputDir to set
+ */
+ public void setOutputDir(File outputDir) {
+ this.outputDir = outputDir;
+ }
+
+ /**
+ * @return the outputDir
+ */
+ public File getOutputDir() {
+ return outputDir;
+ }
+
+ /**
+ * @param gzip
+ * the gzip to set
+ */
+ public void setGzip(boolean gzip) {
+ this.gzip = gzip;
+ }
+
+ /**
+ * @return the gzip
+ */
+ public boolean isGzip() {
+ return gzip;
+ }
+
+ public void addFileset(FileSet set) {
+ filesets.add(set);
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ for (FileSet fs : filesets) {
+ DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+ File inputDir = fs.getDir(getProject());
+ File outputDir = getOutputDir();
+ if (outputDir == null) {
+ outputDir = inputDir;
+ }
+ for (String fileName : ds.getIncludedFiles()) {
+ File inputFile = new File(inputDir, fileName);
+ try {
+ packFile(inputFile, outputDir.getAbsoluteFile()+File.separator+ fileName+".pack");
+ }
+ catch (IOException e) {
+ throw new BuildException("could not repack file '" + inputFile + "'.", e);
+ }
+ }
+ }
+ }
+
+ private void packFile(File inputFile, String outputFilename) throws IOException {
+ log("pack200: pack file '"+inputFile.getName()+"'", Project.MSG_INFO);
+ Packer packer = Pack200Utility.createPacker();
+ OutputStream out = null;
+ try {
+ if (isGzip()) {
+ outputFilename += ".gz";
+ }
+ File outputFile = new File(outputFilename);
+ if(!outputFile.exists()){
+ outputFile.getParentFile().mkdirs();
+ }
+ out = new FileOutputStream(outputFile);
+ if(isGzip()){
+ out = new GZIPOutputStream(out);
+ }
+ packer.pack(new JarFile(inputFile), out);
+ }
+ finally {
+ if (out != null) {
+ out.close();
+ }
+ }
+ }
+
+ private void validate() throws BuildException {
+ if (filesets.size() == 0) {
+ throw new BuildException("need to specify a fileset");
+ }
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/Pack200Utility.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/Pack200Utility.java
new file mode 100644
index 0000000..6a43543
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/Pack200Utility.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.pack200;
+
+import java.util.SortedMap;
+import java.util.jar.Pack200;
+import java.util.jar.Pack200.Packer;
+import java.util.jar.Pack200.Unpacker;
+
+/** <h4> Pack200Utility </h4>
+ *
+ * @author aho
+ * @since 1.1.0 (26.01.2011)
+ *
+ */
+public final class Pack200Utility {
+
+ public static final Packer createPacker(){
+ Pack200.Packer p = Pack200.newPacker();
+ SortedMap<String, String> props = p.properties();
+// props.put(Pack200.Packer.KEEP_FILE_ORDER, Pack200.Packer.TRUE);
+ props.put(Pack200.Packer.MODIFICATION_TIME, Pack200.Packer.KEEP);
+ props.put(Pack200.Packer.EFFORT, "0");
+// props.put(Pack200.Packer.CODE_ATTRIBUTE_PFX+"LocalVariableTable", Pack200.Packer.STRIP);
+ return p;
+ }
+
+ public static final Unpacker createUnpacker(){
+ Pack200.Unpacker p = Pack200.newUnpacker();
+ SortedMap<String, String> props = p.properties();
+// props.put(Pack200.Packer.KEEP_FILE_ORDER, Pack200.Packer.TRUE);
+ props.put(Pack200.Packer.MODIFICATION_TIME, Pack200.Packer.KEEP);
+ props.put(Pack200.Packer.EFFORT, "0");
+// props.put(Pack200.Packer.CODE_ATTRIBUTE_PFX+"LocalVariableTable", Pack200.Packer.STRIP);
+ return p;
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/Repack.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/Repack.java
new file mode 100644
index 0000000..43fcb0a
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/pack200/Repack.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.pack200;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.jar.JarFile;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Pack200.Packer;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.FileSet;
+
+/**
+ * <h4>Repack</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (26.01.2011)
+ */
+public class Repack extends Task {
+
+ private File outputDir;
+ private final ArrayList<FileSet> filesets;
+
+ public Repack() {
+ this.filesets = new ArrayList<FileSet>();
+ }
+
+ /**
+ * @param outputDir
+ * the outputDir to set
+ */
+ public void setOutputDir(File outputDir) {
+ this.outputDir = outputDir;
+ }
+
+ /**
+ * @return the outputDir
+ */
+ public File getOutputDir() {
+ return outputDir;
+ }
+
+ public void addFileset(FileSet set) {
+ filesets.add(set);
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ for (FileSet fs : filesets) {
+ DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+ File inputDir = fs.getDir(getProject());
+ File outputDir = getOutputDir();
+ if (outputDir == null) {
+ outputDir = inputDir;
+ }
+ for (String fileName : ds.getIncludedFiles()) {
+ File inputFile = new File(inputDir, fileName);
+ try {
+ repackFile(inputFile, new File(outputDir.getAbsoluteFile(), fileName));
+ }
+ catch (IOException e) {
+ throw new BuildException("could not repack file '" + inputFile + "'.", e);
+ }
+ }
+ }
+ }
+
+ private void repackFile(File inputFile, File outputFile) throws IOException {
+ log("pack200: repack file '"+inputFile.getName()+"'", Project.MSG_INFO);
+ Packer packer = Pack200Utility.createPacker();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ packer.pack(new JarFile(inputFile), out);
+ if (!outputFile.exists()) {
+ outputFile.getParentFile().mkdirs();
+ }
+ FileOutputStream fos = new FileOutputStream(outputFile);
+ try {
+ JarOutputStream jos = new JarOutputStream(fos);
+ try {
+ Pack200Utility.createUnpacker().unpack(new ByteArrayInputStream(out.toByteArray()), jos);
+ }
+ finally {
+ jos.close();
+ }
+ }
+ finally {
+ fos.close();
+ }
+
+ }
+
+ private void validate() throws BuildException {
+ if (filesets.size() == 0) {
+ throw new BuildException("need to specify a fileset");
+ }
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/undo/CreateUndoScript.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/undo/CreateUndoScript.java
new file mode 100644
index 0000000..b08b486
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/undo/CreateUndoScript.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.undo;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.DirSet;
+
+/**
+ * <h4>CreateUndoScript</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (28.01.2011)
+ */
+public class CreateUndoScript extends Task {
+
+ private final ArrayList<DirSet> filesets;
+ private File undoScript;
+
+ public CreateUndoScript() {
+ filesets = new ArrayList<DirSet>();
+ }
+
+ /**
+ * @param undoScript
+ * the undoScript to set
+ */
+ public void setUndoScript(File undoScript) {
+ this.undoScript = undoScript;
+ }
+
+ /**
+ * @return the undoScript
+ */
+ public File getUndoScript() {
+ return undoScript;
+ }
+
+ public void addDirset(DirSet set) {
+ filesets.add(set);
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ BufferedWriter writer = null;
+ try {
+ if (!getUndoScript().exists()) {
+ getUndoScript().getParentFile().mkdirs();
+ getUndoScript().createNewFile();
+ }
+ writer = new BufferedWriter(new FileWriter(getUndoScript()));
+ for (DirSet fs : filesets) {
+ DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+ File inputDir = fs.getDir(getProject());
+ for (String fileName : ds.getIncludedDirectories()) {
+ File inputFile = new File(inputDir, fileName);
+ if (inputFile.isDirectory() && inputFile.getName().matches("plugins|features")) {
+ append(inputFile, writer);
+ }
+ }
+ }
+ writer.flush();
+ }
+ catch (IOException e) {
+ throw new BuildException("could not create undo script.", e);
+ }
+ finally {
+ if (writer != null) {
+ try {
+ writer.close();
+
+ }
+ catch (IOException e1) {
+ // void
+ }
+ }
+
+ }
+ }
+
+ private void append(File folder, BufferedWriter writer) throws IOException {
+ for (File f : folder.listFiles()) {
+ writer.append("rm -rf " + folder.getName() + "/" + f.getName());
+ writer.newLine();
+ }
+ }
+
+ private void validate() throws BuildException {
+ if(filesets.isEmpty()){
+ throw new BuildException("fileset must be specified.");
+ }
+
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/DropInZip.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/DropInZip.java
new file mode 100644
index 0000000..a4636af
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/DropInZip.java
@@ -0,0 +1,126 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.util;
+
+import java.io.File;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.tools.ant.BuildException;
+
+/**
+ * <h4>DropInZip</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (31.01.2011)
+ */
+public class DropInZip {
+ private Integer versionMajor = 0;
+ private Integer versionMinor = 0;
+ private Integer versionMicro = 0;
+ private File zipFile;
+ private Date buildDate;
+
+ public DropInZip(File file, String buildDate, Integer versionMajor, Integer versionMinor) {
+ this(file, buildDate, versionMajor, versionMinor, null);
+ }
+
+ public DropInZip(File file, String buildDate, Integer versionMajor, Integer versionMinor, Integer versionMicro) {
+ this.zipFile = file;
+ try {
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd-HHmm");
+ this.buildDate = format.parse(buildDate);
+ }
+ catch (ParseException e) {
+ throw new BuildException("could not parse date '"+buildDate+"' into format 'yyyyMMdd-HHmm'.",e);
+ }
+ this.versionMajor = versionMajor;
+ this.versionMinor = versionMinor;
+ this.versionMicro = versionMicro;
+ }
+
+ /**
+ * @return the versionMajor
+ */
+ public Integer getVersionMajor() {
+ return versionMajor;
+ }
+
+ /**
+ * @param versionMajor
+ * the versionMajor to set
+ */
+ public void setVersionMajor(Integer versionMajor) {
+ this.versionMajor = versionMajor;
+ }
+
+ /**
+ * @return the versionMinor
+ */
+ public Integer getVersionMinor() {
+ return versionMinor;
+ }
+
+ /**
+ * @param versionMinor
+ * the versionMinor to set
+ */
+ public void setVersionMinor(Integer versionMinor) {
+ this.versionMinor = versionMinor;
+ }
+
+ /**
+ * @return the versionMicro
+ */
+ public Integer getVersionMicro() {
+ return versionMicro;
+ }
+
+ /**
+ * @param versionMicro
+ * the versionMicro to set
+ */
+ public void setVersionMicro(Integer versionMicro) {
+ this.versionMicro = versionMicro;
+ }
+
+ /**
+ * @return the zipFile
+ */
+ public File getZipFile() {
+ return zipFile;
+ }
+
+ /**
+ * @param zipFile
+ * the zipFile to set
+ */
+ public void setZipFile(File zipFile) {
+ this.zipFile = zipFile;
+ }
+
+ /**
+ * @return the buildDate
+ */
+ public Date getBuildDate() {
+ return buildDate;
+ }
+
+ /**
+ * @param buildDate
+ * the buildDate to set
+ */
+ public void setBuildDate(Date buildDate) {
+ this.buildDate = buildDate;
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/DropInZipFilter.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/DropInZipFilter.java
new file mode 100644
index 0000000..dfdd0bf
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/DropInZipFilter.java
@@ -0,0 +1,38 @@
+package org.eclipse.scout.releng.ant.util;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.TreeMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class DropInZipFilter implements FilenameFilter {
+ private TreeMap<String, DropInZip> orderedZipFiles;
+ // N-scout-3.7.0M5-20115630-1256-Incubation.zip
+ Pattern versionPattern = Pattern.compile("[A-Z]\\-scout\\-([0-9]{1,2})\\.([0-9]{1,2})\\.(([0-9]{1,2}))?([0-9A-Za-z]*)?\\-([0-9]{8}\\-[0-9]{4})(-Incubation)?\\.zip$");
+
+ public DropInZipFilter() {
+ this.orderedZipFiles = new TreeMap<String, DropInZip>(new ReverseStringComparator());
+ }
+
+ @Override
+ public boolean accept(File dir, String name) {
+ Matcher matcher = versionPattern.matcher(name);
+ if (matcher.matches()) {
+ DropInZip zip = new DropInZip(new File(dir.getAbsolutePath() + File.separator + name), matcher.group(6), new Integer(matcher.group(1)), new Integer(matcher.group(2)), new Integer(matcher.group(3)));
+ orderedZipFiles.put(matcher.group(6), zip);
+ }
+ return false;
+ }
+
+ public int size() {
+ return orderedZipFiles.size();
+ }
+
+ /**
+ * @return the orderedScripts
+ */
+ public DropInZip[] getOrderedZipFiles() {
+ return orderedZipFiles.values().toArray(new DropInZip[orderedZipFiles.size()]);
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/FileUtility.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/FileUtility.java
new file mode 100644
index 0000000..9b4b74e
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/FileUtility.java
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.util;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.net.URI;
+
+/**
+ * <h4>FileUtility</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (22.01.2011)
+ */
+public class FileUtility {
+
+ private final static int BUFFER_SIZE = 1024;
+
+ public static void copy(File inputFile, File outputFile) throws IOException {
+ if (inputFile.isDirectory()) {
+ if (!outputFile.exists()) {
+ outputFile.mkdirs();
+ }
+ for (File f : inputFile.listFiles()) {
+ copyToDir(f, outputFile);
+ }
+ }
+ else {
+ InputStream in = null;
+ OutputStream out = null;
+ try {
+ in = new FileInputStream(inputFile);
+ out = new FileOutputStream(outputFile);
+ byte[] buffer = new byte[BUFFER_SIZE];
+ int read;
+ while ((read = in.read(buffer)) != -1) {
+ out.write(buffer, 0, read);
+ }
+ }
+ finally {
+ if (in != null) {
+ try {
+ in.close();
+ }
+ catch (IOException e) {
+ // void
+ }
+ }
+ if (out != null) {
+ try {
+ out.close();
+ }
+ catch (IOException e) {
+ // void
+ }
+
+ }
+
+ }
+ }
+ }
+
+ public static void copyToDir(File input, File toDir) throws IOException {
+ copyToDir(input, toDir, input.getParentFile().getAbsoluteFile().toURI());
+ }
+
+ private static void copyToDir(File input, File toDir, URI relPath) throws IOException {
+ if (input.isDirectory()) {
+ for (File f : input.listFiles()) {
+ copyToDir(f, toDir, relPath);
+ }
+ }
+ else {
+ InputStream in = null;
+ OutputStream out = null;
+ try {
+ in = new FileInputStream(input);
+ File outFile = new File(toDir.getAbsolutePath() + File.separator + relPath.relativize(input.toURI()).toString());
+ if(!outFile.exists()){
+ outFile.getParentFile().mkdirs();
+ }
+ out = new FileOutputStream(outFile);
+ byte[] buffer = new byte[BUFFER_SIZE];
+ int read;
+ while ((read = in.read(buffer)) != -1) {
+ out.write(buffer, 0, read);
+ }
+ }
+ finally {
+ if (in != null) {
+ try {
+ in.close();
+ }
+ catch (IOException e) {
+ // void
+ }
+ }
+ if (out != null) {
+ try {
+ out.close();
+ }
+ catch (IOException e) {
+ // void
+ }
+ }
+ }
+ }
+ }
+
+ public static boolean deleteFile(File file) {
+ if (file.isDirectory()) {
+ for (File f : file.listFiles()) {
+ boolean success = deleteFile(f);
+ if (!success) {
+ return false;
+ }
+ }
+ }
+ return file.delete();
+ }
+
+ /**
+ * retrieve content as raw bytes
+ */
+ public static byte[] getContent(InputStream stream) throws IOException {
+ return getContent(stream, true);
+ }
+
+ public static byte[] getContent(InputStream stream, boolean autoClose) throws IOException {
+ BufferedInputStream in = null;
+ try {
+ in = new BufferedInputStream(stream);
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ byte[] b = new byte[10240];
+ int len;
+ while ((len = in.read(b)) > 0) {
+ buffer.write(b, 0, len);
+ }
+ buffer.close();
+ byte[] data = buffer.toByteArray();
+ return data;
+ }
+ finally {
+ if (autoClose) {
+ if (in != null) {
+ in.close();
+ }
+ }
+ }
+ }
+ public static byte[] getContent(String filename) throws IOException {
+ try {
+ return getContent(new FileInputStream(filename), true);
+ }
+ catch (FileNotFoundException e) {
+ IOException io = new IOException("filename: " + filename);
+ io.initCause(e);
+ throw io;
+ }
+ }
+
+ /**
+ * retrieve content as string (correct charcter conversion)
+ */
+ public static String getContent(Reader stream) throws IOException {
+ return getContent(stream, true);
+ }
+
+ public static String getContent(Reader stream, boolean autoClose) throws IOException {
+ BufferedReader in = null;
+ try {
+ in = new BufferedReader(stream);
+ StringWriter buffer = new StringWriter();
+ char[] b = new char[10240];
+ int len;
+ while ((len = in.read(b)) > 0) {
+ buffer.write(b, 0, len);
+ }
+ buffer.close();
+ return buffer.toString();
+ }
+ finally {
+ if (autoClose) {
+ if (in != null) {
+ in.close();
+ }
+ }
+ }
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/ReverseStringComparator.java b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/ReverseStringComparator.java
new file mode 100644
index 0000000..f7d667a
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/src/org/eclipse/scout/releng/ant/util/ReverseStringComparator.java
@@ -0,0 +1,20 @@
+package org.eclipse.scout.releng.ant.util;
+
+import java.util.Comparator;
+
+public class ReverseStringComparator implements Comparator<String> {
+
+ @Override
+ public int compare(String o1, String o2) {
+ if (o1 == null && o2 == null) {
+ return 0;
+ }
+ if (o1 == null) {
+ return 1;
+ }
+ if (o2 == null) {
+ return -1;
+ }
+ return o2.compareTo(o1);
+ }
+}
\ No newline at end of file
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/AbstractTestCase.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/AbstractTestCase.java
new file mode 100644
index 0000000..b185482
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/AbstractTestCase.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import org.junit.Assert;
+
+/** <h4> AbstractTestCase </h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ *
+ */
+public abstract class AbstractTestCase {
+ public static final String PROP_TEST_DATA_DIR = "testDataDir";
+ private Properties m_properties;
+
+ public AbstractTestCase(){
+ m_properties= new Properties();
+ try {
+ m_properties.load(AbstractTestCase.class.getClassLoader().getResourceAsStream("testCase.properties"));
+ }
+ catch (IOException e) {
+ Assert.fail(e.getMessage());
+ }
+ }
+
+ protected String getTestDataDir(){
+ return getProperty(PROP_TEST_DATA_DIR);
+ }
+
+ protected String getProperty(String key){
+ return m_properties.getProperty(key);
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/AllTestSuite.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/AllTestSuite.java
new file mode 100644
index 0000000..baa9cd6
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/AllTestSuite.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant;
+
+import org.eclipse.scout.releng.ant.archive.ArchiveSuite;
+import org.eclipse.scout.releng.ant.category.TestCategoryTask;
+import org.eclipse.scout.releng.ant.incubation.TestIncubation;
+import org.eclipse.scout.releng.ant.pack200.Pack200Suite;
+import org.eclipse.scout.releng.ant.undo.TestCreateUndoScript;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * <h4>AllTestSuite</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ArchiveSuite.class,
+ Pack200Suite.class, TestCategoryTask.class, TestIncubation.class, TestCreateUndoScript.class, TestTrunkateRepository.class,
+ TestCreateRepositoryOverview.class, DropInZipFilterTest.class})
+public class AllTestSuite {
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/DropInZipFilterTest.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/DropInZipFilterTest.java
new file mode 100644
index 0000000..d04ed35
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/DropInZipFilterTest.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant;
+
+import java.io.File;
+
+import junit.framework.Assert;
+
+import org.eclipse.scout.releng.ant.util.DropInZip;
+import org.eclipse.scout.releng.ant.util.DropInZipFilter;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/** <h4> DropInZipFilterTest </h4>
+ *
+ * @author aho
+ * @since 1.1.0 (31.01.2011)
+ *
+ */
+public class DropInZipFilterTest extends AbstractTestCase {
+
+
+ private String m_workingDir;
+
+ public DropInZipFilterTest(){
+ m_workingDir = getTestDataDir() + "/dropInZipFilter";
+ }
+
+ @Before
+ public void setUp() throws Exception{
+ removeOutputDir();
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testDropInZipFilter(){
+ File inputDir = new File(m_workingDir + "/input");
+ DropInZipFilter filter = new DropInZipFilter();
+ inputDir.list(filter);
+ DropInZip[] zips = filter.getOrderedZipFiles();
+ Assert.assertEquals(zips.length, 4);
+ Assert.assertEquals(zips[0].getZipFile().getName(), "S-scout-3.7.1-20111020-0313.zip");
+ Assert.assertEquals(zips[1].getZipFile().getName(), "R-scout-3.7.0-20110512-1520-Incubation.zip");
+ Assert.assertEquals(zips[2].getZipFile().getName(), "S-scout-3.7.0M5-20110131-1230-Incubation.zip");
+ Assert.assertEquals(zips[3].getZipFile().getName(), "N-scout-3.7.0M5-20110130-1256-Incubation.zip");
+// for(DropInZip zip : filter.getOrderedZipFiles()){
+//
+// }
+
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/TestCreateRepositoryOverview.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/TestCreateRepositoryOverview.java
new file mode 100644
index 0000000..3132a92
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/TestCreateRepositoryOverview.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Arrays;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import junit.framework.Assert;
+
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.eclipse.scout.releng.ant.util.ReverseStringComparator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>CreateRepositoryOverviewTest</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (31.01.2011)
+ */
+public class TestCreateRepositoryOverview extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestCreateRepositoryOverview() {
+ m_workingDir = getTestDataDir() + "/testRepositoryOverview";
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ removeOutputDir();
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void treeMapTest() {
+ TreeMap<String, String> map = new TreeMap<String, String>(new ReverseStringComparator());
+ String version351 = "3.5_1";
+ map.put("3.5", version351);
+ String version36 = "3.6";
+ map.put("3.6", version36);
+ String version352 = "3.5_2";
+ map.put("3.5", version352);
+ Assert.assertTrue(map.size() == 2);
+ String[] arr = map.values().toArray(new String[map.size()]);
+ Assert.assertEquals(arr[0], "3.6");
+ Assert.assertEquals(arr[1], "3.5_2");
+ }
+
+ @Test
+ public void testReverseComparator() {
+ TreeSet<String> set = new TreeSet<String>(new ReverseStringComparator());
+ set.add("3.5");
+ set.add(null);
+ set.add("3.9");
+ set.add("3.6");
+ String[] arr = set.toArray(new String[set.size()]);
+ Assert.assertEquals(arr[0], "3.9");
+ Assert.assertEquals(arr[1], "3.6");
+ Assert.assertEquals(arr[2], "3.5");
+ Assert.assertEquals(arr[3], null);
+ }
+
+ @Test
+ public void testRepositoryOverview() throws Exception {
+ File inputDir = new File(m_workingDir + "/input");
+ File outputDir = new File(m_workingDir + "/output");
+ File overviewFile = new File(outputDir.getAbsolutePath() + "/repositoryOverview.xml");
+ CreateRepositoryOverview task = new CreateRepositoryOverview();
+ task.setRootUrl("http://dowload.eclipse.org/scout");
+ task.setOverviewFile(overviewFile);
+ task.setRepositoryDir(inputDir);
+ task.execute();
+
+ Assert.assertTrue(overviewFile.exists());
+ byte[] contentNew = FileUtility.getContent(new FileInputStream(overviewFile));
+ byte[] contentRef = FileUtility.getContent(m_workingDir + "/input/repositoryOverview.xml");
+ Assert.assertTrue(Arrays.equals(contentNew, contentRef));
+ }
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/TestTrunkateRepository.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/TestTrunkateRepository.java
new file mode 100644
index 0000000..0a11037
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/TestTrunkateRepository.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant;
+
+import java.io.File;
+
+import junit.framework.Assert;
+
+import org.apache.tools.ant.Project;
+import org.eclipse.scout.releng.ant.TrunkateRepository;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestTrunkateRepository extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestTrunkateRepository() {
+ m_workingDir = getTestDataDir() + "/p2";
+ }
+
+ @Before
+ public void setUp() throws Exception{
+ removeOutputDir();
+ File inputDir = new File(m_workingDir + "/input");
+ File outputDir = new File(m_workingDir + "/output");
+ FileUtility.copy(inputDir, outputDir);
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() {
+ TrunkateRepository task = new TrunkateRepository();
+ Project project2 = new Project();
+ task.setProject(project2);
+ task.setKeep(2);
+ task.setRepositoryLocation(new File(m_workingDir + "/output"));
+ task.execute();
+
+ Assert.assertFalse(new File(m_workingDir + "/output/update/plugins/org.eclipse.scout.commons.source_3.7.0.201101020423.jar").exists());
+ Assert.assertFalse(new File(m_workingDir + "/output/update/plugins/org.eclipse.scout.commons.source_3.7.0.201102020423.jar").exists());
+ Assert.assertTrue(new File(m_workingDir + "/output/update/plugins/org.eclipse.scout.commons.source_3.7.0.201103020423.jar").exists());
+ Assert.assertTrue(new File(m_workingDir + "/output/update/plugins/org.eclipse.scout.commons.source_3.7.0.201104020423.jar").exists());
+
+ Assert.assertFalse(new File(m_workingDir + "/output/update/plugins/org.eclipse.scout.commons.source_3.7.0.201101020423.jar.pack.gz").exists());
+ Assert.assertFalse(new File(m_workingDir + "/output/update/plugins/org.eclipse.scout.commons.source_3.7.0.201102020423.jar.pack.gz").exists());
+ Assert.assertTrue(new File(m_workingDir + "/output/update/plugins/org.eclipse.scout.commons.source_3.7.0.201103020423.jar.pack.gz").exists());
+ Assert.assertTrue(new File(m_workingDir + "/output/update/plugins/org.eclipse.scout.commons.source_3.7.0.201104020423.jar.pack.gz").exists());
+
+
+ Assert.assertFalse(new File(m_workingDir + "/output/zip/R-scout-3.7.1-20100102-0423.zip").exists());
+ Assert.assertFalse(new File(m_workingDir + "/output/zip/R-scout-3.7.0M5-20110102-0423-Incubation.zip").exists());
+ Assert.assertFalse(new File(m_workingDir + "/output/zip/R-scout-3.7.0M5-20110202-0423.zip").exists());
+ Assert.assertTrue(new File(m_workingDir + "/output/zip/R-scout-3.7.0M5-20110302-0423-Incubation.zip").exists());
+ Assert.assertTrue(new File(m_workingDir + "/output/zip/R-scout-3.7.0M5-20110402-0423-Incubation.zip").exists());
+ }
+
+}
+
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/ArchiveSuite.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/ArchiveSuite.java
new file mode 100644
index 0000000..cd6898b
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/ArchiveSuite.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/** <h4> ArchiveSuite </h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ *
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses( { TestCreateArchive.class,
+ TestCreateDropInZip.class, TestExtractArchive.class, TestRemoveUnpackSuffix.class, TestRemoveOldZipFiles.class})
+public class ArchiveSuite {
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestCreateArchive.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestCreateArchive.java
new file mode 100644
index 0000000..3a2e076
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestCreateArchive.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.File;
+import java.util.HashSet;
+
+import junit.framework.Assert;
+
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestCreateArchive extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestCreateArchive() {
+ m_workingDir = getTestDataDir() + "/archive/createArchive";
+ }
+
+ @Before
+ public void setUp() {
+ removeOutputDir();
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() {
+ CreateArchive task = new CreateArchive();
+ task.setInputDir(new File(m_workingDir + "/input"));
+ File outputDir = new File(m_workingDir + "/output");
+ task.setOutputDir(outputDir);
+ task.execute();
+ Assert.assertTrue(outputDir.exists());
+ Assert.assertTrue(outputDir.isDirectory());
+ HashSet<String> fileNames = new HashSet<String>();
+ for (File f : outputDir.listFiles()) {
+ fileNames.add(f.getName());
+ }
+ Assert.assertTrue(fileNames.contains("org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar"));
+ Assert.assertTrue(fileNames.contains("org.eclipse.scout.rt.shared_3.5.5.201101211855.jar"));
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestCreateDropInZip.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestCreateDropInZip.java
new file mode 100644
index 0000000..95ca806
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestCreateDropInZip.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.File;
+import java.util.Enumeration;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import junit.framework.Assert;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.FileSet;
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestCreateDropInZip extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestCreateDropInZip() {
+ m_workingDir = getTestDataDir() + "/archive/createDropInZip";
+ }
+
+ @Before
+ public void setUp() {
+ removeOutputDir();
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() throws Exception {
+ CreateDropInZip task = new CreateDropInZip();
+ task.setOutputDir(new File(m_workingDir + "/output"));
+ Project p = new Project();
+ task.setProject(p);
+ // filesets
+ FileSet set1 = new FileSet();
+ set1.setDir(new File(m_workingDir + "/input/sdkFeature"));
+ set1.createInclude().setName("**/**");
+ task.addFileset(set1);
+ FileSet set2 = new FileSet();
+ set2.setDir(new File(m_workingDir + "/input/rtFeature"));
+ set2.createInclude().setName("**/**");
+ task.addFileset(set2);
+ task.setZipName("blubber");
+ task.setMilestone("M4");
+ task.setTimestamp("201001211203");
+ task.setVersionMajor("3");
+ task.setVersionMinor("5");
+ task.setVersionMicro("0");
+ task.execute();
+
+ File file = new File(m_workingDir + "/output/blubber-3.5.0M4-201001211203.zip");
+ Assert.assertTrue(file.exists());
+ Assert.assertTrue(file.isFile());
+ ZipFile zipFile = new ZipFile(file);
+ int i = 0;
+ Enumeration<? extends ZipEntry> entries = zipFile.entries();
+ while (entries.hasMoreElements()) {
+ entries.nextElement();
+ i++;
+ }
+ Assert.assertEquals(i, 20);
+ }
+
+ @Test
+ public void testTaskIncubation() throws Exception {
+ CreateDropInZip task = new CreateDropInZip();
+ task.setOutputDir(new File(m_workingDir + "/output"));
+ Project p = new Project();
+ task.setProject(p);
+ // filesets
+ FileSet set1 = new FileSet();
+ set1.setDir(new File(m_workingDir + "/input/sdkFeature"));
+ set1.createInclude().setName("**/**");
+ task.addFileset(set1);
+ FileSet set2 = new FileSet();
+ set2.setDir(new File(m_workingDir + "/input/rtFeature"));
+ set2.createInclude().setName("**/**");
+ task.addFileset(set2);
+ task.setZipName("blubber");
+ task.setMilestone("M4");
+ task.setTimestamp("201001211203");
+ task.setVersionMajor("3");
+ task.setVersionMinor("5");
+ task.setVersionMicro("0");
+ task.setIncubation(true);
+ task.execute();
+
+ File file = new File(m_workingDir + "/output/blubber-Incubation-3.5.0M4-201001211203.zip");
+ Assert.assertTrue(file.exists());
+ Assert.assertTrue(file.isFile());
+ ZipFile zipFile = new ZipFile(file);
+ int i = 0;
+ Enumeration<? extends ZipEntry> entries = zipFile.entries();
+ while (entries.hasMoreElements()) {
+ entries.nextElement();
+ i++;
+ }
+ Assert.assertEquals(i, 20);
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestExtractArchive.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestExtractArchive.java
new file mode 100644
index 0000000..29a1964
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestExtractArchive.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.File;
+import java.util.HashMap;
+
+import junit.framework.Assert;
+
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestExtractArchive extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestExtractArchive() {
+ m_workingDir = getTestDataDir() + "/archive/extractArchive";
+ }
+
+ @Before
+ public void setUp() {
+ removeOutputDir();
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() {
+ File outputDir = new File(m_workingDir + "/output");
+
+ ExtractArchive task = new ExtractArchive();
+ task.setInputDir(new File(m_workingDir + "/input"));
+ task.setOutputDir(outputDir);
+ task.execute();
+
+ Assert.assertTrue(outputDir.exists());
+ Assert.assertTrue(outputDir.isDirectory());
+ HashMap<String, File> files = new HashMap<String, File>();
+
+ for (File f : outputDir.listFiles()) {
+ files.put(f.getName(), f);
+ }
+
+ Assert.assertTrue(files.containsKey("org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855"));
+ Assert.assertTrue(files.containsKey("org.eclipse.scout.rt.shared_3.5.5.201101211855.jar"));
+ Assert.assertTrue(files.get("org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855").isDirectory());
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestRemoveOldZipFiles.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestRemoveOldZipFiles.java
new file mode 100644
index 0000000..9222326
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestRemoveOldZipFiles.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.File;
+
+import junit.framework.Assert;
+
+import org.apache.tools.ant.Project;
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestRemoveOldZipFiles extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestRemoveOldZipFiles() {
+ m_workingDir = getTestDataDir() + "/archive/removeOldZipFiles";
+ }
+
+ @Before
+ public void setUp() throws Exception{
+ removeOutputDir();
+ File inputDir = new File(m_workingDir + "/input");
+ File outputDir = new File(m_workingDir + "/output");
+ FileUtility.copy(inputDir, outputDir);
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() {
+ File outputDir = new File(m_workingDir + "/output");
+ RemoveOldZipFiles task = new RemoveOldZipFiles();
+ Project project2 = new Project();
+ task.setProject(project2);
+ task.setKeep(3);
+ task.setDir(outputDir);
+ task.execute();
+
+ Assert.assertTrue(outputDir.exists());
+ Assert.assertFalse(new File(outputDir.getAbsolutePath()+"/N-scout-3.5.0M4-20110120-0901-Incubation.zip").exists());
+ Assert.assertTrue(new File(outputDir.getAbsolutePath()+"/N-scout-3.5.0M4-20110121-0901-Incubation.zip").exists());
+ Assert.assertTrue(new File(outputDir.getAbsolutePath()+"/N-scout-3.5.0M4-20110129-0901.zip").exists());
+ Assert.assertTrue(new File(outputDir.getAbsolutePath()+"/N-scout-3.5.0M4-20110130-0901-Incubation.zip").exists());
+
+ }
+
+}
+
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestRemoveUnpackSuffix.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestRemoveUnpackSuffix.java
new file mode 100644
index 0000000..3ffb0bb
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/archive/TestRemoveUnpackSuffix.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.archive;
+
+import java.io.File;
+import java.util.HashMap;
+
+import junit.framework.Assert;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.FileSet;
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestRemoveUnpackSuffix extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestRemoveUnpackSuffix() {
+ m_workingDir = getTestDataDir() + "/archive/removeUnpackSuffix";
+ }
+
+ @Before
+ public void setUp() {
+ removeOutputDir();
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() throws Exception {
+ File inputDir = new File(m_workingDir + "/input");
+ File outputDir = new File(m_workingDir + "/output");
+ outputDir.mkdirs();
+ for (File f : inputDir.listFiles()) {
+ FileUtility.copyToDir(f, outputDir);
+ }
+ RemoveUnpackSuffix task = new RemoveUnpackSuffix();
+ Project project2 = new Project();
+ task.setProject(project2);
+ task.setDir(outputDir);
+ task.execute();
+
+ Assert.assertTrue(outputDir.exists());
+ Assert.assertTrue(outputDir.isDirectory());
+ HashMap<String, File> files = new HashMap<String, File>();
+
+ for (File f : outputDir.listFiles()) {
+ files.put(f.getName(), f);
+ }
+
+ Assert.assertTrue(files.containsKey("org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855.jar"));
+ Assert.assertTrue(files.containsKey("org.eclipse.scout.rt.shared_3.5.5.201101211855.jar"));
+
+ }
+
+ @Test
+ public void testTaskFileset() throws Exception {
+ File inputDir = new File(m_workingDir + "/input");
+ File outputDir = new File(m_workingDir + "/output");
+ outputDir.mkdirs();
+ for (File f : inputDir.listFiles()) {
+ FileUtility.copyToDir(f, outputDir);
+ }
+ RemoveUnpackSuffix task = new RemoveUnpackSuffix();
+ Project project2 = new Project();
+ task.setProject(project2);
+ FileSet set = new FileSet();
+ set.setDir(outputDir);
+ set.createInclude().setName("**/*.jar");
+ task.addFileset(set);
+ task.execute();
+
+ Assert.assertTrue(outputDir.exists());
+ Assert.assertTrue(outputDir.isDirectory());
+ HashMap<String, File> files = new HashMap<String, File>();
+
+ for (File f : outputDir.listFiles()) {
+ files.put(f.getName(), f);
+ }
+
+ Assert.assertTrue(files.containsKey("org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855.jar"));
+ Assert.assertTrue(files.containsKey("org.eclipse.scout.rt.shared_3.5.5.201101211855.jar"));
+
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/category/TestCategoryTask.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/category/TestCategoryTask.java
new file mode 100644
index 0000000..f7e48e1
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/category/TestCategoryTask.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.category;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Arrays;
+
+import org.apache.tools.ant.Project;
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestCategoryTask extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestCategoryTask() {
+ m_workingDir = getTestDataDir() + "/category";
+ }
+
+ @Before
+ public void setUp() throws Exception{
+ removeOutputDir();
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask()throws Exception{
+ CategoryTask task = new CategoryTask();
+ Project project2 = new Project();
+ task.setProject(project2);
+ File categoryFile = new File(m_workingDir+"/output/scoutCategory.xml");
+ task.setCategoryFile(categoryFile);
+ task.setFeaturesFolder(new File(m_workingDir+"/input/features"));
+ task.execute();
+
+ Assert.assertTrue(categoryFile.exists());
+ byte[] contentNew = FileUtility.getContent(new FileInputStream(categoryFile));
+ byte[] contentRef = FileUtility.getContent(m_workingDir+"/input/scoutCategory.xml");
+ Assert.assertTrue(Arrays.equals(contentNew, contentRef));
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/incubation/TestIncubation.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/incubation/TestIncubation.java
new file mode 100644
index 0000000..41c66e8
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/incubation/TestIncubation.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.incubation;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStreamReader;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import junit.framework.Assert;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.FileSet;
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestIncubation extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestIncubation() {
+ m_workingDir = getTestDataDir() + "/incubation";
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ removeOutputDir();
+ File inputDir = new File(m_workingDir + "/input");
+ File outputDir = new File(m_workingDir + "/output");
+ FileUtility.copy(inputDir, outputDir);
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() {
+ File inputDir = new File(m_workingDir + "/output");
+ MarkIncubation task = new MarkIncubation();
+ Project project2 = new Project();
+ task.setProject(project2);
+ FileSet set = new FileSet();
+ set.setDir(inputDir);
+ set.createInclude().setName("**/**.jar");
+ task.addFileset(set);
+ task.execute();
+
+ File rtFeatureJar = new File(m_workingDir + "/output/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201112280312_unpack.jar");
+ try {
+ expectFeatureProperties(rtFeatureJar);
+ }
+ catch (Exception e) {
+ Assert.fail();
+ }
+ try {
+ expectFeatureXml(new File(m_workingDir + "/output/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201150280650_unpack.jar"));
+ }
+ catch (Exception e) {
+ Assert.fail();
+ }
+
+ try {
+ expectManifestMf(new File(m_workingDir + "/output/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201112280312.jar"));
+ }
+ catch (Exception e) {
+ Assert.fail();
+ }
+
+ try {
+ expectPluginProps(new File(m_workingDir + "/output/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201112280312.jar"));
+ }
+ catch (Exception e) {
+ Assert.fail();
+ }
+
+ }
+
+ private void expectFeatureXml(File feature) throws Exception {
+ Assert.assertTrue(feature.exists());
+ JarFile jarFile = new JarFile(feature);
+ try {
+ JarEntry featureXml = jarFile.getJarEntry("feature.xml");
+ if (featureXml != null) {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setExpandEntityReferences(false);
+ Document doc = factory.newDocumentBuilder().parse(jarFile.getInputStream(featureXml));
+ NodeList nodeList = doc.getElementsByTagName("feature");
+ if (nodeList.getLength() == 1) {
+ Element originalFeatureElement = (Element) nodeList.item(0);
+ String label = originalFeatureElement.getAttribute("label");
+ Assert.assertTrue(label.endsWith(MarkIncubation.INCUBATION_APPENDIX));
+ }
+ }
+ }
+ finally {
+ jarFile.close();
+ }
+ }
+
+ private void expectFeatureProperties(File feature) throws Exception {
+ Assert.assertTrue(feature.exists());
+ JarFile jarFile = new JarFile(feature);
+ try {
+ JarEntry propEntry = jarFile.getJarEntry("feature.properties");
+ if (propEntry != null) {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(jarFile.getInputStream(propEntry)));
+ try{
+ String line = reader.readLine();
+ while(line != null){
+ if(line.startsWith("featureName")){
+ Assert.assertTrue(line.endsWith(MarkIncubation.INCUBATION_APPENDIX));
+ break;
+ }
+ line = reader.readLine();
+ }
+ }finally{
+ reader.close();
+ }
+ }
+ }finally{
+ jarFile.close();
+ }
+ }
+
+ private void expectManifestMf(File file) throws Exception {
+ Assert.assertTrue(file.exists());
+ JarFile jarFile = new JarFile(file);
+ try {
+ JarEntry entry = jarFile.getJarEntry("META-INF/MANIFEST.MF");
+ if (entry != null) {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(jarFile.getInputStream(entry)));
+ try{
+ String line = reader.readLine();
+ while(line != null){
+ if(line.startsWith("Bundle-Name:")){
+ Assert.assertTrue(line.endsWith(MarkIncubation.INCUBATION_APPENDIX));
+ break;
+ }
+ line = reader.readLine();
+ }
+ }finally{
+ reader.close();
+ }
+ }
+ }finally{
+ jarFile.close();
+ }
+ }
+
+ private void expectPluginProps(File file) throws Exception {
+ Assert.assertTrue(file.exists());
+ JarFile jarFile = new JarFile(file);
+ try {
+ JarEntry entry = jarFile.getJarEntry("plugin.properties");
+ if (entry != null) {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(jarFile.getInputStream(entry)));
+ try{
+ String line = reader.readLine();
+ while(line != null){
+ if(line.startsWith("pluginName=")){
+ Assert.assertTrue(line.endsWith(MarkIncubation.INCUBATION_APPENDIX));
+ break;
+ }
+ line = reader.readLine();
+ }
+ }finally{
+ reader.close();
+ }
+ }
+ }finally{
+ jarFile.close();
+ }
+ }
+}
+
+
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/pack200/Pack200Suite.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/pack200/Pack200Suite.java
new file mode 100644
index 0000000..f30d7ad
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/pack200/Pack200Suite.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.pack200;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/** <h4> ArchiveSuite </h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ *
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses( { TestRepack.class, TestPack.class})
+public class Pack200Suite {
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/pack200/TestPack.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/pack200/TestPack.java
new file mode 100644
index 0000000..adca6f8
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/pack200/TestPack.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.pack200;
+
+import java.io.File;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.FileSet;
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestPack extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestPack() {
+ m_workingDir = getTestDataDir() + "/pack200/pack";
+ }
+
+ @Before
+ public void setUp() throws Exception{
+ removeOutputDir();
+ File inputDir = new File(m_workingDir + "/input");
+ File outputDir = new File(m_workingDir + "/output");
+ FileUtility.copy(inputDir, outputDir);
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() {
+ File inputDir = new File(m_workingDir + "/output");
+ Pack task = new Pack();
+ Project project2 = new Project();
+ task.setProject(project2);
+ FileSet set = new FileSet();
+ set.setDir(inputDir);
+ set.createInclude().setName("**/*.jar");
+ task.addFileset(set);
+
+ task.execute();
+
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/pack200/TestRepack.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/pack200/TestRepack.java
new file mode 100644
index 0000000..df10138
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/pack200/TestRepack.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.pack200;
+
+import java.io.File;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.FileSet;
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestRepack extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestRepack() {
+ m_workingDir = getTestDataDir() + "/pack200/repack";
+ }
+
+ @Before
+ public void setUp() throws Exception{
+ removeOutputDir();
+ File inputDir = new File(m_workingDir + "/input");
+ File outputDir = new File(m_workingDir + "/output");
+ FileUtility.copy(inputDir, outputDir);
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() {
+ File inputDir = new File(m_workingDir + "/input");
+ Repack task = new Repack();
+ Project project2 = new Project();
+ task.setProject(project2);
+ FileSet set = new FileSet();
+ set.setDir(inputDir);
+ set.createInclude().setName("**/*.jar");
+ task.addFileset(set);
+ task.execute();
+
+ }
+
+}
diff --git a/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/undo/TestCreateUndoScript.java b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/undo/TestCreateUndoScript.java
new file mode 100644
index 0000000..24a56df
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/org/eclipse/scout/releng/ant/undo/TestCreateUndoScript.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * 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:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.releng.ant.undo;
+
+import java.io.File;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.DirSet;
+import org.eclipse.scout.releng.ant.AbstractTestCase;
+import org.eclipse.scout.releng.ant.util.FileUtility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * <h4>TestCreateArchive</h4>
+ *
+ * @author aho
+ * @since 1.1.0 (27.01.2011)
+ */
+
+public class TestCreateUndoScript extends AbstractTestCase {
+
+ private String m_workingDir;
+
+ public TestCreateUndoScript() {
+ m_workingDir = getTestDataDir() + "/undo";
+ }
+
+ @Before
+ public void setUp() throws Exception{
+ removeOutputDir();
+ File inputDir = new File(m_workingDir + "/input");
+ File outputDir = new File(m_workingDir + "/output");
+ FileUtility.copy(inputDir, outputDir);
+ }
+
+ @After
+ public void cleanUp() {
+ removeOutputDir();
+ }
+
+ private void removeOutputDir() {
+ File outputDir = new File(m_workingDir + "/output");
+ if (outputDir.exists()) {
+ FileUtility.deleteFile(outputDir);
+ }
+ }
+
+ @Test
+ public void testTask() {
+ File undoScript = new File(m_workingDir + "/output/undo.sh");
+ File inputDir = new File(m_workingDir + "/input");
+ CreateUndoScript task = new CreateUndoScript();
+ Project project2 = new Project();
+ task.setProject(project2);
+ DirSet set = new DirSet();
+ set.setDir(inputDir);
+ set.createInclude().setName("plugins");
+ set.createInclude().setName("features");
+ task.addDirset(set);
+ task.setUndoScript(undoScript);
+ task.execute();
+
+ }
+
+}
+
diff --git a/org.eclipse.scout.releng.ant/test/testCase.properties b/org.eclipse.scout.releng.ant/test/testCase.properties
new file mode 100644
index 0000000..bdc588d
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/test/testCase.properties
@@ -0,0 +1 @@
+testDataDir=E:/workspaces/scout.build/p2Workspace/org.eclipse.scout.releng.ant/testData
\ No newline at end of file
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/META-INF/MANIFEST.MF b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7d881c9
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.scout.rt.server;bundle-version="3.2.2",org
+ .eclipse.core.runtime;bundle-version="3.5.0"
+Export-Package: org.eclipse.scout.rt.services.common.jdbc,org.eclipse.
+ scout.rt.services.common.jdbc.style
+Bundle-Vendor: Eclipse Scout Project
+Bundle-ClassPath: lib/derby.jar,.
+Bundle-Version: 10.5.3.201101211855
+Bundle-Name: JDBC Derby
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.scout.rt.jdbc.derby
+Eclipse-RegisterBuddy: org.eclipse.scout.rt.server
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+
+
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/about.html b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/about.html
new file mode 100644
index 0000000..2d18f92
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p><<em>insert current release date here, e.g., June 5, 2007</em>></p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+
+ <h3>Third Party Content</h3>
+ <p>The Content includes items that have been sourced from third parties as set out below. If you
+ did not receive this Content directly from the Eclipse Foundation, the following is provided
+ for informational purposes only, and you should look to the Redistributor's license for
+ terms and conditions of use.</p>
+ <p><strong>Apache Derby 10.5</strong> <br/><br/>
+ The fragment provides JDBC drivers for Apache Derby databases. It is developed by the Apache Software Foundation.</p>
+
+ <p>Apache Derby JDBC drivers is available from <a href="http://db.apache.org/derby/derby_downloads.html"><code>http://db.apache.org/derby/derby_downloads.html</code></a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/about_files/LICENSE-2.0.txt b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/about_files/LICENSE-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/about_files/LICENSE-2.0.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/lib/derby.jar b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/lib/derby.jar
new file mode 100644
index 0000000..dc8ae8d
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/lib/derby.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/org/eclipse/scout/rt/services/common/jdbc/AbstractDerbySqlService.class b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/org/eclipse/scout/rt/services/common/jdbc/AbstractDerbySqlService.class
new file mode 100644
index 0000000..ac0b0ff
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/org/eclipse/scout/rt/services/common/jdbc/AbstractDerbySqlService.class
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/org/eclipse/scout/rt/services/common/jdbc/style/DerbySqlStyle.class b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/org/eclipse/scout/rt/services/common/jdbc/style/DerbySqlStyle.class
new file mode 100644
index 0000000..4768708
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855/org/eclipse/scout/rt/services/common/jdbc/style/DerbySqlStyle.class
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.shared_3.5.5.201101211855.jar b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.shared_3.5.5.201101211855.jar
new file mode 100644
index 0000000..40f2d2e
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createArchive/input/org.eclipse.scout.rt.shared_3.5.5.201101211855.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/build.properties b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/build.properties
new file mode 100644
index 0000000..a848a14
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/build.properties
@@ -0,0 +1,6 @@
+bin.includes = feature.xml,\
+ epl-v10.html,\
+ license.html,\
+ build.properties,\
+ feature.properties
+generate.feature@org.eclipse.scout.rt.feature.source=org.eclipse.scout.rt.feature
\ No newline at end of file
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/epl-v10.html b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/epl-v10.html
new file mode 100644
index 0000000..84ec251
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<p align=center><b>Eclipse Public License - v 1.0</b></p>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/feature.properties b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/feature.properties
new file mode 100644
index 0000000..52b95ba
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/feature.properties
@@ -0,0 +1,134 @@
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+featureName=Eclipse Scout RT
+
+providerName=Eclipse Scout Project
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/feature.xml b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/feature.xml
new file mode 100644
index 0000000..2142b36
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/feature.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.scout.rt.feature"
+ label="%featureName"
+ version="3.5.5.201146260946"
+ provider-name="%providerName">
+
+ <description>
+ Scout runtime environment.
+ </description>
+
+ <copyright>
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+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:
+BSI Business Systems Integration AG - initial API and implementation
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <discovery label="Orbit" url="http://download.eclipse.org/tools/orbit/downloads/drops/I20101104194033/repository"/>
+ <discovery label="The Eclipse Project Updates" url="http://download.eclipse.org/eclipse/updates/3.5"/>
+ </url>
+
+ <includes
+ id="org.eclipse.scout.rt.feature.source"
+ version="3.5.5.201146260946"
+ optional="true"/>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.equinox.security" version="1.0.100" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.osgi"/>
+ <import plugin="org.eclipse.equinox.http.registry"/>
+ <import plugin="javax.servlet"/>
+ <import plugin="org.eclipse.core.net" version="1.2.1" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.scout.service" version="1.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui"/>
+ <import plugin="org.eclipse.ui.forms"/>
+ <import plugin="org.eclipse.jface.text"/>
+ <import plugin="org.eclipse.scout.commons" version="1.1.2" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.scout.rt.server" version="3.2.2" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.core.runtime" version="3.5.0" match="greaterOrEqual"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.scout.commons"
+ download-size="0"
+ install-size="0"
+ version="3.5.5.201146260946"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.scout.http.servletfilter"
+ download-size="0"
+ install-size="0"
+ version="3.5.5.201146260946"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.scout.net"
+ download-size="0"
+ install-size="0"
+ version="3.5.5.201146260946"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.scout.rt.client"
+ download-size="0"
+ install-size="0"
+ version="3.5.5.201146260946"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.scout.rt.server"
+ download-size="0"
+ install-size="0"
+ version="3.5.5.201146260946"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.scout.rt.shared"
+ download-size="0"
+ install-size="0"
+ version="3.5.5.201146260946"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.scout.rt.ui.swing"
+ download-size="0"
+ install-size="0"
+ version="3.5.5.201146260946"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.scout.rt.ui.swt"
+ download-size="0"
+ install-size="0"
+ version="3.5.5.201146260946"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.scout.service"
+ download-size="0"
+ install-size="0"
+ version="3.5.5.201146260946"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.scout.rt.jdbc.derby"
+ download-size="0"
+ install-size="0"
+ version="10.5.3.201146260946"/>
+
+</feature>
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/license.html b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/license.html
new file mode 100644
index 0000000..c6af966
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946/license.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
+<title>Eclipse.org Software User Agreement</title>
+</head>
+
+<body lang="EN-US" link=blue vlink=purple>
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>March 17, 2005</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS
+ modules ("Modules") and made available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and
+Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>
+</body>
+</html>
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201146260946.jar
new file mode 100644
index 0000000..f25f9d8
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201146260946.jar
new file mode 100644
index 0000000..f94f0d3
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/META-INF/MANIFEST.MF b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..aeab8f5
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.scout.rt.server;bundle-version="3.2.2",org
+ .eclipse.core.runtime;bundle-version="3.5.0"
+Export-Package: org.eclipse.scout.rt.services.common.jdbc,org.eclipse.
+ scout.rt.services.common.jdbc.style
+Bundle-Vendor: Eclipse Scout Project
+Bundle-ClassPath: lib/derby.jar,.
+Bundle-Version: 10.5.3.201146260946
+Bundle-Name: JDBC Derby
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.scout.rt.jdbc.derby
+Eclipse-RegisterBuddy: org.eclipse.scout.rt.server
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+
+
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/about.html b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/about.html
new file mode 100644
index 0000000..2d18f92
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p><<em>insert current release date here, e.g., June 5, 2007</em>></p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+
+ <h3>Third Party Content</h3>
+ <p>The Content includes items that have been sourced from third parties as set out below. If you
+ did not receive this Content directly from the Eclipse Foundation, the following is provided
+ for informational purposes only, and you should look to the Redistributor's license for
+ terms and conditions of use.</p>
+ <p><strong>Apache Derby 10.5</strong> <br/><br/>
+ The fragment provides JDBC drivers for Apache Derby databases. It is developed by the Apache Software Foundation.</p>
+
+ <p>Apache Derby JDBC drivers is available from <a href="http://db.apache.org/derby/derby_downloads.html"><code>http://db.apache.org/derby/derby_downloads.html</code></a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/about_files/LICENSE-2.0.txt b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/about_files/LICENSE-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/about_files/LICENSE-2.0.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/lib/derby.jar b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/lib/derby.jar
new file mode 100644
index 0000000..dc8ae8d
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/lib/derby.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/org/eclipse/scout/rt/services/common/jdbc/AbstractDerbySqlService.class b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/org/eclipse/scout/rt/services/common/jdbc/AbstractDerbySqlService.class
new file mode 100644
index 0000000..0157e74
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/org/eclipse/scout/rt/services/common/jdbc/AbstractDerbySqlService.class
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/org/eclipse/scout/rt/services/common/jdbc/style/DerbySqlStyle.class b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/org/eclipse/scout/rt/services/common/jdbc/style/DerbySqlStyle.class
new file mode 100644
index 0000000..5d30591
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946/org/eclipse/scout/rt/services/common/jdbc/style/DerbySqlStyle.class
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/build.properties b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/build.properties
new file mode 100644
index 0000000..2cd2728
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/build.properties
@@ -0,0 +1,5 @@
+bin.includes = feature.xml,\
+ epl-v10.html,\
+ license.html,\
+ build.properties,\
+ feature.properties
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/epl-v10.html b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/epl-v10.html
new file mode 100644
index 0000000..84ec251
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<p align=center><b>Eclipse Public License - v 1.0</b></p>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/feature.properties b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/feature.properties
new file mode 100644
index 0000000..eafe704
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/feature.properties
@@ -0,0 +1,134 @@
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+featureName=Scout SDK RT Source
+
+providerName=Eclipse Scout Project
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/feature.xml b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/feature.xml
new file mode 100644
index 0000000..ee35a1a
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/feature.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature id="org.eclipse.scout.sdk.feature.source" version="3.5.5.201146260946" label="Scout SDK Feature" provider-name="Eclipse Scout Project" >
+ <description >
+ Scout SDK
+ </description>
+ <copyright >
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+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:
+BSI Business Systems Integration AG - initial API and implementation
+ </copyright>
+ <license url="%licenseURL">
+ %license
+ </license>
+ <url>
+ <discovery url="http://download.eclipse.org/tools/orbit/downloads/drops/I20101104194033/repository" label="Orbit"/>
+ <discovery url="http://download.eclipse.org/eclipse/updates/3.5" label="The Eclipse Project Updates"/>
+ </url>
+ <plugin id="org.eclipse.scout.nls.sdk.source" version="3.5.5.201146260946" unpack="false"/>
+ <plugin id="org.eclipse.scout.sdk.source" version="3.5.5.201146260946" unpack="false"/>
+ <plugin id="org.eclipse.scout.sdk.ui.source" version="3.5.5.201146260946" unpack="false"/>
+ <plugin id="org.eclipse.scout.commons.source" version="3.5.5.201146260946" unpack="false"/>
+</feature>
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/license.html b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/license.html
new file mode 100644
index 0000000..c6af966
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946/license.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
+<title>Eclipse.org Software User Agreement</title>
+</head>
+
+<body lang="EN-US" link=blue vlink=purple>
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>March 17, 2005</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS
+ modules ("Modules") and made available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and
+Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>
+</body>
+</html>
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201146260946.jar
new file mode 100644
index 0000000..ce4298c
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201146260946.jar
new file mode 100644
index 0000000..87880d0
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/createDropInZip/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/extractArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar b/org.eclipse.scout.releng.ant/testData/archive/extractArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar
new file mode 100644
index 0000000..6ce2aa1
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/extractArchive/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/extractArchive/input/org.eclipse.scout.rt.shared_3.5.5.201101211855.jar b/org.eclipse.scout.releng.ant/testData/archive/extractArchive/input/org.eclipse.scout.rt.shared_3.5.5.201101211855.jar
new file mode 100644
index 0000000..40f2d2e
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/extractArchive/input/org.eclipse.scout.rt.shared_3.5.5.201101211855.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110120-0901-Incubation.zip b/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110120-0901-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110120-0901-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110121-0901-Incubation.zip b/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110121-0901-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110121-0901-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110129-0901.zip b/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110129-0901.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110129-0901.zip
diff --git a/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110130-0901-Incubation.zip b/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110130-0901-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/removeOldZipFiles/input/N-scout-3.5.0M4-20110130-0901-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/archive/removeUnpackSuffix/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar b/org.eclipse.scout.releng.ant/testData/archive/removeUnpackSuffix/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar
new file mode 100644
index 0000000..6ce2aa1
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/removeUnpackSuffix/input/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/archive/removeUnpackSuffix/input/org.eclipse.scout.rt.shared_3.5.5.201101211855.jar b/org.eclipse.scout.releng.ant/testData/archive/removeUnpackSuffix/input/org.eclipse.scout.rt.shared_3.5.5.201101211855.jar
new file mode 100644
index 0000000..40f2d2e
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/archive/removeUnpackSuffix/input/org.eclipse.scout.rt.shared_3.5.5.201101211855.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature.source_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature.source_3.5.5.201146260946.jar
new file mode 100644
index 0000000..20aa887
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature.source_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature.source_3.5.5.201146260946.jar.pack.gz b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature.source_3.5.5.201146260946.jar.pack.gz
new file mode 100644
index 0000000..cdcff24
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature.source_3.5.5.201146260946.jar.pack.gz
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar
new file mode 100644
index 0000000..acfc83d
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar.pack.gz b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar.pack.gz
new file mode 100644
index 0000000..860f687
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar.pack.gz
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946.jar
new file mode 100644
index 0000000..f5ac3a6
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946.jar.pack.gz b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946.jar.pack.gz
new file mode 100644
index 0000000..452dede
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946.jar.pack.gz
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar
new file mode 100644
index 0000000..155cf7e
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar.pack.gz b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar.pack.gz
new file mode 100644
index 0000000..d2d3c3a
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/category/input/features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar.pack.gz
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/category/input/scoutCategory.xml b/org.eclipse.scout.releng.ant/testData/category/input/scoutCategory.xml
new file mode 100644
index 0000000..7924e37
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/category/input/scoutCategory.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<site>
+ <feature id="org.eclipse.scout.rt.feature.source" url="features/org.eclipse.scout.rt.feature.source_3.5.5.201146260946.jar" version="3.5.5.201146260946">
+ <category name="Scout"/>
+ </feature>
+ <feature id="org.eclipse.scout.rt.feature" url="features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar" version="3.5.5.201146260946">
+ <category name="Scout"/>
+ </feature>
+ <feature id="org.eclipse.scout.sdk.feature.source" url="features/org.eclipse.scout.sdk.feature.source_3.5.5.201146260946.jar" version="3.5.5.201146260946">
+ <category name="Scout"/>
+ </feature>
+ <feature id="org.eclipse.scout.sdk.feature" url="features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar" version="3.5.5.201146260946">
+ <category name="Scout"/>
+ </feature>
+ <category-def label="Scout Application Development" name="Scout"/>
+</site>
diff --git a/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/N-scout-3.7.0M5-20110130-1256-Incubation.zip b/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/N-scout-3.7.0M5-20110130-1256-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/N-scout-3.7.0M5-20110130-1256-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/R-scout-3.7.0-20110512-1520-Incubation.zip b/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/R-scout-3.7.0-20110512-1520-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/R-scout-3.7.0-20110512-1520-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/S-scout-3.7.0M5-20110131-1230-Incubation.zip b/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/S-scout-3.7.0M5-20110131-1230-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/S-scout-3.7.0M5-20110131-1230-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/S-scout-3.7.1-20111020-0313.zip b/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/S-scout-3.7.1-20111020-0313.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/dropInZipFilter/input/S-scout-3.7.1-20111020-0313.zip
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/features/org.eclipse.scout.rt.feature.source_3.5.5.201112280312_unpack.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/features/org.eclipse.scout.rt.feature.source_3.5.5.201112280312_unpack.jar
new file mode 100644
index 0000000..551fb76
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/features/org.eclipse.scout.rt.feature.source_3.5.5.201112280312_unpack.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201112280312_unpack.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201112280312_unpack.jar
new file mode 100644
index 0000000..5c365d5
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201112280312_unpack.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201112280312.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201112280312.jar
new file mode 100644
index 0000000..e78d813
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201112280312.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201112280312.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201112280312.jar
new file mode 100644
index 0000000..e1e3cb1
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201112280312.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.net.source_3.5.5.201112280312.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.net.source_3.5.5.201112280312.jar
new file mode 100644
index 0000000..c190fdb
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.net.source_3.5.5.201112280312.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.net_3.5.5.201112280312.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.net_3.5.5.201112280312.jar
new file mode 100644
index 0000000..2d3aa6a
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.net_3.5.5.201112280312.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.rt.server.jdbc.oracle11g.fragment.source_11.1.0.7.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.rt.server.jdbc.oracle11g.fragment.source_11.1.0.7.jar
new file mode 100644
index 0000000..65c3246
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.rt.server.jdbc.oracle11g.fragment.source_11.1.0.7.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.rt.server.jdbc.oracle11g.fragment_11.1.0.7_unpack.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.rt.server.jdbc.oracle11g.fragment_11.1.0.7_unpack.jar
new file mode 100644
index 0000000..616c644
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/rtFeature/plugins/org.eclipse.scout.rt.server.jdbc.oracle11g.fragment_11.1.0.7_unpack.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201150280650_unpack.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201150280650_unpack.jar
new file mode 100644
index 0000000..23c3b79
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201150280650_unpack.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201146260946.jar
new file mode 100644
index 0000000..ce4298c
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/incubation/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/incubation/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201146260946.jar
new file mode 100644
index 0000000..87880d0
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/incubation/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201101020423.jar b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201101020423.jar
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201101020423.jar
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201101020423.jar.pack.gz b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201101020423.jar.pack.gz
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201101020423.jar.pack.gz
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201102020423.jar b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201102020423.jar
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201102020423.jar
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201102020423.jar.pack.gz b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201102020423.jar.pack.gz
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201102020423.jar.pack.gz
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201103020423.jar b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201103020423.jar
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201103020423.jar
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201103020423.jar.pack.gz b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201103020423.jar.pack.gz
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201103020423.jar.pack.gz
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201104020423.jar b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201104020423.jar
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201104020423.jar
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201104020423.jar.pack.gz b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201104020423.jar.pack.gz
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/update/plugins/org.eclipse.scout.commons.source_3.7.0.201104020423.jar.pack.gz
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110102-0423-Incubation.zip b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110102-0423-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110102-0423-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110202-0423.zip b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110202-0423.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110202-0423.zip
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110302-0423-Incubation.zip b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110302-0423-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110302-0423-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110402-0423-Incubation.zip b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110402-0423-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.0M5-20110402-0423-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.1-20100102-0423.zip b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.1-20100102-0423.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/p2/input/zip/R-scout-3.7.1-20100102-0423.zip
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar
new file mode 100644
index 0000000..acfc83d
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201146260946.jar
new file mode 100644
index 0000000..f25f9d8
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201146260946.jar
new file mode 100644
index 0000000..f94f0d3
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby.source_10.5.3.201146260946.jar b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby.source_10.5.3.201146260946.jar
new file mode 100644
index 0000000..c835ccf
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby.source_10.5.3.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946.jar b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946.jar
new file mode 100644
index 0000000..28fca1e
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/pack/input/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar
new file mode 100644
index 0000000..155cf7e
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/pack/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201146260946.jar
new file mode 100644
index 0000000..ce4298c
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/pack/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201146260946.jar b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201146260946.jar
new file mode 100644
index 0000000..87880d0
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/pack/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201146260946.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201101211855_unpack.jar b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201101211855_unpack.jar
new file mode 100644
index 0000000..e2f82b0
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/features/org.eclipse.scout.rt.feature_3.5.5.201101211855_unpack.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201101211855.jar b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201101211855.jar
new file mode 100644
index 0000000..fabcf45
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.commons.source_3.5.5.201101211855.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201101211855.jar b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201101211855.jar
new file mode 100644
index 0000000..1146b30
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.commons_3.5.5.201101211855.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby.source_10.5.3.201101211855.jar b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby.source_10.5.3.201101211855.jar
new file mode 100644
index 0000000..b47809f
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby.source_10.5.3.201101211855.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar
new file mode 100644
index 0000000..028d173
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/rtFeature/plugins/org.eclipse.scout.rt.jdbc.derby_10.5.3.201101211855_unpack.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/repack/input/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201101220112_unpack.jar b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201101220112_unpack.jar
new file mode 100644
index 0000000..390898a
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/sdkFeature/features/org.eclipse.scout.sdk.feature_3.5.5.201101220112_unpack.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/repack/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201101220112.jar b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201101220112.jar
new file mode 100644
index 0000000..f86ad1a
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/sdkFeature/plugins/org.eclipse.scout.sdk.source_3.5.5.201101220112.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/pack200/repack/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201101220112.jar b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201101220112.jar
new file mode 100644
index 0000000..7bcb323
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/pack200/repack/input/sdkFeature/plugins/org.eclipse.scout.sdk_3.5.5.201101220112.jar
Binary files differ
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/N-scout-3.6.0M5-20110130-1256-Incubation.zip b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/N-scout-3.6.0M5-20110130-1256-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/N-scout-3.6.0M5-20110130-1256-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/R-scout-3.6.0-20110512-1520-Incubation.zip b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/R-scout-3.6.0-20110512-1520-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/R-scout-3.6.0-20110512-1520-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/S-scout-3.6.0M5-20110131-1230-Incubation.zip b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/S-scout-3.6.0M5-20110131-1230-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/S-scout-3.6.0M5-20110131-1230-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/S-scout-3.6.1-20111020-0313.zip b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/S-scout-3.6.1-20111020-0313.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.6/zip/S-scout-3.6.1-20111020-0313.zip
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/N-scout-3.7.0M5-20110130-1256-Incubation.zip b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/N-scout-3.7.0M5-20110130-1256-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/N-scout-3.7.0M5-20110130-1256-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/R-scout-3.7.0-20110512-1520-Incubation.zip b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/R-scout-3.7.0-20110512-1520-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/R-scout-3.7.0-20110512-1520-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/S-scout-3.7.0M5-20110131-1230-Incubation.zip b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/S-scout-3.7.0M5-20110131-1230-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/S-scout-3.7.0M5-20110131-1230-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/S-scout-3.7.1-20111020-0313.zip b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/S-scout-3.7.1-20111020-0313.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/3.7/zip/S-scout-3.7.1-20111020-0313.zip
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/nightly/zip/N-scout-3.7.0M5-20110130-1256-Incubation.zip b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/nightly/zip/N-scout-3.7.0M5-20110130-1256-Incubation.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/nightly/zip/N-scout-3.7.0M5-20110130-1256-Incubation.zip
diff --git a/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/repositoryOverview.xml b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/repositoryOverview.xml
new file mode 100644
index 0000000..fce75cf
--- /dev/null
+++ b/org.eclipse.scout.releng.ant/testData/testRepositoryOverview/input/repositoryOverview.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<repository name="Scout">
+ <release url="http://dowload.eclipse.org/scout/nightly/update/" version="nightly">
+ <zip date="20110130-1256" url="http://dowload.eclipse.org/scout/nightly/zip/N-scout-3.7.0M5-20110130-1256-Incubation.zip"/>
+ </release>
+ <release url="http://dowload.eclipse.org/scout/3.7/update/" version="3.7">
+ <zip date="20111020-0313" url="http://dowload.eclipse.org/scout/3.7/zip/S-scout-3.7.1-20111020-0313.zip"/>
+ <zip date="20110512-1520" url="http://dowload.eclipse.org/scout/3.7/zip/R-scout-3.7.0-20110512-1520-Incubation.zip"/>
+ <zip date="20110131-1230" url="http://dowload.eclipse.org/scout/3.7/zip/S-scout-3.7.0M5-20110131-1230-Incubation.zip"/>
+ <zip date="20110130-1256" url="http://dowload.eclipse.org/scout/3.7/zip/N-scout-3.7.0M5-20110130-1256-Incubation.zip"/>
+ </release>
+ <release version="3.6">
+ <zip date="20111020-0313" url="http://dowload.eclipse.org/scout/3.6/zip/S-scout-3.6.1-20111020-0313.zip"/>
+ <zip date="20110512-1520" url="http://dowload.eclipse.org/scout/3.6/zip/R-scout-3.6.0-20110512-1520-Incubation.zip"/>
+ <zip date="20110131-1230" url="http://dowload.eclipse.org/scout/3.6/zip/S-scout-3.6.0M5-20110131-1230-Incubation.zip"/>
+ <zip date="20110130-1256" url="http://dowload.eclipse.org/scout/3.6/zip/N-scout-3.6.0M5-20110130-1256-Incubation.zip"/>
+ </release>
+</repository>
diff --git a/org.eclipse.scout.releng/.project b/org.eclipse.scout.releng/.project
new file mode 100644
index 0000000..2c12c9f
--- /dev/null
+++ b/org.eclipse.scout.releng/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.scout.releng</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.scout.releng/buildFiles/build.properties b/org.eclipse.scout.releng/buildFiles/build.properties
new file mode 100644
index 0000000..343e16d
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/build.properties
@@ -0,0 +1,242 @@
+##############################################################################
+ # Copyright (c) 2010 BSI Business Systems Integration AG.
+ # 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:
+ # BSI Business Systems Integration AG - initial API and implementation
+##############################################################################
+
+# debug
+# skipClean=true
+# skipSign=true
+# skipDownloadRepository=true
+# skipUpload=true
+incubation=false
+
+workspace=${env.WORKSPACE}
+relengRootDir=${workspace}/org.eclipse.scout.releng
+downloadDir=${relengRootDir}/download
+buildFileDir=${relengRootDir}/buildFiles
+templateDir=${relengRootDir}/templates
+testReportsDir=${workspace}/testReports
+preBuildDir=${workspace}/preBuild
+
+
+################# ECLIPSE RAP 1.5 INCUBATOR FEATURE #######################
+# (use nightly build from 2012-01-24). TODO: Switch to M5 as soon as released
+incubatorFileName=rap-incubator-1.5.0-N-20120124-0323.zip
+incubatorDownloadUrl=http://hudson.eclipse.org/hudson/job/rap-incubator-1.5/102/artifact/${incubatorFileName}
+
+
+################# ECLIPSE 3.5 #######################
+3.5_skipValidateBuild=false
+3.5_eclipseDrop=R-3.5.2-201002111343
+3.5_orbitDrop=R20110523182458
+3.5_pdeBuildPluginVersion=3.5.2.R35x_20100114
+3.5_equinoxLauncherPluginVersion=1.0.201.R35x_v20090715
+
+# classic eclipse
+3.5_eclipseFileName=eclipse-SDK-3.5.2-win32.zip
+3.5_eclipseDownloadUrl=http://archive.eclipse.org/eclipse/downloads/drops/${3.5_eclipseDrop}/${3.5_eclipseFileName}
+
+# eclipse rap runtime (use nightly build from 2012-01-24). TODO: Switch to M5 as soon as released
+3.5_eclipseRapFileName=rap-runtime-1.5.0-N-20120124-0216.zip
+3.5_eclipseRapDownloadUrl=http://hudson.eclipse.org/hudson/job/rap-runtime/495/artifact/${3.5_eclipseRapFileName}
+
+# delta pack
+3.5_eclipseDeltapackName=eclipse-3.5.2-delta-pack.zip
+3.5_eclipseDeltapackUrl=http://archive.eclipse.org/eclipse/downloads/drops/${3.5_eclipseDrop}/${3.5_eclipseDeltapackName}
+
+# test framework
+3.5_eclipseTestFrameworkName=eclipse-test-framework-3.5.2.zip
+3.5_eclipseTestFrameworkUrl=http://archive.eclipse.org/eclipse/downloads/drops/${3.5_eclipseDrop}/${3.5_eclipseTestFrameworkName}
+3.5_eclipseTestFrameworkSubFolder=
+
+# orbit
+3.5_orbitDropUrl=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/orbit/downloads/drops/${3.5_orbitDrop}/repository/plugins
+3.5_orbitDownloadPluginList=org.easymock_2.4.0.v20090202-0900.jar,javax.wsdl_1.5.1.v201012040544.jar,javax.xml_1.3.4.v201005080400.jar,org.apache.xerces_2.9.0.v201101211617.jar,org.apache.xml.resolver_1.2.0.v201005080400.jar,org.apache.xml.serializer_2.7.1.v201005080400.jar,org.apache.batik.css_1.6.0.v201011041432.jar,org.apache.batik.util.gui_1.6.0.v201011041432.jar,org.apache.batik.util_1.6.0.v201011041432.jar,org.w3c.dom.svg_1.1.0.v201011041433.jar,org.w3c.css.sac_1.3.1.v200903091627.jar,org.w3c.dom.smil_1.0.0.v200806040011.jar,org.apache.batik.bridge_1.6.0.v201011041432.jar,org.apache.batik.dom_1.6.0.v201011041432.jar,org.apache.batik.dom.svg_1.6.0.v201011041432.jar,org.apache.batik.ext.awt_1.6.0.v201011041432.jar,org.apache.batik.parser_1.6.0.v201011041432.jar,org.apache.batik.svggen_1.6.0.v201011041432.jar,org.apache.batik.swing_1.6.0.v201011041432.jar,org.apache.batik.transcoder_1.6.0.v201011041432.jar,org.apache.batik.xml_1.6.0.v201011041432.jar,org.w3c.dom.events_3.0.0.draft20060413_v201105210656.jar
+
+
+################# ECLIPSE 3.6 #######################
+3.6_skipValidateBuild=true
+3.6_eclipseDrop=R-3.6.2-201102101200
+3.6_orbitDrop=R20110523182458
+3.6_pdeBuildPluginVersion=3.6.2.R36x_20110203
+3.6_equinoxLauncherPluginVersion=1.1.1.R36x_v20101122_1400
+
+# classic eclipse
+3.6_eclipseFileName=eclipse-SDK-3.6.2-win32.zip
+3.6_eclipseDownloadUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.6_eclipseDrop}/${3.6_eclipseFileName}
+
+# eclipse rap runtime (use nightly build from 2012-01-24). TODO: Switch to M5 as soon as released
+3.6_eclipseRapFileName=rap-runtime-1.5.0-N-20120124-0216.zip
+3.6_eclipseRapDownloadUrl=http://hudson.eclipse.org/hudson/job/rap-runtime/495/artifact/${3.6_eclipseRapFileName}
+
+# delta pack
+3.6_eclipseDeltapackName=eclipse-3.6.2-delta-pack.zip
+3.6_eclipseDeltapackUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.6_eclipseDrop}/${3.6_eclipseDeltapackName}
+
+# test framework
+3.6_eclipseTestFrameworkName=eclipse-test-framework-3.6.2.zip
+3.6_eclipseTestFrameworkUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.6_eclipseDrop}/${3.6_eclipseTestFrameworkName}
+3.6_eclipseTestFrameworkSubFolder=
+
+# orbit
+3.6_orbitDropUrl=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/orbit/downloads/drops/${3.6_orbitDrop}/repository/plugins
+3.6_orbitDownloadPluginList=org.easymock_2.4.0.v20090202-0900.jar,javax.wsdl_1.5.1.v201012040544.jar,javax.xml_1.3.4.v201005080400.jar,org.apache.xerces_2.9.0.v201101211617.jar,org.apache.xml.resolver_1.2.0.v201005080400.jar,org.apache.xml.serializer_2.7.1.v201005080400.jar,org.apache.batik.css_1.6.0.v201011041432.jar,org.apache.batik.util.gui_1.6.0.v201011041432.jar,org.apache.batik.util_1.6.0.v201011041432.jar,org.w3c.dom.svg_1.1.0.v201011041433.jar,org.w3c.css.sac_1.3.1.v200903091627.jar,org.w3c.dom.smil_1.0.0.v200806040011.jar,org.apache.batik.bridge_1.6.0.v201011041432.jar,org.apache.batik.dom_1.6.0.v201011041432.jar,org.apache.batik.dom.svg_1.6.0.v201011041432.jar,org.apache.batik.ext.awt_1.6.0.v201011041432.jar,org.apache.batik.parser_1.6.0.v201011041432.jar,org.apache.batik.svggen_1.6.0.v201011041432.jar,org.apache.batik.swing_1.6.0.v201011041432.jar,org.apache.batik.transcoder_1.6.0.v201011041432.jar,org.apache.batik.xml_1.6.0.v201011041432.jar,org.w3c.dom.events_3.0.0.draft20060413_v201105210656.jar
+
+
+################# ECLIPSE 3.7 #######################
+3.7_skipValidateBuild=false
+3.7_eclipseDrop=R-3.7.1-201109091335
+3.7_orbitDrop=R20110523182458
+3.7_pdeBuildPluginVersion=3.7.0.v20110512-1320
+3.7_equinoxLauncherPluginVersion=1.2.0.v20110502
+
+# classic eclipse
+3.7_eclipseFileName=eclipse-SDK-3.7.1-win32.zip
+3.7_eclipseDownloadUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.7_eclipseDrop}/${3.7_eclipseFileName}
+
+# eclipse rap runtime (use nightly build from 2012-01-24). TODO: Switch to M5 as soon as released
+3.7_eclipseRapFileName=rap-runtime-1.5.0-N-20120124-0216.zip
+3.7_eclipseRapDownloadUrl=http://hudson.eclipse.org/hudson/job/rap-runtime/495/artifact/${3.7_eclipseRapFileName}
+
+# delta pack
+3.7_eclipseDeltapackName=eclipse-3.7.1-delta-pack.zip
+3.7_eclipseDeltapackUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.7_eclipseDrop}/${3.7_eclipseDeltapackName}
+
+# test framework
+3.7_eclipseTestFrameworkName=eclipse-test-framework-3.7.1.zip
+3.7_eclipseTestFrameworkUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.7_eclipseDrop}/${3.7_eclipseTestFrameworkName}
+3.7_eclipseTestFrameworkSubFolder=/eclipse
+
+# orbit
+3.7_orbitDropUrl=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/orbit/downloads/drops/${3.7_orbitDrop}/repository/plugins
+3.7_orbitDownloadPluginList=org.easymock_2.4.0.v20090202-0900.jar,javax.wsdl_1.5.1.v201012040544.jar,javax.xml_1.3.4.v201005080400.jar,org.apache.xerces_2.9.0.v201101211617.jar,org.apache.xml.resolver_1.2.0.v201005080400.jar,org.apache.xml.serializer_2.7.1.v201005080400.jar,org.apache.batik.css_1.6.0.v201011041432.jar,org.apache.batik.util.gui_1.6.0.v201011041432.jar,org.apache.batik.util_1.6.0.v201011041432.jar,org.w3c.dom.svg_1.1.0.v201011041433.jar,org.w3c.css.sac_1.3.1.v200903091627.jar,org.w3c.dom.smil_1.0.0.v200806040011.jar,org.apache.batik.bridge_1.6.0.v201011041432.jar,org.apache.batik.dom_1.6.0.v201011041432.jar,org.apache.batik.dom.svg_1.6.0.v201011041432.jar,org.apache.batik.ext.awt_1.6.0.v201011041432.jar,org.apache.batik.parser_1.6.0.v201011041432.jar,org.apache.batik.svggen_1.6.0.v201011041432.jar,org.apache.batik.swing_1.6.0.v201011041432.jar,org.apache.batik.transcoder_1.6.0.v201011041432.jar,org.apache.batik.xml_1.6.0.v201011041432.jar,org.w3c.dom.events_3.0.0.draft20060413_v201105210656.jar
+
+
+################# ECLIPSE 3.8 #######################
+3.8_skipValidateBuild=false
+3.8_eclipseDrop=S-3.8M4-201112091447
+3.8_orbitDrop=R20110523182458
+3.8_pdeBuildPluginVersion=3.8.0.v20111116-2011
+3.8_equinoxLauncherPluginVersion=1.3.0.v20111107-1631
+
+# classic eclipse
+3.8_eclipseFileName=eclipse-SDK-3.8M4-win32.zip
+3.8_eclipseDownloadUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.8_eclipseDrop}/${3.8_eclipseFileName}
+
+# eclipse rap runtime (use nightly build from 2012-01-24). TODO: Switch to M5 as soon as released
+3.8_eclipseRapFileName=rap-runtime-1.5.0-N-20120124-0216.zip
+3.8_eclipseRapDownloadUrl=http://hudson.eclipse.org/hudson/job/rap-runtime/495/artifact/${3.8_eclipseRapFileName}
+
+# delta pack
+3.8_eclipseDeltapackName=eclipse-3.8M4-delta-pack.zip
+3.8_eclipseDeltapackUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.8_eclipseDrop}/${3.8_eclipseDeltapackName}
+
+# test framework
+3.8_eclipseTestFrameworkName=eclipse-test-framework-3.8M4.zip
+3.8_eclipseTestFrameworkUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.8_eclipseDrop}/${3.8_eclipseTestFrameworkName}
+3.8_eclipseTestFrameworkSubFolder=/eclipse
+
+# orbit
+3.8_orbitDropUrl=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/orbit/downloads/drops/${3.8_orbitDrop}/repository/plugins
+3.8_orbitDownloadPluginList=org.easymock_2.4.0.v20090202-0900.jar,javax.wsdl_1.5.1.v201012040544.jar,javax.xml_1.3.4.v201005080400.jar,org.apache.xerces_2.9.0.v201101211617.jar,org.apache.xml.resolver_1.2.0.v201005080400.jar,org.apache.xml.serializer_2.7.1.v201005080400.jar,org.apache.batik.css_1.6.0.v201011041432.jar,org.apache.batik.util.gui_1.6.0.v201011041432.jar,org.apache.batik.util_1.6.0.v201011041432.jar,org.w3c.dom.svg_1.1.0.v201011041433.jar,org.w3c.css.sac_1.3.1.v200903091627.jar,org.w3c.dom.smil_1.0.0.v200806040011.jar,org.apache.batik.bridge_1.6.0.v201011041432.jar,org.apache.batik.dom_1.6.0.v201011041432.jar,org.apache.batik.dom.svg_1.6.0.v201011041432.jar,org.apache.batik.ext.awt_1.6.0.v201011041432.jar,org.apache.batik.parser_1.6.0.v201011041432.jar,org.apache.batik.svggen_1.6.0.v201011041432.jar,org.apache.batik.swing_1.6.0.v201011041432.jar,org.apache.batik.transcoder_1.6.0.v201011041432.jar,org.apache.batik.xml_1.6.0.v201011041432.jar,org.w3c.dom.events_3.0.0.draft20060413_v201105210656.jar
+
+
+################# ECLIPSE 4.1 #######################
+4.1_skipValidateBuild=false
+4.1_eclipseDrop=R-4.1.1-201109121510
+4.1_orbitDrop=R20110523182458
+4.1_pdeBuildPluginVersion=3.7.0.v20110512-1320
+4.1_equinoxLauncherPluginVersion=1.2.0.v20110502
+
+# classic eclipse
+4.1_eclipseFileName=eclipse-SDK-4.1.1-win32.zip
+4.1_eclipseDownloadUrl=http://download.eclipse.org/eclipse/downloads/drops4/${4.1_eclipseDrop}/${4.1_eclipseFileName}
+
+# eclipse rap runtime (use nightly build from 2012-01-24). TODO: Switch to M5 as soon as released
+4.1_eclipseRapFileName=rap-runtime-1.5.0-N-20120124-0216.zip
+4.1_eclipseRapDownloadUrl=http://hudson.eclipse.org/hudson/job/rap-runtime/495/artifact/${4.1_eclipseRapFileName}
+
+# delta pack (use version of 3.7 because 4.1 has no own delta pack)
+4.1_eclipseDeltapackName=${3.7_eclipseDeltapackName}
+4.1_eclipseDeltapackUrl=${3.7_eclipseDeltapackUrl}
+
+# test framework (use version of 3.7 because 4.1 has no own delta pack)
+4.1_eclipseTestFrameworkName=${3.7_eclipseTestFrameworkName}
+4.1_eclipseTestFrameworkUrl=${3.7_eclipseTestFrameworkUrl}
+4.1_eclipseTestFrameworkSubFolder=${3.7_eclipseTestFrameworkSubFolder}
+
+# orbit
+4.1_orbitDropUrl=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/orbit/downloads/drops/${4.1_orbitDrop}/repository/plugins
+4.1_orbitDownloadPluginList=org.easymock_2.4.0.v20090202-0900.jar,javax.wsdl_1.5.1.v201012040544.jar,javax.xml_1.3.4.v201005080400.jar,org.apache.xerces_2.9.0.v201101211617.jar,org.apache.xml.resolver_1.2.0.v201005080400.jar,org.apache.xml.serializer_2.7.1.v201005080400.jar,org.apache.batik.css_1.6.0.v201011041432.jar,org.apache.batik.util.gui_1.6.0.v201011041432.jar,org.apache.batik.util_1.6.0.v201011041432.jar,org.w3c.dom.svg_1.1.0.v201011041433.jar,org.w3c.css.sac_1.3.1.v200903091627.jar,org.w3c.dom.smil_1.0.0.v200806040011.jar,org.apache.batik.bridge_1.6.0.v201011041432.jar,org.apache.batik.dom_1.6.0.v201011041432.jar,org.apache.batik.dom.svg_1.6.0.v201011041432.jar,org.apache.batik.ext.awt_1.6.0.v201011041432.jar,org.apache.batik.parser_1.6.0.v201011041432.jar,org.apache.batik.svggen_1.6.0.v201011041432.jar,org.apache.batik.swing_1.6.0.v201011041432.jar,org.apache.batik.transcoder_1.6.0.v201011041432.jar,org.apache.batik.xml_1.6.0.v201011041432.jar,org.w3c.dom.events_3.0.0.draft20060413_v201105210656.jar
+
+
+################# ECLIPSE 4.2 #######################
+4.2_skipValidateBuild=false
+4.2_eclipseDrop=S-4.2M4-201112092100
+4.2_orbitDrop=R20110523182458
+4.2_pdeBuildPluginVersion=3.8.0.v20111116-2011
+4.2_equinoxLauncherPluginVersion=1.3.0.v20111107-1631
+
+# classic eclipse
+4.2_eclipseFileName=eclipse-SDK-4.2M4-win32.zip
+4.2_eclipseDownloadUrl=http://download.eclipse.org/eclipse/downloads/drops4/${4.2_eclipseDrop}/${4.2_eclipseFileName}
+
+# eclipse rap runtime (use nightly build from 2012-01-24). TODO: Switch to M5 as soon as released
+4.2_eclipseRapFileName=rap-runtime-1.5.0-N-20120124-0216.zip
+4.2_eclipseRapDownloadUrl=http://hudson.eclipse.org/hudson/job/rap-runtime/495/artifact/${4.2_eclipseRapFileName}
+
+# delta pack
+###TODO: delta pack for 4.2 is missing?
+4.2_eclipseDeltapackName=eclipse-SDK-4.2M4-win32.zip
+4.2_eclipseDeltapackUrl=http://download.eclipse.org/eclipse/downloads/drops4/${4.2_eclipseDrop}/${4.2_eclipseDeltapackName}
+
+# test framework
+###TODO: test framework for 4.2 is missing?
+4.2_eclipseTestFrameworkName=eclipse-test-framework-3.8M4.zip
+4.2_eclipseTestFrameworkUrl=http://download.eclipse.org/eclipse/downloads/drops/${3.8_eclipseDrop}/${3.8_eclipseTestFrameworkName}
+4.2_eclipseTestFrameworkSubFolder=/eclipse
+
+# orbit
+4.2_orbitDropUrl=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/orbit/downloads/drops/${4.2_orbitDrop}/repository/plugins
+4.2_orbitDownloadPluginList=org.easymock_2.4.0.v20090202-0900.jar,javax.wsdl_1.5.1.v201012040544.jar,org.apache.xerces_2.9.0.v201101211617.jar,org.apache.xml.resolver_1.2.0.v201005080400.jar,org.apache.xml.serializer_2.7.1.v201005080400.jar,org.apache.batik.bridge_1.6.0.v201011041432.jar,org.apache.batik.dom_1.6.0.v201011041432.jar,org.apache.batik.dom.svg_1.6.0.v201011041432.jar,org.apache.batik.ext.awt_1.6.0.v201011041432.jar,org.apache.batik.parser_1.6.0.v201011041432.jar,org.apache.batik.svggen_1.6.0.v201011041432.jar,org.apache.batik.swing_1.6.0.v201011041432.jar,org.apache.batik.transcoder_1.6.0.v201011041432.jar,org.apache.batik.xml_1.6.0.v201011041432.jar,org.w3c.dom.events_3.0.0.draft20060413_v201105210656.jar
+
+
+# Describes all plugins that are part of the newest eclipse platform (4.2) but do not exist for the oldest (3.5).
+# These plugins have not been downloaded from orbit because they already exist in the final build eclipse platform.
+# But these plugins need to be part of the ZIP file provided on the scout homepage for download because this zip file could also be used with e.g. eclipse 3.5
+# Therefore: this list is copied into the final zip file (together with all orbit downloads for the final build).
+finalZipLegacyPluginList=**/*javax.xml_1.3.4.v201005080400.jar,**/*org.apache.batik.css_1.6.0.v201011041432.jar,**/*org.apache.batik.util.gui_1.6.0.v201011041432.jar,**/*org.apache.batik.util_1.6.0.v201011041432.jar,**/*org.w3c.dom.svg_1.1.0.v201011041433.jar,**/*org.w3c.css.sac_1.3.1.v200903091627.jar,**/*org.w3c.dom.smil_1.0.0.v200806040011.jar
+
+
+# the version to build the p2 repository and dropin zip
+# the version choosed here can be excluded in validation by setting (e.g. 3.6_skipValidateBuild=true)
+finalBuildVersion=3.6
+
+
+signInputFolder=/home/data/httpd/download-staging.priv/technology/scout/nightly/in
+signOutputFolder=/home/data/httpd/download-staging.priv/technology/scout/nightly/out
+
+
+versionMajor=3
+versionMinor=8
+versionMicro=0
+#versionMilestone=M4
+versionMilestone=N
+eclipseVersion=[3.5,4.2]
+
+scoutRepositoryFolder=nightly
+#scoutRepositoryFolder=3.8/M4
+
+scoutDownloadLocation=/home/data/httpd/download.eclipse.org/scout/
+
+# the effectiv number of versions is nightlyKeepVersions+1
+nightlyKeepVersions=4
+
+# stagingAreaFolder=stagingAreaManual
+stagingAreaFolder=stagingArea
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/build.xml b/org.eclipse.scout.releng/buildFiles/build.xml
new file mode 100644
index 0000000..510f1b4
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/build.xml
@@ -0,0 +1,221 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+
+<project name="scout.releng" default="build">
+ <property environment="env" />
+ <property file="build.properties" />
+ <taskdef resource="net/sf/antcontrib/antlib.xml">
+ <classpath>
+ <pathelement location="${buildFileDir}/lib/ant-contrib-1.0b3.jar" />
+ </classpath>
+ </taskdef>
+
+ <tstamp>
+ <format property="buildTimestamp" pattern="yyyyMMdd-HHmm" />
+ <format property="featureTimestamp" pattern="yyyyMMddHHmm" />
+ </tstamp>
+
+ <!-- condition properties -->
+ <condition property="major" value="${versionMajor}">
+ <isset property="versionMajor" />
+ </condition>
+ <property name="major" value="" />
+
+ <condition property="minor" value=".${versionMinor}">
+ <and>
+ <isset property="versionMajor" />
+ <isset property="versionMinor" />
+ </and>
+ </condition>
+ <property name="minor" value="" />
+
+ <condition property="micro" value=".${versionMicro}">
+ <and>
+ <isset property="versionMinor" />
+ <isset property="versionMicro" />
+ </and>
+ </condition>
+ <property name="micro" value="" />
+
+ <property name="scoutVersion" value="${major}${minor}${micro}" />
+
+ <condition property="conditionSkipClean">
+ <istrue value="${skipClean}" />
+ </condition>
+
+ <condition property="conditionCheckStaged">
+ <and>
+ <available file="${scoutDownloadLocation}/${stagingAreaFolder}/doStage" />
+ <isfalse value="${skipUpload}" />
+ <isfalse value="${testBuild}" />
+ </and>
+ </condition>
+
+ <target name="build">
+ <!-- prepare junit test report folders -->
+ <delete dir="${testReportsDir}" failonerror="false" />
+ <mkdir dir="${testReportsDir}"/>
+
+ <!-- run compatibility pre-builds against the defined platform version -->
+ <delete dir="${preBuildDir}" failonerror="false" />
+ <mkdir dir="${preBuildDir}" />
+ <antcall target="preBuildVersion">
+ <param name="eclipsePlatformVersion" value="3.5" />
+ <param name="compatFragmentVersion" value="v35" />
+ </antcall>
+ <antcall target="preBuildVersion">
+ <param name="eclipsePlatformVersion" value="3.6" />
+ <param name="compatFragmentVersion" value="v36v37v41" />
+ </antcall>
+ <antcall target="preBuildVersion">
+ <param name="eclipsePlatformVersion" value="3.8" />
+ <param name="compatFragmentVersion" value="v38v42" />
+ </antcall>
+
+ <!-- run test builds -->
+ <antcall target="precheck" />
+ <for list="3.5,3.6,3.7,3.8,4.1,4.2" param="version">
+ <sequential>
+ <propertycopy name="skipValidateBuildVersion" from="@{version}_skipValidateBuild" />
+ <if><equals arg1="${skipValidateBuildVersion}" arg2="true" /><then></then>
+ <else>
+ <antcall target="buildVersion">
+ <param name="eclipsePlatformVersion" value="@{version}" />
+ </antcall>
+ </else>
+ </if>
+ </sequential>
+ </for>
+
+ <!-- run final build -->
+ <property name="doFinalBuild" value="true" />
+ <antcall target="buildVersion">
+ <param name="eclipsePlatformVersion" value="${finalBuildVersion}" />
+ </antcall>
+
+ <!-- remove pre-built features again (no longer needed) -->
+ <delete dir="${preBuildDir}" failonerror="false" />
+ </target>
+
+ <!-- expects property "eclipsePlatformVersion" -->
+ <target name="preBuildVersion" depends="clean">
+ <!-- extract properties based on current version built -->
+ <propertycopy name="eclipseFileName" from="${eclipsePlatformVersion}_eclipseFileName" />
+ <propertycopy name="eclipseDownloadUrl" from="${eclipsePlatformVersion}_eclipseDownloadUrl" />
+ <propertycopy name="eclipseRapDownloadUrl" from="${eclipsePlatformVersion}_eclipseRapDownloadUrl" />
+ <propertycopy name="eclipseRapFileName" from="${eclipsePlatformVersion}_eclipseRapFileName" />
+ <propertycopy name="eclipseDeltapackName" from="${eclipsePlatformVersion}_eclipseDeltapackName" />
+ <propertycopy name="eclipseDeltapackUrl" from="${eclipsePlatformVersion}_eclipseDeltapackUrl" />
+ <propertycopy name="pdeBuildPluginVersion" from="${eclipsePlatformVersion}_pdeBuildPluginVersion" />
+ <propertycopy name="equinoxLauncherPluginVersion" from="${eclipsePlatformVersion}_equinoxLauncherPluginVersion" />
+ <propertycopy name="orbitDownloadPluginList" from="${eclipsePlatformVersion}_orbitDownloadPluginList" />
+ <propertycopy name="orbitDropUrl" from="${eclipsePlatformVersion}_orbitDropUrl" />
+ <propertycopy name="eclipseTestFrameworkName" from="${eclipsePlatformVersion}_eclipseTestFrameworkName" />
+ <propertycopy name="eclipseTestFrameworkUrl" from="${eclipsePlatformVersion}_eclipseTestFrameworkUrl" />
+ <propertycopy name="eclipseTestFrameworkSubFolder" from="${eclipsePlatformVersion}_eclipseTestFrameworkSubFolder" />
+
+ <antcall target="setupEclipse">
+ <param name="workingDir" value="${relengRootDir}/working" />
+ <param name="buildDataDir" value="${relengRootDir}/working/buildData" />
+ </antcall>
+ <ant antfile="${buildFileDir}/step020_buildFeatures.xml" target="preBuild">
+ <property name="workingDir" value="${relengRootDir}/working" />
+ <property name="buildDataDir" value="${relengRootDir}/working/buildData" />
+ </ant>
+ </target>
+
+ <!-- expects property "eclipsePlatformVersion" -->
+ <target name="buildVersion" depends="clean">
+ <echo message="BUILD USING ECLIPSE VERSION ${eclipsePlatformVersion}" />
+ <property name="workingDirRap" value="${relengRootDir}/workingRap" />
+ <property name="workingDirNonRap" value="${relengRootDir}/working" />
+
+ <!-- extract properties based on current version built -->
+ <propertycopy name="eclipseFileName" from="${eclipsePlatformVersion}_eclipseFileName" />
+ <propertycopy name="eclipseDownloadUrl" from="${eclipsePlatformVersion}_eclipseDownloadUrl" />
+ <propertycopy name="eclipseRapDownloadUrl" from="${eclipsePlatformVersion}_eclipseRapDownloadUrl" />
+ <propertycopy name="eclipseRapFileName" from="${eclipsePlatformVersion}_eclipseRapFileName" />
+ <propertycopy name="eclipseDeltapackName" from="${eclipsePlatformVersion}_eclipseDeltapackName" />
+ <propertycopy name="eclipseDeltapackUrl" from="${eclipsePlatformVersion}_eclipseDeltapackUrl" />
+ <propertycopy name="pdeBuildPluginVersion" from="${eclipsePlatformVersion}_pdeBuildPluginVersion" />
+ <propertycopy name="equinoxLauncherPluginVersion" from="${eclipsePlatformVersion}_equinoxLauncherPluginVersion" />
+ <propertycopy name="orbitDownloadPluginList" from="${eclipsePlatformVersion}_orbitDownloadPluginList" />
+ <propertycopy name="orbitDropUrl" from="${eclipsePlatformVersion}_orbitDropUrl" />
+ <propertycopy name="eclipseTestFrameworkName" from="${eclipsePlatformVersion}_eclipseTestFrameworkName" />
+ <propertycopy name="eclipseTestFrameworkUrl" from="${eclipsePlatformVersion}_eclipseTestFrameworkUrl" />
+ <propertycopy name="eclipseTestFrameworkSubFolder" from="${eclipsePlatformVersion}_eclipseTestFrameworkSubFolder" />
+
+ <!-- build RT, SDK, RAP SDK based on Classic Eclipse in own working dir -->
+ <antcall target="setupEclipse">
+ <param name="workingDir" value="${workingDirNonRap}" />
+ <param name="buildDataDir" value="${workingDirNonRap}/buildData" />
+ </antcall>
+ <ant antfile="${buildFileDir}/step020_buildFeatures.xml" target="build">
+ <property name="workingDir" value="${workingDirNonRap}"/>
+ <property name="buildDataDir" value="${workingDirNonRap}/buildData" />
+ </ant>
+
+ <!-- build RAP RT based on RAP Eclipse in own working dir (only eclipse >= 3.6) -->
+ <if><equals arg1="${eclipsePlatformVersion}" arg2="3.5" /><then></then>
+ <else>
+ <!-- eclipse RAP runtime requires at least eclipse 3.6: dont build scout rap against eclipse 3.5 -->
+ <antcall target="setupEclipse">
+ <param name="workingDir" value="${workingDirRap}" />
+ <param name="buildDataDir" value="${workingDirRap}/buildData" />
+ </antcall>
+ <property name="nonRapBuildDataDir" value="${workingDirNonRap}/buildData" />
+ <ant antfile="${buildFileDir}/step020_buildFeatures.xml" target="buildRap">
+ <property name="workingDir" value="${workingDirRap}"/>
+ <property name="buildDataDir" value="${workingDirRap}/buildData" />
+ </ant>
+ </else>
+ </if>
+
+ <!-- do final build -->
+ <antcall target="finalBuild">
+ <param name="workingDir" value="${workingDirNonRap}" />
+ <param name="buildDataDir" value="${workingDirNonRap}/buildData" />
+ </antcall>
+ </target>
+
+ <target name="finalBuild" if="doFinalBuild">
+ <ant antfile="${buildFileDir}/step010_downloadRepository.xml" target="build" />
+ <ant antfile="${buildFileDir}/step030_archiveAll.xml" target="build" />
+ <ant antfile="${buildFileDir}/step050_pack200Normalize.xml" target="build" />
+ <ant antfile="${buildFileDir}/step060_sign.xml" target="build" />
+ <ant antfile="${buildFileDir}/step100_zipUnpack.xml" target="build" />
+ <ant antfile="${buildFileDir}/step110_zipCreate.xml" target="build" />
+ <ant antfile="${buildFileDir}/step200_p2Pack200.xml" target="build" />
+ <ant antfile="${buildFileDir}/step210_p2mergeRepository.xml" target="build" />
+ <ant antfile="${buildFileDir}/step220_p2metadata.xml" target="build" />
+ <ant antfile="${buildFileDir}/step230_p2categorize.xml" target="build" />
+ <ant antfile="${buildFileDir}/upload.xml" target="build" />
+ <antcall target="clean"/>
+ </target>
+
+ <target name="clean" unless="conditionSkipClean">
+ <echo message="clean working dirs" />
+ <delete failonerror="false" dir="${relengRootDir}/working" />
+ <delete failonerror="false" dir="${relengRootDir}/workingRap" />
+ </target>
+
+ <target name="precheck" depends="checkStaged">
+ </target>
+
+ <target name="checkStaged" if="conditionCheckStaged">
+ <fail message="already staged. Ensure the staged build is applied to the repository!" />
+ </target>
+
+ <target name="setupEclipse" unless="skipInstallEclipse">
+ <mkdir dir="${workingDir}" />
+ <ant antfile="${buildFileDir}/setupEclipse.xml" target="setupEclipse" />
+ </target>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/compositeRepository/build.properties b/org.eclipse.scout.releng/buildFiles/compositeRepository/build.properties
new file mode 100644
index 0000000..402144c
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/compositeRepository/build.properties
@@ -0,0 +1,19 @@
+##############################################################################
+ # Copyright (c) 2010 BSI Business Systems Integration AG.
+ # 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:
+ # BSI Business Systems Integration AG - initial API and implementation
+##############################################################################
+
+repositoryLocation=http://download.eclipse.org/scout/3.7/update
+# repositoryLocation=D:/Temp/max24h/eclipseBuild/compositeRepo/update
+# mode=[add|remove]
+mode=add
+# repository=../SP1_RC4/update
+repository=../R/update
+
+repositoryName=Scout Indigo Repository
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/compositeRepository/build.xml b/org.eclipse.scout.releng/buildFiles/compositeRepository/build.xml
new file mode 100644
index 0000000..435630d
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/compositeRepository/build.xml
@@ -0,0 +1,106 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+
+<project name="scout.releng.compositeRepository" default="build">
+ <property environment="env" />
+ <property file="../build.properties" />
+ <property file="./build.properties" />
+
+ <target name="clean">
+ <delete dir="${relengRootDir}/working" />
+ </target>
+
+ <target name="build" depends="clean">
+ <property name="eclipseFileName" value="${3.6_eclipseFileName}" />
+ <property name="eclipseDownloadUrl" value="${3.6_eclipseDownloadUrl}" />
+ <property name="eclipseDeltapackName" value="${3.6_eclipseDeltapackName}" />
+ <property name="eclipseDeltapackUrl" value="${3.6_eclipseDeltapackUrl}" />
+ <property name="pdeBuildPluginVersion" value="${3.6_pdeBuildPluginVersion}" />
+ <property name="equinoxLauncherPluginVersion" value="${3.6_equinoxLauncherPluginVersion}" />
+
+ <condition property="conditionRemoteRepo">
+ <matches pattern="http.*" string="${repositoryLocation}"/>
+ </condition>
+
+
+ <antcall target="setupEclipse" />
+ <antcall target="download" />
+ <antcall target="compositeRepository" />
+
+ </target>
+
+
+ <target name="compositeRepository">
+ <java classname="org.eclipse.equinox.launcher.Main" fork="true" failonerror="true">
+ <arg line="-application org.eclipse.ant.core.antRunner " />
+ <arg line="-buildfile ${relengRootDir}/buildFiles/compositeRepository/createRepo.xml" />
+ <arg line="-DrelengRootDir=${relengRootDir}" />
+ <arg line="-Djavahome=${env.JAVA_HOME}" />
+ <arg line="-DjavacDebugInfo=true" />
+ <classpath>
+ <pathelement location="${relengRootDir}/working/eclipse/plugins/org.eclipse.equinox.launcher_${equinoxLauncherPluginVersion}.jar" />
+ </classpath>
+ </java>
+ </target>
+
+ <target name="setupEclipse">
+ <mkdir dir="${relengRootDir}/working" />
+ <ant antfile="${buildFileDir}/setupEclipse.xml" target="setupEclipse" />
+ </target>
+
+ <target name="download" >
+ <mkdir dir="${buildDataDir}/compositeRepository" />
+ <antcall target="downloadRemote" />
+ <antcall target="downloadLocal" />
+ </target>
+
+ <target name="downloadRemote" if="conditionRemoteRepo">
+ <get dest="${buildDataDir}/compositeRepository/compositeArtifacts.xml" src="${repositoryLocation}/compositeArtifacts.xml" ignoreerrors="true" />
+ <get dest="${buildDataDir}/compositeRepository/compositeContent.xml" src="${repositoryLocation}/compositeContent.xml" ignoreerrors="true" />
+ </target>
+
+ <target name="downloadLocal" unless="conditionRemoteRepo" >
+ <copy todir="${buildDataDir}/compositeRepository">
+ <fileset dir="${repositoryLocation}">
+ <include name="compositeArtifacts.xml"/>
+ <include name="compositeContent.xml"/>
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="create">
+ <mkdir dir="${repoDir}" />
+ <p2.composite.repository>
+ <repository compressed="false" name="${repoName}" location="${repoDir}" />
+ </p2.composite.repository>
+ </target>
+
+ <target name="add">
+ <p2.composite.repository>
+ <repository compressed="false" location="${repoDir}" />
+ <add>
+ <repository location="${repoName}" />
+ </add>
+ </p2.composite.repository>
+ </target>
+
+ <target name="remove">
+ <p2.composite.repository>
+ <repository compressed="false" location="${repoDir}" />
+ <remove>
+ <repository location="${repoName}" />
+ </remove>
+ </p2.composite.repository>
+ </target>
+
+
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/compositeRepository/createRepo.xml b/org.eclipse.scout.releng/buildFiles/compositeRepository/createRepo.xml
new file mode 100644
index 0000000..5825f26
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/compositeRepository/createRepo.xml
@@ -0,0 +1,53 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+
+<project name="scout.releng.compositeRepository" default="build">
+ <property environment="env" />
+ <property file="../build.properties" />
+ <property file="./build.properties" />
+
+ <target name="clean">
+
+ </target>
+
+ <target name="build" depends="clean">
+ <condition property="conditionAdd">
+ <equals arg1="add" arg2="${mode}" />
+ </condition>
+
+ <condition property="conditionRemove">
+ <equals arg1="remove" arg2="${mode}" />
+ </condition>
+ <antcall target="add" />
+ <antcall target="remove" />
+ </target>
+
+ <target name="add" if="conditionAdd">
+ <echo message="do add"></echo>
+ <p2.composite.repository>
+ <repository compressed="false" location="file:/${buildDataDir}/compositeRepository" name="${repositoryName}"/>
+ <add>
+ <repository location="${repository}" />
+ </add>
+ </p2.composite.repository>
+ </target>
+
+ <target name="remove" if="conditionRemove">
+ <echo message="do remove"></echo>
+ <p2.composite.repository>
+ <repository compressed="false" location="file:/${buildDataDir}/compositeRepository" name="${repositoryName}" />
+ <remove>
+ <repository location="${repository}" />
+ </remove>
+ </p2.composite.repository>
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/featureBuild/build.properties b/org.eclipse.scout.releng/buildFiles/featureBuild/build.properties
new file mode 100644
index 0000000..44cfc77
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/featureBuild/build.properties
@@ -0,0 +1,262 @@
+##############################################################################
+ # Copyright (c) 2010 BSI Business Systems Integration AG.
+ # 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:
+ # BSI Business Systems Integration AG - initial API and implementation
+##############################################################################
+
+buildBundleName=org.eclipse.scout.releng
+
+# BUILD SOURCE
+individualSourceBundles=true
+
+#The type of the top level element we are building, generally "feature"
+topLevelElementType = feature
+#The id of the top level element we are building
+topLevelElementId = org.eclipse.scout.rt.feature
+
+######### P2 #################33
+# p2.gathering=true
+# p2.category.definition=file:${workspace}/org.eclipse.scout.sdk.feature/scoutCategory.xml
+# p2.compress=true
+
+############# PRODUCT/PACKAGING CONTROL #############
+product=/plugin or feature id/path/to/.product
+runPackager=false
+# product=${build.bundle}/scoutRt.product
+# runPackager=true
+
+#Set the name of the archive that will result from the product build.
+#archiveNamePrefix=
+
+# The prefix that will be used in the generated archive.
+archivePrefix=eclipse
+
+# The location underwhich all of the build output will be collected.
+collectingFolder=export
+
+# The list of {os, ws, arch} configurations to build. This
+# value is a '&' separated list of ',' separate triples. For example,
+# configs=win32,win32,x86 & linux,motif,x86
+# By default the value is *,*,*
+configs = *, *, *
+#configs=win32, win32, x86 & \
+# win32,win32,x86_64 & \
+# win32,win32,wpf & \
+# linux, gtk, ppc & \
+# linux, gtk, x86 & \
+# linux, gtk, x86_64 & \
+# linux, motif, x86 & \
+# solaris, motif, sparc & \
+# solaris, gtk, sparc & \
+# aix, motif, ppc & \
+# hpux, motif, ia64_32 & \
+# macosx, carbon, ppc & \
+# macosx, carbon, x86 & \
+# macosx, cocoa, ppc & \
+# macosx, cocoa, x86 & \
+# macosx, cocoa, x86_64
+
+
+
+# By default PDE creates one archive (result) per entry listed in the configs property.
+# Setting this value to true will cause PDE to only create one output containing all
+# artifacts for all the platforms listed in the configs property.
+# To control the output format for the group, add a "group, group, group - <format>" entry to the
+# archivesFormat.
+#groupConfigurations=true
+
+#The format of the archive. By default a zip is created using antZip.
+#The list can only contain the configuration for which the desired format is different than zip.
+#archivesFormat=win32, win32, x86 - antZip& \
+# linux, gtk, ppc - antZip &\
+# linux, gtk, x86 - antZip& \
+# linux, gtk, x86_64 - antZip& \
+# linux, motif, x86 - antZip& \
+# solaris, motif, sparc - antZip& \
+# solaris, gtk, sparc - antZip& \
+# aix, motif, ppc - antZip& \
+# hpux, motif, PA_RISC - antZip& \
+# macosx, carbon, ppc - antZip
+
+#Allow cycles involving at most one bundle that needs to be compiled with the rest being binary bundles.
+allowBinaryCycles=true
+
+#Sort bundles depenedencies across all features instead of just within a given feature.
+flattenDependencies=true
+
+#Parallel compilation, requires flattenedDependencies=true
+parallelCompilation=true
+#parallelThreadCount=
+#parallelThreadsPerProcessor=
+
+#Set to true if you want the output to be ready for an update jar (no site.xml generated)
+#outputUpdateJars = false
+
+#Set to true for Jnlp generation
+#codebase should be a URL that will be used as the root of all relative URLs in the output.
+#generateJnlp=false
+#jnlp.codebase=<codebase url>
+#jnlp.j2se=<j2se version>
+#jnlp.locale=<a locale>
+#jnlp.generateOfflineAllowed=true or false generate <offlineAllowed/> attribute in the generated features
+#jnlp.configs=${configs} #uncomment to filter the content of the generated jnlp files based on the configuration being built
+
+#Set to true if you want to sign jars
+#signJars=false
+#sign.alias=<alias>
+#sign.keystore=<keystore location>
+#sign.storepass=<keystore password>
+#sign.keypass=<key password>
+
+#Arguments to send to the zip executable
+zipargs=
+
+#Arguments to send to the tar executable
+tarargs=
+
+#Control the creation of a file containing the version included in each configuration - on by default
+#generateVersionsLists=false
+
+############## NAMING CONTROL ################
+# The directory into which the build elements are fetched and where
+# the build takes place.
+
+buildDirectory=${relengRootDir}/working/buildData/step020/input
+
+destination.temp.folder=${relengRootDir}/working/buildData/step020/temp
+feature.directory=${relengRootDir}/working/buildData/step020/output
+
+# Type of build. Used in naming the build output. Typically this value is
+# one of I, N, M, S, ...
+# buildType=N
+
+# ID of the build. Used in naming the build output.
+buildId=${buildType}
+
+# Label for the build. Used in naming the build output
+buildLabel=${buildType}
+#.${buildId}
+
+# Timestamp for the build. Used in naming the build output
+timestamp=007
+
+#The value to be used for the qualifier of a plugin or feature when you want to override the value computed by pde.
+#The value will only be applied to plugin or features indicating build.properties, qualifier = context
+#forceContextQualifier=<the value for the qualifier>
+
+#Enable / disable the generation of a suffix for the features that use .qualifier.
+#The generated suffix is computed according to the content of the feature
+#generateFeatureVersionSuffix=true
+
+############# BASE CONTROL #############
+# Settings for the base Eclipse components and Java class libraries
+# against which you are building.
+# Base location for anything the build needs to compile against. For example,
+# in most RCP app or a plug-in, the baseLocation should be the location of a previously
+# installed Eclipse against which the application or plug-in code will be compiled and the RCP delta pack.
+
+# base=${relengRootDir}/working
+baseLocation=${relengRootDir}/working/eclipse
+
+#Folder containing repositories whose content is needed to compile against
+#repoBaseLocation=${base}/repos
+#Folder where the content of the repositories from ${repoBaseLocation} will be made available as a form suitable to be compiled against
+#transformedRepoLocation=${base}/transformedRepos
+
+#Os/Ws/Arch/nl of the eclipse specified by baseLocation
+baseos=win32
+basews=win32
+basearch=x86
+
+#this property indicates whether you want the set of plug-ins and features to be considered during the build to be limited to the ones reachable from the features / plugins being built
+filteredDependencyCheck=false
+
+#this property indicates whether the resolution should be done in development mode (i.e. ignore multiple bundles with singletons)
+resolution.devMode=false
+
+#pluginPath is a list of locations in which to find plugins and features. This list is separated by the platform file separator (; or :)
+#a location is one of:
+#- the location of the jar or folder that is the plugin or feature : /path/to/foo.jar or /path/to/foo
+#- a directory that contains a /plugins or /features subdirectory
+#- the location of a feature.xml, or for 2.1 style plugins, the plugin.xml or fragment.xml
+#pluginPath=
+
+skipBase=true
+
+############# MAP FILE CONTROL ################
+# This section defines CVS tags to use when fetching the map files from the repository.
+# If you want to fetch the map file from repository / location, change the getMapFiles target in the customTargets.xml
+
+skipMaps=true
+mapsRepo=:pserver:anonymous@example.com/path/to/repo
+mapsRoot=path/to/maps
+mapsCheckoutTag=HEAD
+
+#tagMaps=true
+# mapsTagTag=v${buildId}
+
+
+############ REPOSITORY CONTROL ###############
+# This section defines properties parameterizing the repositories where plugins, fragments
+# bundles and features are being obtained from.
+
+# The tags to use when fetching elements to build.
+# By default thebuilder will use whatever is in the maps.
+# This value takes the form of a comma separated list of repository identifier (like used in the map files) and the
+# overriding value
+# For example fetchTag=CVS=HEAD, SVN=v20050101
+# fetchTag=HEAD
+skipFetch=true
+
+
+############# JAVA COMPILER OPTIONS ##############
+# The location of the Java jars to compile against. Typically the rt.jar for your JDK/JRE
+bootclasspath=${javahome}/jre/lib/rt.jar${path.separator}${javahome}/lib/tools.jar${path.separator}${javahome}/jre/lib/jsse.jar${path.separator}${relengRootDir}/templates/endorsed/JavaSE-1.6/javax.mail.jre16_1.4.3.jar${path.separator}${relengRootDir}/templates/endorsed/javax.jms_1.1.0.jar
+
+# specific JRE locations to compile against. These values are used to compile bundles specifying a
+# Bundle-RequiredExecutionEnvironment. Uncomment and set values for environments that you support
+#CDC-1.0/Foundation-1.0= /path/to/rt.jar
+#CDC-1.1/Foundation-1.1=
+#OSGi/Minimum-1.0=
+#OSGi/Minimum-1.1=
+#JRE-1.1=
+#J2SE-1.2=
+#J2SE-1.3=
+#J2SE-1.4=
+#J2SE-1.5=
+JavaSE-1.6=${javahome}/jre/lib/rt.jar${path.separator}${javahome}/lib/tools.jar${path.separator}${javahome}/jre/lib/jsse.jar${path.separator}${relengRootDir}/templates/endorsed/JavaSE-1.6/javax.mail.jre16_1.4.3.jar${path.separator}${relengRootDir}/templates/endorsed/javax.jms_1.1.0.jar
+#JavaSE-1.6=${javahome}/jre/lib/rt.jar${path.separator}${javahome}/jre/lib/jsse.jar
+#PersonalJava-1.1=
+#PersonalJava-1.2=
+#CDC-1.0/PersonalBasis-1.0=
+#CDC-1.0/PersonalJava-1.0=
+#CDC-1.1/PersonalBasis-1.1=
+#CDC-1.1/PersonalJava-1.1=
+
+# Specify the output format of the compiler log when eclipse jdt is used
+logExtension=scoutRtBuild.log
+
+# Whether or not to include debug info in the output jars
+javacDebugInfo=true
+
+# Whether or not to fail the build if there are compiler errors
+javacFailOnError=true
+
+# Enable or disable verbose mode of the compiler
+javacVerbose=false
+
+# Extra arguments for the compiler. These are specific to the java compiler being used.
+#compilerArg=
+
+# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties
+javacSource=1.6
+
+# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties.
+javacTarget=1.6
+
+
diff --git a/org.eclipse.scout.releng/buildFiles/lib/ant-contrib-1.0b3.jar b/org.eclipse.scout.releng/buildFiles/lib/ant-contrib-1.0b3.jar
new file mode 100644
index 0000000..0625376
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/lib/ant-contrib-1.0b3.jar
Binary files differ
diff --git a/org.eclipse.scout.releng/buildFiles/lib/scoutAnt.jar b/org.eclipse.scout.releng/buildFiles/lib/scoutAnt.jar
new file mode 100644
index 0000000..a66a766
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/lib/scoutAnt.jar
Binary files differ
diff --git a/org.eclipse.scout.releng/buildFiles/macros/eclipse.xml b/org.eclipse.scout.releng/buildFiles/macros/eclipse.xml
new file mode 100644
index 0000000..0a74aa0
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/macros/eclipse.xml
@@ -0,0 +1,103 @@
+<!--
+ This project helps starting eclipse to build features or run test suites.
+
+ Add the following definitions to your ant build file to use this macros:
+ <import file="${basedir}/macros/eclipse.xml" />
+
+ Change History
+ ==============
+ date author comments
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 2011-12-08 mvi initial version
+-->
+<project name="Eclipse Ant Macros">
+
+ <!--
+ Launches eclipse and builds the given feature.
+ Please note: Feature Build expects that binaries of dependent features are already present.
+ So dependent features are not built automatically, only the plugins of the given features are built.
+ To ensure dependent features are present run the build for these features in the same workspace first.
+ The given eclipse installation must contain the deltapack
+
+ Attributes
+ ==========
+ All existing attributes must be provided. Please see below for description of each attribute.
+
+ Example
+ =======
+ <pde.build.feature eclipseBaseDir="${workspace}/working/eclipse" timestamp="${featureTimestamp}"
+ archivePrefix="myFeature" featureName="org.eclipse.scout.my.feature" buildType="N" pdeBuildPluginVersion="3.7.0.v20110512-1320" />
+
+ -->
+ <macrodef name="pde.build.feature" description="Builds the given feature">
+ <attribute name="eclipseBaseDir" /> <!-- The base directory pointing to the eclipse home to use to build the feature. this folder must contain e.g. the "plugins" folder. -->
+ <attribute name="timestamp" /> <!-- The timestamp to use for the build -->
+ <attribute name="archivePrefix" /> <!-- The name of the archive root folder -->
+ <attribute name="featureName" /> <!-- The feature to build -->
+ <attribute name="buildType" /> <!-- The build type (one of N=nightly, S=stable, R=release) -->
+ <attribute name="pdeBuildPluginVersion" /> <!-- The version of the "org.eclipse.pde.build" plugin to use -->
+ <sequential>
+ <java classname="org.eclipse.equinox.launcher.Main" maxmemory="512m" fork="true" failonerror="true">
+ <arg line="-application org.eclipse.ant.core.antRunner " />
+ <arg line="-buildfile @{eclipseBaseDir}/plugins/org.eclipse.pde.build_@{pdeBuildPluginVersion}/scripts/build.xml" />
+ <arg line="-Dtimestamp=@{timestamp}" />
+ <arg line="-DarchivePrefix=@{archivePrefix}" />
+ <arg line="-DforceContextQualifier=@{timestamp}" />
+ <arg line="-DtopLevelElementId=@{featureName}" />
+ <arg line="-Dbuilder=${buildFileDir}/featureBuild" />
+ <arg line="-DbaseLocation=@{eclipseBaseDir}" />
+ <arg line="-DrelengRootDir=${relengRootDir}" />
+ <arg line="-Djavahome=${env.JAVA_HOME}" />
+ <arg line="-DIndividualSourceBundles=true" />
+ <arg line="-DbuildType=@{buildType}" />
+ <arg line="-DjavacDebugInfo=true" />
+ <classpath>
+ <fileset dir="@{eclipseBaseDir}/plugins">
+ <include name="org.eclipse.equinox.launcher_*.jar"/>
+ </fileset>
+ </classpath>
+ </java>
+ </sequential>
+ </macrodef>
+
+ <!--
+ Launches eclipse and runs the given test suite.
+ Please note: The eclipse is started including UI to ensure all tests can be executed (might contain UI tests)
+ and that the behaviour of eclipse is the same as for the user.
+ The test plugin containing the test suite is expected to be part of the given eclipse platform.
+ The given eclipse installation must contain the deltapack and test framework.
+
+ Attributes
+ ==========
+ All existing attributes must be provided. Please see below for description of each attribute.
+
+ Example
+ =======
+ <pde.launch.test.suite workspaceBaseDir="${myEmptyTestWorkspace}" eclipseBaseDir="${workspace}/working/eclipse"
+ testPluginName="org.eclipse.my.test.plugin" testSuiteClassName="org.eclipse.my.test.plugin.suite.AllTestsSuite"
+ junitReportOutputFile="${workspace}/output/testReports/result.org.eclipse.my.test.plugin.xml" />
+
+ -->
+ <macrodef name="pde.launch.test.suite" description="Launches the given test suite in a new eclipse workbenach (with UI)">
+ <attribute name="workspaceBaseDir" /> <!-- The base directory of the workspace to use when running the tests. -->
+ <attribute name="eclipseBaseDir" /> <!-- The base directory pointing to the eclipse home to use to run the tests. this folder must contain e.g. the "plugins" folder. -->
+ <attribute name="testPluginName" /> <!-- The plugin symbolic name that contains the test suite class -->
+ <attribute name="testSuiteClassName" /> <!-- The fully qualified class name of the suite to start -->
+ <attribute name="junitReportOutputFile" /> <!-- The output filename (incl. path) where to store the test results -->
+ <sequential>
+ <java classname="org.eclipse.equinox.launcher.Main" maxmemory="512m" fork="true" failonerror="false">
+ <arg line="-application org.eclipse.test.uitestapplication " />
+ <arg line="-data @{workspaceBaseDir} " />
+ <arg line="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,@{junitReportOutputFile} " />
+ <arg line="-testPluginName @{testPluginName} " />
+ <arg line="-className @{testSuiteClassName} " />
+ <arg line="-nosplash " />
+ <classpath>
+ <fileset dir="@{eclipseBaseDir}/plugins">
+ <include name="org.eclipse.equinox.launcher_*.jar"/>
+ </fileset>
+ </classpath>
+ </java>
+ </sequential>
+ </macrodef>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/setupEclipse.xml b/org.eclipse.scout.releng/buildFiles/setupEclipse.xml
new file mode 100644
index 0000000..f4bea20
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/setupEclipse.xml
@@ -0,0 +1,94 @@
+<!-- Copyright (c) 2010 BSI Business Systems Integration AG. 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:
+ BSI Business Systems Integration AG - initial API and implementation -->
+
+<!--
+ expecting properties:
+ - downloadDir
+ the directory to download the eclipse and delta pack to. The download only occures if the two files do not exist.
+ - templateDir
+ the directory contains a dropins folder with some bundles or features.
+ - eclipseFileName
+ the name of the eclipse file to download e.g. eclipse-SDK-3.7M3-win32.zip
+
+ - eclipseDownloadUrl
+ the url to download the eclipse e.g. http://download.eclipse.org/eclipse/downloads/drops/S-3.7M3-201010281441/${eclipseFileName}
+ - eclipseDeltapackName
+ the eclipse delta pack file name e.g. eclipse-3.7M3-delta-pack.zip
+ - eclipseDeltapackUrl
+ the url to download the delta pack e.g. http://download.eclipse.org/eclipse/downloads/drops/S-3.7M3-201010281441/${eclipseDeltapackName}
+
+ -->
+<project name="setupEclipse" default="">
+ <property environment="env" />
+ <property file="build.properties" />
+
+ <target name="setupEclipse" depends="downloadEclipse, downloadRapEclipse, downloadRapIncubator, downloadDeltapack, downloadAllDropins, downloadTestFramework">
+ <!-- setup eclipse to the ${workingDir} -->
+ <!-- unzip eclipse and delta pack and copy all dropins -->
+ <delete dir="${workingDir}/eclipse" />
+ <unzip dest="${workingDir}" overwrite="true" src="${downloadDir}/${eclipseFileName}" />
+ <unzip dest="${workingDir}" overwrite="true" src="${downloadDir}/${eclipseDeltapackName}" />
+ <copy todir="${workingDir}" overwrite="true" failonerror="false">
+ <fileset dir="${templateDir}/dropins" />
+ </copy>
+ </target>
+
+ <target name="downloadAllDropins">
+ <property name="pluginsDir" value="${templateDir}/dropins/eclipse/plugins" />
+ <delete dir="${pluginsDir}" failonerror="false" />
+ <mkdir dir="${pluginsDir}"/>
+ <for list="${orbitDownloadPluginList}" param="plugin">
+ <sequential>
+ <var name="dropinDestPath" value="${pluginsDir}/@{plugin}" />
+ <var name="dropinSrcUrl" value="${orbitDropUrl}/@{plugin}" />
+ <get src="${dropinSrcUrl}" dest="${dropinDestPath}" />
+ </sequential>
+ </for>
+ </target>
+
+ <target name="downloadEclipse" depends="checkDownloadEclipse" unless="skipDownloadEclipse">
+ <mkdir dir="${downloadDir}" />
+ <get src="${eclipseDownloadUrl}" dest="${downloadDir}/${eclipseFileName}" />
+ </target>
+
+ <target name="checkDownloadEclipse">
+ <available file="${downloadDir}/${eclipseFileName}" property="skipDownloadEclipse" />
+ </target>
+
+ <target name="downloadRapIncubator" depends="checkDownloadRapIncubator" unless="skipDownloadRapIncubator">
+ <mkdir dir="${downloadDir}" />
+ <get src="${incubatorDownloadUrl}" dest="${downloadDir}/${incubatorFileName}" />
+ </target>
+
+ <target name="checkDownloadRapIncubator">
+ <available file="${downloadDir}/${incubatorFileName}" property="skipDownloadRapIncubator" />
+ </target>
+
+ <target name="downloadRapEclipse" depends="checkDownloadRapEclipse" unless="skipDownloadRapEclipse">
+ <mkdir dir="${downloadDir}" />
+ <get src="${eclipseRapDownloadUrl}" dest="${downloadDir}/${eclipseRapFileName}" />
+ </target>
+
+ <target name="checkDownloadRapEclipse">
+ <available file="${downloadDir}/${eclipseRapFileName}" property="skipDownloadRapEclipse" />
+ </target>
+
+ <target name="downloadDeltapack" depends="checkDownloadDeltapack" unless="skipDownloadDeltapack">
+ <get src="${eclipseDeltapackUrl}" dest="${downloadDir}/${eclipseDeltapackName}" />
+ </target>
+
+ <target name="checkDownloadDeltapack">
+ <available file="${downloadDir}/${eclipseDeltapackName}" property="skipDownloadDeltapack" />
+ </target>
+
+ <target name="downloadTestFramework" depends="checkDownloadTestFramework" unless="skipDownloadTestFramework">
+ <get src="${eclipseTestFrameworkUrl}" dest="${downloadDir}/${eclipseTestFrameworkName}" />
+ </target>
+
+ <target name="checkDownloadTestFramework">
+ <available file="${downloadDir}/${eclipseTestFrameworkName}" property="skipDownloadTestFramework" />
+ </target>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/step010_downloadRepository.xml b/org.eclipse.scout.releng/buildFiles/step010_downloadRepository.xml
new file mode 100644
index 0000000..74ff02e
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step010_downloadRepository.xml
@@ -0,0 +1,89 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ Downloads the current p2 repository from ${scoutDownloadLocation}/[nightly|[0-9]{1,2}\\.[0-9]{1,2}].
+ In case of a nightly build the downloaded repository will be trunkated to the size of ${nightlyKeepVersions} releases.
+
+ Set ${skipDownloadRepository} property to true to skip this step.
+
+ The output folder (${buildDataDir}/step010/output) is used by step210 and upload.
+-->
+
+<project name="step010.downlaodRepository" default="build">
+ <property file="build.properties" />
+
+ <taskdef name="custom.trunkateReposiory" classname="org.eclipse.scout.releng.ant.TrunkateRepository" />
+
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step010" />
+ </target>
+
+ <target name="build">
+ <condition property="conditionNightly">
+ <equals arg1="N" arg2="${buildType}" />
+ </condition>
+
+ <condition property="scoutRepositoryLocation" value="${scoutDownloadLocation}/nightly">
+ <equals arg1="N" arg2="${buildType}" />
+ </condition>
+ <condition property="scoutRepositoryLocation" value="${scoutDownloadLocation}/${scoutRepositoryFolder}">
+ <or>
+ <equals arg1="R" arg2="${buildType}" />
+ <equals arg1="S" arg2="${buildType}" />
+ </or>
+ </condition>
+
+ <condition property="conditionSkipDownloadRepository">
+ <or>
+ <not>
+ <available file="${scoutRepositoryLocation}" />
+ </not>
+ <istrue value="${skipDownloadRepository}" />
+ </or>
+ </condition>
+ <available file="${buildDataDir}/step010/output/download.created" property="skipStep010" />
+ <antcall target="setupRepository" />
+ </target>
+
+ <target name="setupRepository" unless="skipStep010">
+ <antcall target="clean" />
+ <mkdir dir="${buildDataDir}/step010/output" />
+ <mkdir dir="${buildDataDir}/step010/output/zip" />
+ <mkdir dir="${buildDataDir}/step010/output/update" />
+
+ <antcall target="downlaodRepository" />
+ <touch file="${buildDataDir}/step010/output/download.created" />
+ <delete dir="${buildDataDir}/step010/input" failonerror="false" />
+ </target>
+
+
+
+
+ <target name="downlaodRepository" unless="conditionSkipDownloadRepository">
+ <echo message="execute target downloadRepository" />
+ <!-- download -->
+ <copy todir="${buildDataDir}/step010/output" overwrite="true">
+ <fileset dir="${scoutRepositoryLocation}">
+ <include name="**/**" />
+ <exclude name="update/content.jar" />
+ <exclude name="update/artifacts.jar" />
+ <exclude name="eclipseVersion.txt" />
+ </fileset>
+ </copy>
+ <antcall target="trunkateRepository" />
+ </target>
+
+ <target name="trunkateRepository" if="conditionNightly">
+ <custom.trunkateReposiory repositoryLocation="${buildDataDir}/step010/output" keep="${nightlyKeepVersions}" />
+ </target>
+
+</project>
diff --git a/org.eclipse.scout.releng/buildFiles/step020_buildFeatures.xml b/org.eclipse.scout.releng/buildFiles/step020_buildFeatures.xml
new file mode 100644
index 0000000..c8f681d
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step020_buildFeatures.xml
@@ -0,0 +1,369 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ Features org.eclipse.scout.rt.feature and org.eclipse.scout.sdk.feature are build including source bundles
+ and also creates the source featrues.
+ The output in ${buildDataDir}/step020/output folder are two directory rtFeature and sdkFeature.
+
+ The output folder is read by step030.
+-->
+
+<project name="step020.buildFeatures" default="build">
+ <property file="build.properties" />
+ <import file="${basedir}/macros/eclipse.xml" />
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step020" />
+ <mkdir dir="${buildDataDir}/step020" />
+ </target>
+
+ <target name="build">
+ <available file="${buildDataDir}/step020/output/features.created" property="skipCreateFeatures" />
+ <condition property="conditionSkipTestSdk">
+ <istrue value="${skipTestSdk}"/>
+ </condition>
+ <antcall target="createFeatures" />
+ </target>
+
+ <target name="buildRap">
+ <available file="${buildDataDir}/step020/output/features.created" property="skipCreateFeatures" />
+ <antcall target="createRapFeatures" />
+ </target>
+
+ <target name="preBuild">
+ <antcall target="clean" />
+ <antcall target="setupBuildWorkspace" />
+ <!--<antcall target="buildScoutRtFeature" />-->
+ <antcall target="createCompatFragments" />
+ </target>
+
+
+
+ <target name="createRapFeatures" unless="skipCreateRapFeatures">
+ <antcall target="clean" />
+ <antcall target="setupRapBuildWorkspace" />
+ <antcall target="buildScoutRtRapFeature" />
+
+ <mkdir dir="${buildDataDir}/step020/output" />
+ <touch file="${buildDataDir}/step020/output/features.created" />
+ <delete dir="${buildDataDir}/step020/input" failonerror="false" />
+ <delete dir="${nonRapBuildInputDir}" failonerror="false" />
+ </target>
+
+ <target name="createFeatures" unless="skipCreateFeatures">
+ <antcall target="clean" />
+ <antcall target="setupBuildWorkspace" />
+ <antcall target="buildScoutRtFeature" />
+ <antcall target="buildScoutSdkFeature" />
+ <antcall target="buildScoutSdkRapFeature" />
+ <antcall target="buildScoutSdkTestFeature" />
+ <antcall target="testSdk" />
+ <touch file="${buildDataDir}/step020/output/features.created" />
+ <delete dir="${buildDataDir}/step020/input" failonerror="false" />
+ </target>
+
+ <target name="createCompatFragments">
+ <property name="preBuildFragmentName" value="org.eclipse.scout.sdk.compatibility.${compatFragmentVersion}.fragment" />
+ <property name="preBuildFeatureName" value="${preBuildFragmentName}.feature" />
+
+ <!-- temp pre build feature -->
+ <property name="preBuildFeatureFolder" value="${buildDataDir}/step020/input/features/${preBuildFeatureName}" />
+ <mkdir dir="${preBuildFeatureFolder}"/>
+ <copy todir="${preBuildFeatureFolder}" failonerror="false">
+ <fileset dir="${relengRootDir}/templates/templateFeature">
+ <include name="**" />
+ </fileset>
+ </copy>
+ <replace file="${preBuildFeatureFolder}/build.properties" token="%%preBuildFeatureName%%" value="${preBuildFeatureName}" />
+ <replace file="${preBuildFeatureFolder}/feature.xml" token="%%preBuildFeatureName%%" value="${preBuildFeatureName}" />
+ <replace file="${preBuildFeatureFolder}/feature.xml" token="%%preBuildFragmentName%%" value="${preBuildFragmentName}" />
+
+ <!-- temp pre build source feature -->
+ <property name="preBuildSourceFeatureFolder" value="${preBuildFeatureFolder}.source" />
+ <mkdir dir="${preBuildSourceFeatureFolder}" />
+ <copy todir="${preBuildSourceFeatureFolder}" failonerror="false">
+ <fileset dir="${relengRootDir}/templates/sourceTemplateFeature">
+ <include name="**" />
+ </fileset>
+ </copy>
+ <replace file="${preBuildSourceFeatureFolder}/feature.properties" token="%%featureName%%" value="Temp Compatibility Source Feature" />
+
+ <!-- delete all sdk sources not needed for the build because pde-feature-build tries to compile the entire workspace -->
+ <!--<delete includeemptydirs="true">
+ <fileset dir="${buildDataDir}/step020/input/plugins">
+ <include name="**/org.eclipse.scout.sdk*/**" />
+ <include name="**/org.eclipse.scout.nls.sdk*/**" />
+ <exclude name="**/org.eclipse.scout.sdk.util/**" />
+ <exclude name="**/org.eclipse.scout.nls.sdk/**" />
+ <exclude name="**/org.eclipse.scout.sdk/**" />
+ <exclude name="**/org.eclipse.scout.sdk.compatibility/**" />
+ <exclude name="**/${preBuildFragmentName}/**" />
+ </fileset>
+ </delete>-->
+
+ <!-- start build -->
+ <pde.build.feature eclipseBaseDir="${workingDir}/eclipse" timestamp="${featureTimestamp}"
+ archivePrefix="sdkPreBuiltFeature" featureName="${preBuildFeatureName}" buildType="${buildType}" pdeBuildPluginVersion="${pdeBuildPluginVersion}" />
+
+ <!-- unzip the feature -->
+ <unzip dest="${buildDataDir}/step020/output">
+ <fileset dir="${buildDataDir}/step020/input/${buildType}">
+ <include name="${preBuildFeatureName}-${buildType}.zip" />
+ </fileset>
+ </unzip>
+
+ <!-- store the pre built compatibility fragment for later use -->
+ <copy todir="${preBuildDir}">
+ <fileset dir="${buildDataDir}/step020/output/sdkPreBuiltFeature/plugins">
+ <include name="**/*${preBuildFragmentName}*.jar"/>
+ </fileset>
+ </copy>
+
+ <antcall target="clean" />
+ </target>
+
+ <target name="buildScoutRtFeature" unless="skipRtFeature">
+ <pde.build.feature eclipseBaseDir="${workingDir}/eclipse" timestamp="${featureTimestamp}"
+ archivePrefix="rtFeature" featureName="org.eclipse.scout.rt.feature" buildType="${buildType}" pdeBuildPluginVersion="${pdeBuildPluginVersion}" />
+
+ <mkdir dir="${buildDataDir}/step020/output" />
+ <unzip dest="${buildDataDir}/step020/output">
+ <fileset dir="${buildDataDir}/step020/input/${buildType}">
+ <include name="org.eclipse.scout.rt.feature-${buildType}.zip" />
+ </fileset>
+ </unzip>
+ </target>
+
+ <target name="buildScoutRtRapFeature" unless="skipRtRapFeature">
+ <pde.build.feature eclipseBaseDir="${workingDir}/eclipse" timestamp="${featureTimestamp}"
+ archivePrefix="rtRapFeature" featureName="org.eclipse.scout.rt.rap.feature" buildType="${buildType}" pdeBuildPluginVersion="${pdeBuildPluginVersion}" />
+
+ <mkdir dir="${nonRapBuildDataDir}/step020/output" />
+ <unzip dest="${nonRapBuildDataDir}/step020/output">
+ <fileset dir="${nonRapBuildDataDir}/step020/input/${buildType}">
+ <include name="org.eclipse.scout.rt.rap.feature-${buildType}.zip" />
+ </fileset>
+ </unzip>
+ </target>
+
+ <target name="buildScoutSdkFeature" unless="skipSdkFeature">
+ <!-- first delete all compat fragment sources. these have been prebuild against the correct platform: copy the pre-built version into the platform -->
+ <delete includeemptydirs="true">
+ <fileset dir="${buildDataDir}/step020/input/plugins">
+ <include name="**/org.eclipse.scout.sdk.compatibility.*.fragment/**" />
+ </fileset>
+ </delete>
+ <copy todir="${workingDir}/eclipse/plugins">
+ <fileset dir="${preBuildDir}">
+ <include name="**/**.jar" />
+ </fileset>
+ </copy>
+
+ <pde.build.feature eclipseBaseDir="${workingDir}/eclipse" timestamp="${featureTimestamp}"
+ archivePrefix="sdkFeature" featureName="org.eclipse.scout.sdk.feature" buildType="${buildType}" pdeBuildPluginVersion="${pdeBuildPluginVersion}" />
+
+ <mkdir dir="${buildDataDir}/step020/output" />
+ <unzip dest="${buildDataDir}/step020/output">
+ <fileset dir="${buildDataDir}/step020/input/${buildType}">
+ <include name="org.eclipse.scout.sdk.feature-${buildType}.zip" />
+ </fileset>
+ </unzip>
+ </target>
+
+ <target name="buildScoutSdkRapFeature" unless="skipSdkRapFeature">
+ <pde.build.feature eclipseBaseDir="${workingDir}/eclipse" timestamp="${featureTimestamp}"
+ archivePrefix="sdkRapFeature" featureName="org.eclipse.scout.sdk.rap.feature" buildType="${buildType}" pdeBuildPluginVersion="${pdeBuildPluginVersion}" />
+
+ <mkdir dir="${buildDataDir}/step020/output" />
+ <unzip dest="${buildDataDir}/step020/output">
+ <fileset dir="${buildDataDir}/step020/input/${buildType}">
+ <include name="org.eclipse.scout.sdk.rap.feature-${buildType}.zip" />
+ </fileset>
+ </unzip>
+ </target>
+
+ <target name="buildScoutSdkTestFeature" unless="skipSdkFeature">
+ <pde.build.feature eclipseBaseDir="${workingDir}/eclipse" timestamp="${featureTimestamp}"
+ archivePrefix="sdkTestFeature" featureName="org.eclipse.scout.sdk.test.feature" buildType="${buildType}" pdeBuildPluginVersion="${pdeBuildPluginVersion}" />
+
+ <mkdir dir="${buildDataDir}/step020/output" />
+ <unzip dest="${buildDataDir}/step020/output">
+ <fileset dir="${buildDataDir}/step020/input/${buildType}">
+ <include name="org.eclipse.scout.sdk.test.feature-${buildType}.zip" />
+ </fileset>
+ </unzip>
+ </target>
+
+ <target name="testSdk" unless="conditionSkipTestSdk" depends="setupTestWorkspace">
+ <property name="tmpWs" location="${testWorkspace}/ws" />
+ <property name="outputFile" location="${testReportsDir}/result.${eclipsePlatformVersion}.org.eclipse.scout.sdk.test.xml" />
+
+ <pde.launch.test.suite workspaceBaseDir="${tmpWs}" eclipseBaseDir="${testEclipse}"
+ testPluginName="org.eclipse.scout.sdk.test" testSuiteClassName="org.eclipse.scout.sdk.internal.test._SuiteInternalTest"
+ junitReportOutputFile="${outputFile}" />
+ </target>
+
+ <target name="setupTestWorkspace" unless="conditionSkipTestSdk">
+ <property name="testWorkspace" location="${buildDataDir}/step020/testWs" />
+ <property name="testEclipse" location="${testWorkspace}/eclipse" />
+ <delete dir="${testWorkspace}" failonerror="false" />
+ <mkdir dir="${testEclipse}"/>
+
+ <!-- copy eclipse (includes eclipse, deltapack, test-framework) -->
+ <unzip dest="${testWorkspace}" overwrite="true" src="${downloadDir}/${eclipseFileName}" />
+ <unzip dest="${testWorkspace}" overwrite="true" src="${downloadDir}/${eclipseDeltapackName}" />
+ <unzip dest="${testWorkspace}${eclipseTestFrameworkSubFolder}" overwrite="true" src="${downloadDir}/${eclipseTestFrameworkName}">
+ <patternset>
+ <exclude name="artifacts.xml"/>
+ </patternset>
+ </unzip>
+ <copy todir="${testWorkspace}" failonerror="false">
+ <fileset dir="${templateDir}/dropins" />
+ </copy>
+
+ <!-- copy built fragments to workspace -->
+ <copy todir="${testEclipse}" overwrite="true">
+ <fileset dir="${buildDataDir}/step020/output/rtFeature">
+ <include name="**/**" />
+ </fileset>
+ </copy>
+ <copy todir="${testEclipse}" overwrite="true">
+ <fileset dir="${buildDataDir}/step020/output/sdkFeature">
+ <include name="**/**" />
+ </fileset>
+ </copy>
+ <copy todir="${testEclipse}" overwrite="true">
+ <fileset dir="${buildDataDir}/step020/output/sdkRapFeature">
+ <include name="**/**" />
+ </fileset>
+ </copy>
+ <copy todir="${testEclipse}" overwrite="true">
+ <fileset dir="${buildDataDir}/step020/output/sdkTestFeature">
+ <include name="**/**" />
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="setupRapBuildWorkspace">
+ <!-- unzip eclipse rap runtime into existing eclipse platform -->
+ <unzip dest="${workingDir}/eclipse" overwrite="true" src="${downloadDir}/${eclipseRapFileName}">
+ <patternset>
+ <include name="**/org.eclipse.rap*.jar"/>
+ </patternset>
+ </unzip>
+
+ <!-- unzip RAP Incubator -->
+ <unzip dest="${workingDir}/eclipse" overwrite="true" src="${downloadDir}/${incubatorFileName}" />
+
+ <!-- setup workspace -->
+ <antcall target="setupBuildWorkspace" />
+
+ <!-- copy already built scout rt into the build workspace -->
+ <property name="nonRapBuildOutputDir" value="${nonRapBuildDataDir}/step020/output" />
+ <copy todir="${workingDir}/eclipse" overwrite="true">
+ <fileset dir="${nonRapBuildOutputDir}/rtFeature">
+ <include name="**/**" />
+ </fileset>
+ </copy>
+
+ <!-- copy the sources from workingRap to working folder because the featureBuild properties expects the sources there -->
+ <property name="nonRapBuildInputDir" value="${nonRapBuildDataDir}/step020/input" />
+ <copy todir="${nonRapBuildInputDir}" overwrite="true">
+ <fileset dir="${workingDir}/buildData/step020/input">
+ <include name="**/*scout*rap*/**" />
+ </fileset>
+ </copy>
+
+ <!-- replace the patched eclipse plugins (TODO: remove!) -->
+ <property name="rapPluginsDir" value="${workingDir}/eclipse/plugins" />
+ <delete>
+ <fileset dir="${rapPluginsDir}" includes="org.eclipse.rap.rwt_1.5.*.jar"/>
+ <fileset dir="${rapPluginsDir}" includes="org.eclipse.rap.rwt.source_1.5.*.jar"/>
+ </delete>
+ <copy todir="${rapPluginsDir}" overwrite="true">
+ <fileset dir="${templateDir}/eclipsePatch">
+ <include name="**.jar" />
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="setupBuildWorkspace">
+ <delete dir="${buildDataDir}/step020/input" />
+ <property name="inputPlugins" location="${buildDataDir}/step020/input/plugins" />
+ <property name="inputFeatures" location="${buildDataDir}/step020/input/features" />
+
+ <!-- mkdirs -->
+ <mkdir dir="${inputPlugins}" />
+ <mkdir dir="${inputFeatures}" />
+
+ <!-- copy plugins to build to the buildDirectory -->
+ <copy todir="${inputPlugins}">
+ <fileset dir="${workspace}/scout.rt">
+ <include name="org.eclipse.scout.*/**" />
+ <include name="org.apache.derby.jdbc*/**" />
+ <exclude name="org.eclipse.scout*build*/**" />
+ <exclude name="*feature*/**" />
+ </fileset>
+ <fileset dir="${workspace}/scout.sdk">
+ <include name="org.eclipse.scout.*/**" />
+ <exclude name="*feature*/**" />
+ </fileset>
+ </copy>
+ <copy todir="${inputFeatures}">
+ <fileset dir="${workspace}/scout.rt">
+ <include name="*scout.*feature*/**" />
+ </fileset>
+ <fileset dir="${workspace}/scout.sdk">
+ <include name="*scout.*feature*/**" />
+ </fileset>
+ </copy>
+
+ <!-- rt source template -->
+ <copy todir="${inputFeatures}/org.eclipse.scout.rt.feature.source" failonerror="false">
+ <fileset dir="${relengRootDir}/templates/sourceTemplateFeature">
+ <include name="**" />
+ </fileset>
+ </copy>
+ <replace file="${inputFeatures}/org.eclipse.scout.rt.feature.source/feature.properties" token="%%featureName%%" value="Scout Runtime Source" />
+
+ <!-- rt rap source template -->
+ <copy todir="${inputFeatures}/org.eclipse.scout.rt.rap.feature.source" failonerror="false">
+ <fileset dir="${relengRootDir}/templates/sourceTemplateFeature">
+ <include name="**" />
+ </fileset>
+ </copy>
+ <replace file="${inputFeatures}/org.eclipse.scout.rt.rap.feature.source/feature.properties" token="%%featureName%%" value="Scout Runtime RAP Source" />
+
+ <!-- sdk source template -->
+ <copy todir="${inputFeatures}/org.eclipse.scout.sdk.feature.source" failonerror="false">
+ <fileset dir="${relengRootDir}/templates/sourceTemplateFeature">
+ <include name="**" />
+ </fileset>
+ </copy>
+ <replace file="${inputFeatures}/org.eclipse.scout.sdk.feature.source/feature.properties" token="%%featureName%%" value="Scout SDK Source" />
+
+ <!-- sdk rap source template -->
+ <copy todir="${inputFeatures}/org.eclipse.scout.sdk.rap.feature.source" failonerror="false">
+ <fileset dir="${relengRootDir}/templates/sourceTemplateFeature">
+ <include name="**" />
+ </fileset>
+ </copy>
+ <replace file="${inputFeatures}/org.eclipse.scout.sdk.rap.feature.source/feature.properties" token="%%featureName%%" value="Scout SDK RAP Source" />
+
+ <!-- sdk test source template -->
+ <copy todir="${inputFeatures}/org.eclipse.scout.sdk.test.feature.source" failonerror="false">
+ <fileset dir="${relengRootDir}/templates/sourceTemplateFeature">
+ <include name="**" />
+ </fileset>
+ </copy>
+ <replace file="${inputFeatures}/org.eclipse.scout.sdk.test.feature.source/feature.properties" token="%%featureName%%" value="Scout SDK Test Source" />
+ </target>
+</project>
diff --git a/org.eclipse.scout.releng/buildFiles/step030_archiveAll.xml b/org.eclipse.scout.releng/buildFiles/step030_archiveAll.xml
new file mode 100644
index 0000000..4d3a647
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step030_archiveAll.xml
@@ -0,0 +1,54 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ Ensures all bundles and features are packed in jar files.
+ E.g. folder org.eclipse.scout.rt.feature_3.7.0.201102030528 -> org.eclipse.scout.rt.feature_3.7.0.201102030528_unpack.jar
+ To mark the packed files the _unpack marker is used.
+
+ The output (${buildDataDir}/step030/output) is used by step040.
+-->
+
+<project name="step030.archiveAll" default="build">
+ <property file="build.properties" />
+ <taskdef name="custom.createArchive" classname="org.eclipse.scout.releng.ant.archive.CreateArchive" />
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step030" />
+ </target>
+
+ <target name="build">
+ <available file="${buildDataDir}/step030/output/archives.created" property="skipArchiveAll"/>
+ <antcall target="archiveAll"></antcall>
+ <delete dir="${buildDataDir}/step030/input" failonerror="false" />
+ </target>
+
+ <target name="archiveAll" unless="skipArchiveAll">
+ <antcall target="clean" />
+ <property name="inputFolder" location="${buildDataDir}/step030/input" />
+ <property name="outputFolder" location="${buildDataDir}/step030/output" />
+ <mkdir dir="${inputFolder}"/>
+ <copy todir="${inputFolder}">
+ <fileset dir="${buildDataDir}/step020/output">
+ <include name="**/*"/>
+ <exclude name="*.created"/>
+ </fileset>
+ </copy>
+ <custom.createArchive inputDir="${inputFolder}/rtFeature/features" outputDir="${outputFolder}/rtFeature/features"/>
+ <custom.createArchive inputDir="${inputFolder}/rtFeature/plugins" outputDir="${outputFolder}/rtFeature/plugins"/>
+ <custom.createArchive inputDir="${inputFolder}/rtRapFeature/features" outputDir="${outputFolder}/rtRapFeature/features"/>
+ <custom.createArchive inputDir="${inputFolder}/rtRapFeature/plugins" outputDir="${outputFolder}/rtRapFeature/plugins"/>
+ <custom.createArchive inputDir="${inputFolder}/sdkFeature/features" outputDir="${outputFolder}/sdkFeature/features"/>
+ <custom.createArchive inputDir="${inputFolder}/sdkFeature/plugins" outputDir="${outputFolder}/sdkFeature/plugins"/>
+ <custom.createArchive inputDir="${inputFolder}/sdkRapFeature/features" outputDir="${outputFolder}/sdkRapFeature/features"/>
+ <custom.createArchive inputDir="${inputFolder}/sdkRapFeature/plugins" outputDir="${outputFolder}/sdkRapFeature/plugins"/>
+ <touch file="${outputFolder}/archives.created"></touch>
+ </target>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/step050_pack200Normalize.xml b/org.eclipse.scout.releng/buildFiles/step050_pack200Normalize.xml
new file mode 100644
index 0000000..f6d509f
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step050_pack200Normalize.xml
@@ -0,0 +1,60 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ All jar files getting repacked using pack200. This step is needed to ensure the signature stays the
+ same to create pack200 archives later (step200).
+
+ The output folder (${buildDataDir}/step050/output) is used by step060.
+-->
+
+<project name="step050.pack200Normalize" default="build">
+ <property file="build.properties" />
+ <taskdef name="repack" classname="org.eclipse.scout.releng.ant.pack200.Repack" />
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step050" />
+ </target>
+
+ <target name="build">
+ <available file="${buildDataDir}/step050/output/pack200Repack.created" property="skipStep050" />
+ <antcall target="pack200Normalize" />
+ <delete dir="${buildDataDir}/step050/input" failonerror="false" />
+ </target>
+
+ <target name="pack200Normalize" unless="skipStep050">
+ <antcall target="clean" />
+ <property name="inputFolder" location="${buildDataDir}/step050/input" />
+ <property name="outputFolder" location="${buildDataDir}/step050/output" />
+ <mkdir dir="${inputFolder}" />
+ <copy todir="${inputFolder}">
+ <fileset dir="${buildDataDir}/step030/output">
+ <include name="**/*" />
+ <exclude name="*.created"/>
+ </fileset>
+ </copy>
+ <fileset id="jars2pack" dir="${inputFolder}">
+ <include name="**/*.jar" />
+ </fileset>
+
+ <!--
+ <p200ant repack="true" >
+ <fileset refid="jars2pack" />
+ </p200ant>
+ -->
+ <repack outputDir="${outputFolder}">
+ <fileset refid="jars2pack" />
+ </repack>
+ <touch file="${outputFolder}/pack200Repack.created" />
+
+ </target>
+
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/step060_sign.xml b/org.eclipse.scout.releng/buildFiles/step060_sign.xml
new file mode 100644
index 0000000..42cd43a
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step060_sign.xml
@@ -0,0 +1,87 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ All jar files getting signed with the Eclipse certificate. The input will be zipped and moved to the
+ ${signInputFolder}. Then the sign process (external process) is getting started. Since the sign process is async
+ a wait loop waits to receive the signd zip in the ${signOutputFolder}.
+
+ Set ${skipSign} property to true to skip this step.
+
+ The output folder (${buildDataDir}/step060/output) is used by step100 and step200.
+-->
+
+<project name="step060.sign" default="build">
+ <property file="build.properties" />
+ <taskdef name="waitForFile" classname="org.eclipse.scout.releng.ant.WaitForFile" />
+
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step060" />
+ </target>
+
+ <target name="build">
+ <condition property="conditionSkipSign">
+ <istrue value="${skipSign}"/>
+ </condition>
+
+ <antcall target="skipSignTask" />
+ <available file="${buildDataDir}/step060/output/sign.created" property="skipStep060" />
+ <antcall target="sign" />
+ <delete dir="${buildDataDir}/step060/input" failonerror="false" />
+ </target>
+
+ <target name="skipSignTask" if="conditionSkipSign">
+ <echo message="skip sign" />
+ <antcall target="clean" />
+ <property name="outputFolder" location="${buildDataDir}/step060/output" />
+ <mkdir dir="${outputFolder}" />
+ <copy todir="${outputFolder}">
+ <fileset dir="${buildDataDir}/step050/output">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ </copy>
+ <touch file="${outputFolder}/sign.created" />
+ </target>
+
+ <target name="sign" unless="skipStep060">
+ <antcall target="clean" />
+ <delete dir="${signInputFolder}" />
+ <delete dir="${signOutputFolder}" />
+ <property name="inputFolder" location="${buildDataDir}/step060/input" />
+ <property name="outputFolder" location="${buildDataDir}/step060/output" />
+ <mkdir dir="${inputFolder}" />
+ <copy todir="${inputFolder}">
+ <fileset dir="${buildDataDir}/step050/output">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ </copy>
+ <!-- sign -->
+ <mkdir dir="${signInputFolder}" />
+ <mkdir dir="${signOutputFolder}" />
+ <zip destfile="${signInputFolder}/sign.zip">
+ <fileset dir="${inputFolder}">
+ <include name="**/**" />
+ </fileset>
+ </zip>
+ <exec executable="sign" failifexecutionfails="no">
+ <arg value="${signInputFolder}/sign.zip" />
+ <arg value="nomail" />
+ <arg value="${signOutputFolder}" />
+ </exec>
+ <waitForFile file="${signOutputFolder}/sign.zip" maxMinutes="30" maxSecounds="0" pollSecounds="10"/>
+ <mkdir dir="${outputFolder}"/>
+ <unzip dest="${outputFolder}" src="${signOutputFolder}/sign.zip" />
+ <touch file="${outputFolder}/sign.created" />
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/step100_zipUnpack.xml b/org.eclipse.scout.releng/buildFiles/step100_zipUnpack.xml
new file mode 100644
index 0000000..6f76caf
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step100_zipUnpack.xml
@@ -0,0 +1,58 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ All jars temporarly packed by step030 will be unpacked here. As a marker for jars to unpack
+ a _unpack is expected.
+ E.g. folder org.eclipse.scout.rt.feature_3.7.0.201102030528_unpack.jar -> org.eclipse.scout.rt.feature_3.7.0.201102030528
+
+ The output folder (${buildDataDir}/step100/output) is used by step110.
+-->
+
+<project name="step100.zipUnpack" default="build">
+ <property file="build.properties" />
+ <taskdef name="custom.extract" classname="org.eclipse.scout.releng.ant.archive.ExtractArchive" />
+
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step100" />
+ </target>
+
+ <target name="build">
+ <available file="${buildDataDir}/step100/output/unpack.created" property="skipStep100" />
+ <antcall target="unpack" />
+ <delete dir="${buildDataDir}/step100/input" failonerror="false" />
+ </target>
+
+
+ <target name="unpack" unless="skipStep100">
+ <antcall target="clean" />
+ <property name="inputFolder" location="${buildDataDir}/step100/input" />
+ <property name="outputFolder" location="${buildDataDir}/step100/output" />
+ <mkdir dir="${inputFolder}" />
+ <copy todir="${inputFolder}">
+ <fileset dir="${buildDataDir}/step060/output">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ </copy>
+ <!-- unpack -->
+ <custom.extract inputDir="${inputFolder}/rtFeature/features" outputDir="${outputFolder}/rtFeature/features"/>
+ <custom.extract inputDir="${inputFolder}/rtFeature/plugins" outputDir="${outputFolder}/rtFeature/plugins"/>
+ <custom.extract inputDir="${inputFolder}/rtRapFeature/features" outputDir="${outputFolder}/rtRapFeature/features"/>
+ <custom.extract inputDir="${inputFolder}/rtRapFeature/plugins" outputDir="${outputFolder}/rtRapFeature/plugins"/>
+ <custom.extract inputDir="${inputFolder}/sdkFeature/features" outputDir="${outputFolder}/sdkFeature/features"/>
+ <custom.extract inputDir="${inputFolder}/sdkFeature/plugins" outputDir="${outputFolder}/sdkFeature/plugins"/>
+ <custom.extract inputDir="${inputFolder}/sdkRapFeature/features" outputDir="${outputFolder}/sdkRapFeature/features"/>
+ <custom.extract inputDir="${inputFolder}/sdkRapFeature/plugins" outputDir="${outputFolder}/sdkRapFeature/plugins"/>
+ <touch file="${outputFolder}/unpack.created" />
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/step110_zipCreate.xml b/org.eclipse.scout.releng/buildFiles/step110_zipCreate.xml
new file mode 100644
index 0000000..10b9429
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step110_zipCreate.xml
@@ -0,0 +1,69 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ A drop in zip will be created (${outputFolder}/${buildType}-scout-${scoutVersion}${versionMilestone}-${buildTimestamp}${incubationValue}.zip):
+ Root folders of the zip are plugins and features.
+
+ The output folder (${buildDataDir}/step110/output) is used by upload.
+-->
+
+<project name="step110.zipCreate" default="build">
+ <property file="build.properties" />
+
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step110" />
+ </target>
+
+ <target name="build">
+ <available file="${buildDataDir}/step110/output/zip.created" property="skipStep110" />
+ <antcall target="createZip" />
+ <delete dir="${buildDataDir}/step110/input" failonerror="false" />
+ </target>
+
+
+ <target name="createZip" unless="skipStep110">
+ <antcall target="clean" />
+ <property name="inputFolder" location="${buildDataDir}/step110/input" />
+ <property name="outputFolder" location="${buildDataDir}/step110/output" />
+ <mkdir dir="${inputFolder}" />
+ <copy todir="${inputFolder}">
+ <fileset dir="${buildDataDir}/step100/output">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ </copy>
+ <mkdir dir="${outputFolder}" />
+
+ <condition property="incubationValue" value="-Incubation">
+ <istrue value="${incubation}" />
+ </condition>
+ <property name="incubationValue" value="" />
+
+ <!-- do not include scout rap rt in this zip -->
+ <zip destfile="${outputFolder}/${buildType}-scout-${scoutVersion}${versionMilestone}-${buildTimestamp}${incubationValue}.zip" duplicate="preserve">
+ <fileset dir="${inputFolder}/rtFeature">
+ <include name="**/**" />
+ </fileset>
+ <fileset dir="${inputFolder}/sdkFeature">
+ <include name="**/**" />
+ </fileset>
+ <fileset dir="${inputFolder}/sdkRapFeature">
+ <include name="**/**" />
+ </fileset>
+ <fileset dir="${templateDir}/dropins/eclipse">
+ <include name="**/**" />
+ </fileset>
+ <fileset dir="${workingDir}/eclipse" includes="${finalZipLegacyPluginList}" />
+ </zip>
+ <touch file="${outputFolder}/zip.created" />
+ </target>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/step200_p2Pack200.xml b/org.eclipse.scout.releng/buildFiles/step200_p2Pack200.xml
new file mode 100644
index 0000000..483c54c
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step200_p2Pack200.xml
@@ -0,0 +1,66 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ All jar files will be archived to pack200 files.
+ E.g. org.eclipse.scout.rt.feature_3.7.0.201102030528.jar -> org.eclipse.scout.rt.feature_3.7.0.201102030528.jar.pack.gz
+
+ The output folder (${buildDataDir}/step200/output) is used by step210.
+-->
+
+<project name="step200.p2Pack200" default="build">
+ <property file="build.properties" />
+ <taskdef name="custom.removeUnpackSuffix" classname="org.eclipse.scout.releng.ant.archive.RemoveUnpackSuffix" />
+ <taskdef name="custom.pack" classname="org.eclipse.scout.releng.ant.pack200.Pack" />
+
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step200" />
+ </target>
+
+ <target name="build">
+ <available file="${buildDataDir}/step200/output/pack200.created" property="skipStep200" />
+ <antcall target="removeUnpackSuffix" />
+ <delete dir="${buildDataDir}/step200/input" failonerror="false" />
+ </target>
+
+
+ <target name="removeUnpackSuffix" unless="skipStep200">
+ <antcall target="clean" />
+ <property name="inputFolder" location="${buildDataDir}/step200/input" />
+ <property name="outputFolder" location="${buildDataDir}/step200/output" />
+ <mkdir dir="${inputFolder}" />
+ <copy todir="${inputFolder}">
+ <fileset dir="${buildDataDir}/step060/output">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ </copy>
+ <!-- unpack -->
+ <copy todir="${outputFolder}">
+ <fileset dir="${inputFolder}">
+ <include name="**/*" />
+ </fileset>
+ </copy>
+ <custom.removeUnpackSuffix>
+ <fileset dir="${outputFolder}">
+ <include name="**/*.jar" />
+ </fileset>
+ </custom.removeUnpackSuffix>
+ <custom.pack>
+ <fileset dir="${outputFolder}">
+ <include name="**/org.eclipse.scout.*/**" />
+ <include name="**/org.apache.derby.jdbc*/**" />
+ </fileset>
+ </custom.pack>
+ <touch file="${outputFolder}/pack200.created" />
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/step210_p2mergeRepository.xml b/org.eclipse.scout.releng/buildFiles/step210_p2mergeRepository.xml
new file mode 100644
index 0000000..8f7ad76
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step210_p2mergeRepository.xml
@@ -0,0 +1,63 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ The new created repository (taken from step200 output folder) and the existing repository
+ (taken from step010 output folder) will be merged to one.
+ ${buildDataDir}/step210/output conatins the two folders pugins and features.
+
+ The output folder (${buildDataDir}/step200/output) is used by step220.
+-->
+
+<project name="step210.p2mergeRepository" default="build">
+ <property file="build.properties" />
+
+
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step210" />
+ </target>
+
+ <target name="build">
+ <available file="${buildDataDir}/step210/output/setupRepository.created" property="skipStep210" />
+ <antcall target="setupRepository" />
+ </target>
+
+ <target name="setupRepository" unless="skipStep210">
+ <antcall target="clean" />
+
+ <mkdir dir="${buildDataDir}/step210/output" />
+ <copy todir="${buildDataDir}/step210/output">
+ <fileset dir="${buildDataDir}/step200/output/rtFeature">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ <fileset dir="${buildDataDir}/step200/output/rtRapFeature">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ <fileset dir="${buildDataDir}/step200/output/sdkFeature">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ <fileset dir="${buildDataDir}/step200/output/sdkRapFeature">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ <fileset dir="${buildDataDir}/step010/output/update">
+ <include name="plugins/*" />
+ <include name="features/*" />
+ </fileset>
+ </copy>
+ <touch file="${buildDataDir}/step210/output/setupRepository.created" />
+ </target>
+
+
+</project>
diff --git a/org.eclipse.scout.releng/buildFiles/step220_p2metadata.xml b/org.eclipse.scout.releng/buildFiles/step220_p2metadata.xml
new file mode 100644
index 0000000..f93500c
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step220_p2metadata.xml
@@ -0,0 +1,67 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ Creates artifacts.jar and content.jar.
+
+ The output folder (${buildDataDir}/step220/output) is used by step230.
+-->
+
+<project name="step220.p2metadata" default="build">
+ <property file="build.properties" />
+
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step220" />
+ </target>
+
+ <target name="build">
+ <available file="${buildDataDir}/step220/output/metadata.created" property="skipStep220" />
+ <antcall target="createMetadata" />
+ <delete dir="${buildDataDir}/step220/input" failonerror="false" />
+ </target>
+
+
+ <target name="createMetadata" unless="skipStep220">
+ <antcall target="clean" />
+ <property name="inputFolder" location="${buildDataDir}/step220/input" />
+ <property name="outputFolder" location="${buildDataDir}/step220/output" />
+ <mkdir dir="${inputFolder}" />
+ <copy todir="${inputFolder}">
+ <fileset dir="${buildDataDir}/step210/output">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ </copy>
+ <copy todir="${outputFolder}">
+ <fileset dir="${inputFolder}">
+ <include name="**/*" />
+ </fileset>
+ </copy>
+ <!-- create metadata-->
+ <java classname="org.eclipse.equinox.launcher.Main" fork="true" failonerror="true">
+ <arg line="-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher" />
+ <arg line="-metadataRepository file:/${outputFolder}" />
+ <arg line="-artifactRepository file:/${outputFolder}" />
+ <arg line="-source ${outputFolder}" />
+ <arg line="-compress" />
+ <arg line="-publishArtifacts" />
+ <arg value="-artifactRepositoryName"/>
+ <arg value="Eclipse Scout Site"/>
+ <arg value="-metadataRepositoryName"/>
+ <arg value="Eclipse Scout Site"/>
+ <classpath>
+ <pathelement location="${relengRootDir}/working/eclipse/plugins/org.eclipse.equinox.launcher_${equinoxLauncherPluginVersion}.jar" />
+ </classpath>
+ </java>
+ <touch file="${outputFolder}/metadata.created" />
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/step230_p2categorize.xml b/org.eclipse.scout.releng/buildFiles/step230_p2categorize.xml
new file mode 100644
index 0000000..79ce690
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/step230_p2categorize.xml
@@ -0,0 +1,68 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ Categoriezes the repository. Creates a scout.categories file which is used by the p2 categorize task.
+ The category file is only used in this step and will be deleted after categorizing the repository.
+
+ The output folder (${buildDataDir}/step230/output) is used by upload.
+-->
+
+<project name="step230.p2categorize" default="build">
+ <property file="build.properties" />
+ <taskdef name="custom.categoryXml" classname="org.eclipse.scout.releng.ant.category.CategoryTask" />
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/step230" />
+ </target>
+
+ <target name="build">
+ <available file="${buildDataDir}/step230/output/category.created" property="skipStep230" />
+ <antcall target="categorize" />
+ <delete dir="${buildDataDir}/step230/input" failonerror="false" />
+
+ </target>
+
+
+ <target name="categorize" unless="skipStep230">
+ <antcall target="clean" />
+ <property name="inputFolder" location="${buildDataDir}/step230/input" />
+ <property name="outputFolder" location="${buildDataDir}/step230/output" />
+ <mkdir dir="${inputFolder}" />
+ <copy todir="${inputFolder}">
+ <fileset dir="${buildDataDir}/step220/output">
+ <include name="**/*" />
+ <exclude name="*.created" />
+ </fileset>
+ </copy>
+ <copy todir="${outputFolder}">
+ <fileset dir="${inputFolder}">
+ <include name="**/*" />
+ </fileset>
+ </copy>
+ <!-- create category file -->
+ <custom.categoryXml categoryFile="${outputFolder}/scout.categories" featuresFolder="${outputFolder}/features" />
+ <java classname="org.eclipse.equinox.launcher.Main" fork="true" failonerror="true">
+ <arg line="-application org.eclipse.equinox.p2.publisher.CategoryPublisher" />
+ <arg line="-metadataRepository file:/${outputFolder}" />
+ <arg line="-source ${outputFolder}" />
+ <arg line="-categoryDefinition file:${outputFolder}/scout.categories" />
+ <arg line="-compress" />
+ <arg line="-categoryQualifier" />
+ <classpath>
+ <pathelement location="${relengRootDir}/working/eclipse/plugins/org.eclipse.equinox.launcher_${equinoxLauncherPluginVersion}.jar" />
+ </classpath>
+ </java>
+
+ <delete file="${outputFolder}/scout.categories" />
+ <touch file="${outputFolder}/category.created" />
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/buildFiles/upload.xml b/org.eclipse.scout.releng/buildFiles/upload.xml
new file mode 100644
index 0000000..0a9e128
--- /dev/null
+++ b/org.eclipse.scout.releng/buildFiles/upload.xml
@@ -0,0 +1,135 @@
+<!--
+ Copyright (c) 2010 BSI Business Systems Integration AG.
+ 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:
+ BSI Business Systems Integration AG - initial API and implementation
+ -->
+<!--
+ Uploads the packed updated repository to the ${stagingAreaFolder}. Beside a doStage
+ file containing the MD5 hash of the uploaded zip will be created to trigger the
+ publish job.
+
+ Set ${skipUpload} property to true to skip this step.
+-->
+
+<project name="upload" default="build">
+ <property file="build.properties" />
+ <taskdef name="custom.createRepositoryOverview" classname="org.eclipse.scout.releng.ant.CreateRepositoryOverview" />
+
+ <target name="clean">
+ <delete dir="${buildDataDir}/upload" />
+ </target>
+
+ <target name="build">
+ <condition property="conditionIsNightly">
+ <equals arg1="N" arg2="${buildType}" />
+ </condition>
+ <condition property="repository" value="nightly">
+ <equals arg1="N" arg2="${buildType}" />
+ </condition>
+ <condition property="repository" value="${scoutRepositoryFolder}">
+ <or>
+ <equals arg1="R" arg2="${buildType}" />
+ <equals arg1="S" arg2="${buildType}" />
+ </or>
+ </condition>
+ <condition property="conditionSkipUpload">
+ <istrue value="${skipUpload}" />
+ </condition>
+ <condition property="conditionTestBuild">
+ <istrue value="${testBuild}" />
+ </condition>
+
+ <antcall target="upload" />
+ </target>
+
+ <target name="upload" unless="conditionSkipUpload">
+ <antcall target="clean" />
+ <mkdir dir="${buildDataDir}/upload/input" />
+ <antcall target="prepare.zip" />
+ <antcall target="prepare.p2" />
+ <antcall target="createEclipseVersionFile" />
+ <antcall target="createRepositoryOverview" />
+ <antcall target="packUploadZip" />
+ <antcall target="testUpload" />
+ <antcall target="finalUpload" />
+ </target>
+
+ <target name="prepare.zip">
+ <!-- download zip -->
+ <property name="zipLocation" location="${buildDataDir}/upload/input/${repository}/zip" />
+ <mkdir dir="${zipLocation}" />
+ <copy todir="${zipLocation}" failonerror="false">
+ <fileset dir="${buildDataDir}/step010/output/zip">
+ <include name="*.zip" />
+ </fileset>
+ </copy>
+ <copy todir="${zipLocation}">
+ <fileset dir="${buildDataDir}/step110/output">
+ <include name="*.zip" />
+ </fileset>
+ </copy>
+ </target>
+
+
+ <target name="prepare.p2">
+ <property name="p2Location" location="${buildDataDir}/upload/input/${repository}/update" />
+ <copy todir="${p2Location}">
+ <fileset dir="${buildDataDir}/step230/output">
+ <include name="**/**" />
+ <exclude name="*.created" />
+ </fileset>
+ </copy>
+
+ </target>
+
+ <target name="createEclipseVersionFile">
+ <touch file="${buildDataDir}/upload/input/${repository}/eclipseVersion.txt">
+ </touch>
+ <echo file="${buildDataDir}/upload/input/${repository}/eclipseVersion.txt" message="${eclipseVersion}" />
+ </target>
+
+ <target name="createRepositoryOverview" unless="conditionTestBuild">
+ <custom.createRepositoryOverview rootUrl="http://download.eclipse.org/scout" uploadDir="${buildDataDir}/upload/input" repositoryDir="${scoutDownloadLocation}" overviewFile="${buildDataDir}/upload/input//repositoryOverview.xml" />
+ </target>
+
+
+ <target name="packUploadZip">
+ <mkdir dir="${buildDataDir}/upload/output" />
+ <zip destfile="${buildDataDir}/upload/output/stage_${featureTimestamp}.zip">
+ <fileset dir="${buildDataDir}/upload/input">
+ <include name="**/**" />
+ </fileset>
+ </zip>
+ <checksum algorithm="MD5" file="${buildDataDir}/upload/output/stage_${featureTimestamp}.zip" property="md5checksum" />
+ <echo file="${buildDataDir}/upload/output/pending" append="false" message="${md5checksum} stage_${featureTimestamp}.zip" />
+ </target>
+
+ <target name="testUpload" if="conditionTestBuild">
+ <delete>
+ <fileset dir="${scoutDownloadLocation}/testBuild">
+ <include name="testBuild/**" />
+ </fileset>
+ </delete>
+ <unzip dest="${scoutDownloadLocation}/testBuild">
+ <fileset dir="${buildDataDir}/upload/output">
+ <include name="stage_${featureTimestamp}.zip" />
+ </fileset>
+ </unzip>
+ </target>
+
+ <target name="finalUpload" unless="conditionTestBuild">
+ <copy todir="${scoutDownloadLocation}/${stagingAreaFolder}">
+ <fileset dir="${buildDataDir}/upload/output">
+ <include name="stage_${featureTimestamp}.zip" />
+ </fileset>
+ </copy>
+ <copy file="${buildDataDir}/upload/output/pending" tofile="${scoutDownloadLocation}/${stagingAreaFolder}/doStage" />
+ </target>
+
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/clean.bat b/org.eclipse.scout.releng/clean.bat
new file mode 100644
index 0000000..adf2c07
--- /dev/null
+++ b/org.eclipse.scout.releng/clean.bat
@@ -0,0 +1,40 @@
+:##############################################################################
+:# Copyright (c) 2010 BSI Business Systems Integration AG.
+:# 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:
+:# BSI Business Systems Integration AG - initial API and implementation
+:#############################################################################
+
+@echo off
+setlocal
+set JAVA_HOME=E:\jsdk\j2sdk1.6.0_10
+set ANT_HOME=E:\jsdk\apache-ant-1.7.1
+set ANT_OPTS=-Xmx512m
+set WORKSPACE=E:\workspaces\scout.build\p2Workspace
+
+cd %WORKSPACE%
+
+:# standard values for Eclipse 3.5 Classic SDK + Delta Pack 3.5
+set buildOpts=-Declipse.running=true
+:# set workspaceDir=-Dworkspace=%WORKSPACE%
+set nighltyRepoVar=-DnightlyRepository=E:\workspaces\scout.build\p2Workspace\org.eclipse.scout.releng\final\nightlyP2Repo
+:# productiv : nightlyRepository=/home/data/httpd/download.eclipse.org/scout/updates/3.5.6-nightly
+
+
+:# create a log file named according to this pattern: log.<this shell sctipt name, i.e. make>
+set logfile=org.eclipse.scout.releng/scoutBuild.log
+
+PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin;%PATH%
+
+
+call ant -f org.eclipse.scout.releng/buildFiles/build.xml -lib org.eclipse.scout.releng %buildOpts% %nighltyRepoVar% %* clean
+
+:# call ant -f org.eclipse.scout.builder/buildFiles/build.xml -lib org.eclipse.scout.releng %buildOpts% %nighltyRepoVar% -DskipSign=true %* buildNightly > %logfile%
+
+endlocal
+
+
diff --git a/org.eclipse.scout.releng/compositeRepository.bat b/org.eclipse.scout.releng/compositeRepository.bat
new file mode 100644
index 0000000..4610579
--- /dev/null
+++ b/org.eclipse.scout.releng/compositeRepository.bat
@@ -0,0 +1,43 @@
+:##############################################################################
+:# Copyright (c) 2010 BSI Business Systems Integration AG.
+:# 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:
+:# BSI Business Systems Integration AG - initial API and implementation
+:#############################################################################
+
+@echo off
+setlocal
+set JAVA_HOME=E:\jsdk\j2sdk1.6.0_10
+:# used for pack200
+set JAVA_HOME_1-5=E:\jsdk\j2sdk1.5.0_12
+
+set ANT_HOME=E:\jsdk\apache-ant-1.7.1
+set ANT_OPTS=-Xmx512m
+set WORKSPACE=E:\workspaces\scout.build\p2Workspace
+
+cd %WORKSPACE%
+
+:# standard values for Eclipse 3.5 Classic SDK + Delta Pack 3.5
+set buildOpts=-Declipse.running=true
+:# set workspaceDir=-Dworkspace=%WORKSPACE%
+set nighltyRepoVar=-DnightlyRepository=E:\workspaces\scout.build\p2Workspace\org.eclipse.scout.releng\final\nightlyP2Repo
+:# productive : nightlyRepository=/home/data/httpd/download.eclipse.org/scout/updates/3.5.6-nightly
+
+
+:# create a log file named according to this pattern: log.<this shell sctipt name, i.e. make>
+set logfile=org.eclipse.scout.releng/compositeRepository.log
+
+PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin;%PATH%
+
+set buildFlags=-DskipClean=false -DskipSign=true -DskipDownloadRepository=false -DskipUpload=false -DbuildType=S -DscoutDownloadLocation=D:/Temp/max24h/eclipseBuild/download -DtestBuild=true
+
+call ant -f org.eclipse.scout.releng/buildFiles/compositeRepository/build.xml -lib org.eclipse.scout.releng/buildFiles/lib %buildOpts% %buildFlags% %nighltyRepoVar% %* build
+:# call ant -f org.eclipse.scout.builder/buildFiles/build.xml -lib org.eclipse.scout.releng %buildOpts% %nighltyRepoVar% -DskipSign=true %* buildNightly > %logfile%
+
+endlocal
+pause
+
diff --git a/org.eclipse.scout.releng/make.bat b/org.eclipse.scout.releng/make.bat
new file mode 100644
index 0000000..e5f83bd
--- /dev/null
+++ b/org.eclipse.scout.releng/make.bat
@@ -0,0 +1,43 @@
+:##############################################################################
+:# Copyright (c) 2010 BSI Business Systems Integration AG.
+:# 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:
+:# BSI Business Systems Integration AG - initial API and implementation
+:#############################################################################
+
+@echo off
+setlocal
+set JAVA_HOME=E:\jsdk\j2sdk1.6.0_10
+:# used for pack200
+set JAVA_HOME_1-5=E:\jsdk\j2sdk1.5.0_12
+
+set ANT_HOME=E:\jsdk\apache-ant-1.7.1
+set ANT_OPTS=-Xmx512m
+set WORKSPACE=E:\workspaces\scout.build\p2Workspace
+
+cd %WORKSPACE%
+
+:# standard values for Eclipse 3.5 Classic SDK + Delta Pack 3.5
+set buildOpts=-Declipse.running=true
+:# set workspaceDir=-Dworkspace=%WORKSPACE%
+set nighltyRepoVar=-DnightlyRepository=E:\workspaces\scout.build\p2Workspace\org.eclipse.scout.releng\final\nightlyP2Repo
+:# productive : nightlyRepository=/home/data/httpd/download.eclipse.org/scout/updates/3.5.6-nightly
+
+
+:# create a log file named according to this pattern: log.<this shell sctipt name, i.e. make>
+set logfile=org.eclipse.scout.releng/scoutBuild.log
+
+PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin;%PATH%
+
+set buildFlags=-DskipClean=false -DskipSign=true -DskipDownloadRepository=false -DskipUpload=false -DbuildType=S -DscoutDownloadLocation=D:/Temp/max24h/eclipseBuild/download -DtestBuild=false
+
+call ant -f org.eclipse.scout.releng/buildFiles/build.xml -lib org.eclipse.scout.releng/buildFiles/lib %buildOpts% %buildFlags% %nighltyRepoVar% %* build
+:# call ant -f org.eclipse.scout.builder/buildFiles/build.xml -lib org.eclipse.scout.releng %buildOpts% %nighltyRepoVar% -DskipSign=true %* buildNightly > %logfile%
+
+endlocal
+pause
+
diff --git a/org.eclipse.scout.releng/publish.sh b/org.eclipse.scout.releng/publish.sh
new file mode 100644
index 0000000..d0e188b
--- /dev/null
+++ b/org.eclipse.scout.releng/publish.sh
@@ -0,0 +1,58 @@
+workingDir=/home/data/httpd/download.eclipse.org/scout
+stagingArea=$workingDir/stagingArea
+repositoriesDir=$workingDir
+stageTriggerFileName=doStage
+
+
+
+processZipFile()
+{
+ backupDir=$(pwd)
+ zipFile=$backupDir"/"${1%?}
+ sigOk=$2
+ if [ $sigOk == OK ]; then
+ echo $(date)" publish $zipFile"
+ mkdir $stagingArea/working
+ unzip $zipFile -d $stagingArea/working >$stagingArea/NUL
+ chgrp -R technology.scout $stagingArea/working
+ chmod -R g+w $stagingArea/working
+
+ cd $stagingArea/working
+ for d in {[0-9\.]*,nightly}
+ do
+ if [ -d "$d" ]; then
+ if [ -d $repositoriesDir/$d""_new ]; then
+ rm -rf $repositoriesDir/$d""_new
+ fi
+ mv $stagingArea/working/$d $repositoriesDir/$d""_new
+ # backup original
+ if [ -d $repositoriesDir/$d ]; then
+ if [ -d $repositoriesDir/$d""_backup ]; then
+ rm -rf $repositoriesDir/$d""_backup
+ fi
+ mv $repositoriesDir/$d $repositoriesDir/$d""_backup
+ fi
+ mv $repositoriesDir/$d""_new $repositoriesDir/$d
+ fi
+ done
+ cp -f $stagingArea/working/* $repositoriesDir/
+ rm -rf $stagingArea/working
+ cd $backupDir
+ else
+ echo "md5 not valid for $zipFile!"
+ fi
+}
+
+if [ -f $stagingArea/$stageTriggerFileName ]; then
+ backupDir=$(pwd)
+ cd $stagingArea
+ mv $stagingArea/$stageTriggerFileName $stagingArea/processing
+ processZipFile $(md5sum -c $stagingArea/processing)
+ rm -rf $stagingArea/*
+ cd $backupDir
+fi
+
+#echo $stagingArea/stage.zip
+#username=$(ls -l $stagingArea/stage.zip | awk '{print $3}')
+#if [ "$username" == "aho" ]; then
+
diff --git a/org.eclipse.scout.releng/templates/eclipsePatch/org.eclipse.rap.rwt.source_1.5.0.201201121818.jar b/org.eclipse.scout.releng/templates/eclipsePatch/org.eclipse.rap.rwt.source_1.5.0.201201121818.jar
new file mode 100644
index 0000000..7cfd0c2
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/eclipsePatch/org.eclipse.rap.rwt.source_1.5.0.201201121818.jar
Binary files differ
diff --git a/org.eclipse.scout.releng/templates/eclipsePatch/org.eclipse.rap.rwt_1.5.0.201201121818.jar b/org.eclipse.scout.releng/templates/eclipsePatch/org.eclipse.rap.rwt_1.5.0.201201121818.jar
new file mode 100644
index 0000000..ea139ee
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/eclipsePatch/org.eclipse.rap.rwt_1.5.0.201201121818.jar
Binary files differ
diff --git a/org.eclipse.scout.releng/templates/endorsed/J2SE-1.5/javax.mail.jre15_1.4.1.jar b/org.eclipse.scout.releng/templates/endorsed/J2SE-1.5/javax.mail.jre15_1.4.1.jar
new file mode 100644
index 0000000..ed46eb2
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/endorsed/J2SE-1.5/javax.mail.jre15_1.4.1.jar
Binary files differ
diff --git a/org.eclipse.scout.releng/templates/endorsed/JavaSE-1.6/javax.mail.jre16_1.4.3.jar b/org.eclipse.scout.releng/templates/endorsed/JavaSE-1.6/javax.mail.jre16_1.4.3.jar
new file mode 100644
index 0000000..b74dcd3
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/endorsed/JavaSE-1.6/javax.mail.jre16_1.4.3.jar
Binary files differ
diff --git a/org.eclipse.scout.releng/templates/endorsed/javax.jms_1.1.0.jar b/org.eclipse.scout.releng/templates/endorsed/javax.jms_1.1.0.jar
new file mode 100644
index 0000000..e0eae26
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/endorsed/javax.jms_1.1.0.jar
Binary files differ
diff --git a/org.eclipse.scout.releng/templates/sourceTemplateFeature/about.html b/org.eclipse.scout.releng/templates/sourceTemplateFeature/about.html
new file mode 100644
index 0000000..c258ef5
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/sourceTemplateFeature/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/templates/sourceTemplateFeature/build.properties b/org.eclipse.scout.releng/templates/sourceTemplateFeature/build.properties
new file mode 100644
index 0000000..2cd2728
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/sourceTemplateFeature/build.properties
@@ -0,0 +1,5 @@
+bin.includes = feature.xml,\
+ epl-v10.html,\
+ license.html,\
+ build.properties,\
+ feature.properties
diff --git a/org.eclipse.scout.releng/templates/sourceTemplateFeature/epl-v10.html b/org.eclipse.scout.releng/templates/sourceTemplateFeature/epl-v10.html
new file mode 100644
index 0000000..84ec251
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/sourceTemplateFeature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<p align=center><b>Eclipse Public License - v 1.0</b></p>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/org.eclipse.scout.releng/templates/sourceTemplateFeature/feature.properties b/org.eclipse.scout.releng/templates/sourceTemplateFeature/feature.properties
new file mode 100644
index 0000000..f70bcde
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/sourceTemplateFeature/feature.properties
@@ -0,0 +1,135 @@
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+featureName=%%featureName%%
+
+providerName=Eclipse Scout Project
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.scout.releng/templates/sourceTemplateFeature/license.html b/org.eclipse.scout.releng/templates/sourceTemplateFeature/license.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/sourceTemplateFeature/license.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+ repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and
+Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+ in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+ Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+ the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+ indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/org.eclipse.scout.releng/templates/templateFeature/build.properties b/org.eclipse.scout.releng/templates/templateFeature/build.properties
new file mode 100644
index 0000000..209af2f
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/templateFeature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml
+generate.feature@%%preBuildFeatureName%%.source=%%preBuildFeatureName%%
\ No newline at end of file
diff --git a/org.eclipse.scout.releng/templates/templateFeature/feature.xml b/org.eclipse.scout.releng/templates/templateFeature/feature.xml
new file mode 100644
index 0000000..7254903
--- /dev/null
+++ b/org.eclipse.scout.releng/templates/templateFeature/feature.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="%%preBuildFeatureName%%"
+ label="Feature"
+ version="1.0.0.qualifier">
+
+ <description url="http://www.example.com/description">desc</description>
+
+ <copyright url="http://www.example.com/copyright">copy</copyright>
+
+ <license url="http://www.example.com/license">lic</license>
+
+ <includes
+ id="%%preBuildFeatureName%%.source"
+ version="0.0.0"
+ optional="true"/>
+
+ <plugin
+ id="org.eclipse.scout.sdk.compatibility"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="%%preBuildFragmentName%%"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ fragment="true"
+ unpack="false"/>
+</feature>
\ No newline at end of file