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">/** &lt;h4&gt; ${type_name} &lt;/h4&gt;&\#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 &apos;${build.result.folder}/@dot${logExtension}&apos;" 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>&lt;<em>insert current release date here, e.g., June 5, 2007</em>&gt;</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  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, &quot;Program&quot; 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 (&quot;Redistributor&quot;) 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 (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; 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>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; 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>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; 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
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+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 &quot;AS IS&quot; 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 &quot;CONTENT&quot;).  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
+   (&quot;EPL&quot;).  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, &quot;Program&quot; 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 (&quot;Repository&quot;) in CVS
+   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</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 (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</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 &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; 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 (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; 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 &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  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 &quot;src&quot; 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 (&quot;Feature Update License&quot;) 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 &quot;license&quot; property of files named &quot;feature.properties&quot; 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>&lt;<em>insert current release date here, e.g., June 5, 2007</em>&gt;</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  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, &quot;Program&quot; 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 (&quot;Redistributor&quot;) 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 (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; 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>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; 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>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; 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
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+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 &quot;AS IS&quot; 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 &quot;CONTENT&quot;).  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
+   (&quot;EPL&quot;).  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, &quot;Program&quot; 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 (&quot;Repository&quot;) in CVS
+   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</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 (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</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 &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; 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 (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; 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 &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  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 &quot;src&quot; 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 (&quot;Feature Update License&quot;) 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 &quot;license&quot; property of files named &quot;feature.properties&quot; 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 (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  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, &quot;Program&quot; 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 (&quot;Redistributor&quot;) 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 (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; 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>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; 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>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; 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
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+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 &quot;AS IS&quot; 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 &quot;CONTENT&quot;).  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
+   (&quot;EPL&quot;).  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, &quot;Program&quot; 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 (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</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 (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</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 &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; 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 (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; 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 &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  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 &quot;src&quot; 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 (&quot;Feature Update License&quot;) 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 &quot;license&quot; property of files named &quot;feature.properties&quot; 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 (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). 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>
+   (&quot;Specification&quot;).</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 (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) 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 (&quot;Installable Software Agreement&quot;) 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