diff --git a/spring-webflow-sandbox/.classpath b/spring-webflow-sandbox/.classpath
deleted file mode 100644
index 7a1ebe48..00000000
--- a/spring-webflow-sandbox/.classpath
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/spring-webflow-sandbox/.project b/spring-webflow-sandbox/.project
deleted file mode 100644
index c5d48186..00000000
--- a/spring-webflow-sandbox/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- spring-webflow-sandbox
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/spring-webflow-sandbox/.settings/org.eclipse.jdt.core.prefs b/spring-webflow-sandbox/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 3aa8951d..00000000
--- a/spring-webflow-sandbox/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,336 +0,0 @@
-#Wed Aug 15 09:35:57 EDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-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.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=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=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=120
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=8
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=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=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/spring-webflow-sandbox/.settings/org.eclipse.jdt.ui.prefs b/spring-webflow-sandbox/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index aed7a61c..00000000
--- a/spring-webflow-sandbox/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,58 +0,0 @@
-#Wed Aug 15 09:35:57 EDT 2007
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_Spring Java Conventions
-formatter_settings_version=11
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=false
-org.eclipse.jdt.ui.javadoc=false
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=/**\n * @return the ${bare_field_name}\n *//**\n * @param ${param} the ${bare_field_name} to set\n *//**\n * ${tags}\n *//*\n * Copyright 2004-2007 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http\://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *//**\n * @author ${user}\n *\n * ${tags}\n *//**\n * \n *//**\n * ${tags}\n *//* (non-Javadoc)\n * ${see_to_overridden}\n *//**\n * ${tags}\n * ${see_to_target}\n */${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}\n\n\n\n// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();// ${todo} Auto-generated method stub\nthrow new UnsupportedOperationException("Auto-generated method stub");${body_statement}\n// ${todo} Auto-generated constructor stubreturn ${field};${field} \= ${param};
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.format_source_code=true
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=false
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/spring-webflow-sandbox/build.xml b/spring-webflow-sandbox/build.xml
deleted file mode 100644
index fea537f7..00000000
--- a/spring-webflow-sandbox/build.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/spring-webflow-sandbox/changelog.txt b/spring-webflow-sandbox/changelog.txt
deleted file mode 100644
index 32fb1535..00000000
--- a/spring-webflow-sandbox/changelog.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-SPRING WEB FLOW SANDBOX (SWF) CHANGELOG
-=======================================
-http://www.springframework.org
-
-Changes in version X.Y.Z ()
--------------------------------------
\ No newline at end of file
diff --git a/spring-webflow-sandbox/ivy.xml b/spring-webflow-sandbox/ivy.xml
deleted file mode 100644
index f5ffcb10..00000000
--- a/spring-webflow-sandbox/ivy.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/project.properties b/spring-webflow-sandbox/project.properties
deleted file mode 100644
index 55ed07f5..00000000
--- a/spring-webflow-sandbox/project.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-# properties defined in this file are overridable by a local build.properties in this project dir
-
-# The location of the common build system
-common.build.dir=${basedir}/../common-build
-
-javac.source=1.5
-javac.target=1.5
-
-# Do not publish built artifacts to the integration repository
-do.publish=false
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/etc/filter.properties b/spring-webflow-sandbox/src/etc/filter.properties
deleted file mode 100644
index 3aaac7e3..00000000
--- a/spring-webflow-sandbox/src/etc/filter.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Contains filterable project settings. Setting placeholders in filterable project text
-# files will be replaced with these values when the 'statics' build target is run.
-#
-# You may add static settings directly to this source file in the format:
-# setting=value e.g MY_SETTING=myvalue
-# This is appropriate usage if you know the setting value will never change.
-#
-# At build time this source file is copied to the ${target.dir} where additional
-# dynamic settings may be appended using the task. Use this approach
-# when a setting value depends on the build or the local user's environment.
-#
-# An example of this approach is shown below:
-#
-# build.xml
-#
-#
-#
-#
-#
-#
-#
-#
-# This allows for dynamic replacement values that are sourced from local properties files to facilitate
-# local user settings.
-#
-# To refer to filterable settings within project source files like config files, JSPs, or
-# other text files use the standard ant placeholder format:
-# @SETTING_NAME@ e.g, @MY_SETTING@ and @MY_LOCAL_SETTING@
-#
-# Your settings:
diff --git a/spring-webflow-sandbox/src/etc/test-resources/log4j.properties b/spring-webflow-sandbox/src/etc/test-resources/log4j.properties
deleted file mode 100644
index b10ab1a5..00000000
--- a/spring-webflow-sandbox/src/etc/test-resources/log4j.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-log4j.rootCategory=WARN, stdout, logfile
-
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
-
-log4j.appender.logfile=org.apache.log4j.RollingFileAppender
-log4j.appender.logfile.File=@TEST_RESULTS_DIR@/@PROJECT_NAME@.log
-log4j.appender.logfile.MaxFileSize=512KB
-
-# Keep three backup files
-log4j.appender.logfile.MaxBackupIndex=3
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-#Pattern to output : date priority [category] - line_separator
-log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n
-
-log4j.category.org.springframework.webflow=DEBUG
-log4j.category.org.springframework.binding=DEBUG
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/util/AbstractReadOnlyResourceHolder.java b/spring-webflow-sandbox/src/main/java/org/springframework/util/AbstractReadOnlyResourceHolder.java
deleted file mode 100644
index 71478e89..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/util/AbstractReadOnlyResourceHolder.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.springframework.util;
-
-/**
- * Read-only resource holder.
- *
- * @author Maxim Petrashev
- */
-public abstract class AbstractReadOnlyResourceHolder extends AbstractResourceHolder {
- public final void set(E aObject) {
- throw new UnsupportedOperationException();
- }
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/util/AbstractResourceHolder.java b/spring-webflow-sandbox/src/main/java/org/springframework/util/AbstractResourceHolder.java
deleted file mode 100644
index 3d002671..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/util/AbstractResourceHolder.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.springframework.util;
-
-import org.springframework.beans.factory.support.MethodReplacer;
-
-import java.lang.reflect.Method;
-
-/**
- * Base abstract implementation of resource holder that implement method replacment logic.
- *
- * @author Maxim Petrashev
- */
-public abstract class AbstractResourceHolder implements ResourceHolder, MethodReplacer {// todo replace on
- // injector in config
- @SuppressWarnings("unchecked")
- public Object reimplement(Object aObj, Method aMethod, Object[] aArgs) throws Throwable {
- Object retVal = null;
- if (aArgs.length == 0) {
- retVal = get();
- } else {
- set((E) aArgs[0]);
- }
- return retVal;
- }
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/util/ResourceHolder.java b/spring-webflow-sandbox/src/main/java/org/springframework/util/ResourceHolder.java
deleted file mode 100644
index 68a2b3d2..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/util/ResourceHolder.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.springframework.util;
-
-/**
- * Base interface for object holder concept.
- *
- * @author Maxim Petrashev
- */
-public interface ResourceHolder {
- E get();
-
- void set(E aObject);
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/execution/ConversationLifecycleListener.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/execution/ConversationLifecycleListener.java
deleted file mode 100644
index 7689b48c..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/execution/ConversationLifecycleListener.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package org.springframework.webflow.execution;
-
-import org.springframework.webflow.definition.FlowDefinition;
-import org.springframework.webflow.core.collection.MutableAttributeMap;
-
-/**
- * Listener interface for callback notification about phases in during conversation
- *
- * @author Maxim Petrashev
- */
-public interface ConversationLifecycleListener {
- /**
- * Invoked when a flow is launched. The launching flow is not active.
- *
- * @param aNewFlow The launching flow
- * @param aContext The request context
- */
-
- void startingFlow(FlowDefinition aNewFlow, RequestContext aContext);
-
- void flowStarted(RequestContext aContext, MutableAttributeMap aInput);
-
- /**
- * Invoked when the root flow session has ended.
- *
- * @param aEndedSession The ended session
- * @param aContext The request context
- */
- void flowEnded(FlowSession aEndedSession, RequestContext aContext);
-
- void endingFlow(RequestContext aContext, MutableAttributeMap aOutput);
-
- /**
- * Invoked in parent flow before spawning in subflow but after input mapping has been happened. The child flow
- * session is not available to implementations of this method because the flow session for the child flow has not
- * yet started. If you need to add items to the subflow scope, put them in aInput.
- *
- * @param aParentSession The active parent flow session
- * @param aChild The child flow
- * @param aContext The request context
- * @param aInput The input map
- */
- void startingSubflow(FlowSession aParentSession, FlowDefinition aChild, RequestContext aContext,
- MutableAttributeMap aInput);
-
- /**
- * Invoked when a subflow is launched. The child flow session is not available to implementations of this method
- * because the flow session for the child flow has not yet started. If you need to add items to the subflow
- * scope, put them in aInput.
- *
- * @param aContext The request context
- * @param aInput The input map
- */
- void subflowStarted(RequestContext aContext, MutableAttributeMap aInput);
-
- /**
- * Invoked in subflow flow before spawning back to parent flot but after output mapping has been happened. The
- * parent flow session is not available to implementations of this method because the flow session for the parent
- * flow has not yet continued. If you need to add items to the parent flow scope, put them in aOutput.
- *
- * @param aContext The request context
- * @param aOutput The input map
- */
- void endingSubflow(RequestContext aContext, MutableAttributeMap aOutput);
-
- /**
- * Invoked when a parent flow is launched back. The child flow session is not available to implementations of this
- * method because the flow session for the child flow has not yet started. If you need to add items to the
- * subflow scope, put them in aInput.
- *
- * @param aParentSession The active parent flow session
- * @param aChild The child flow
- * @param aContext The request context
- * @param aOutput The input map
- */
- void subflowEnded(FlowSession aParentSession, FlowDefinition aChild, RequestContext aContext,
- MutableAttributeMap aOutput);
-
- /**
- * The currently executing flow session is active. This occurs after the first event for the executing request has
- * been signaled or resume event has been happended. Invoked once per request and provides access to the active flow
- * session prior to any actions being performed.
- *
- * @param aContext The request context
- */
- void sessionActive(RequestContext aContext);
-
- /**
- * The currently executing flow session is active. This occurs after the first event for the executing request has
- * been signaled or resume event has been happended. Invoked once per request and provides access to the active flow
- * session prior to any actions being performed.
- *
- * @param aContext The request context
- */
- void sessionDeactive(RequestContext aContext);
-
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/execution/ConversationLifecycleListenerAdapter.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/execution/ConversationLifecycleListenerAdapter.java
deleted file mode 100644
index d2cfe0b0..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/execution/ConversationLifecycleListenerAdapter.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.springframework.webflow.execution;
-
-import org.springframework.webflow.definition.FlowDefinition;
-import org.springframework.webflow.core.collection.MutableAttributeMap;
-
-/**
- *
- * @author Maxim Petrashev
- */
-public abstract class ConversationLifecycleListenerAdapter implements ConversationLifecycleListener {
-
- public void startingFlow(FlowDefinition aNewFlow, RequestContext aContext) {
- }
-
- public void flowStarted(RequestContext aContext, MutableAttributeMap aInput) {
- }
-
- public void flowEnded(FlowSession aEndedSession, RequestContext aContext) {
- }
-
- public void endingFlow(RequestContext aContext, MutableAttributeMap aOutput) {
- }
-
- public void startingSubflow(FlowSession aParentSession, FlowDefinition aChild, RequestContext aContext,
- MutableAttributeMap aInput) {
- }
-
- public void subflowStarted(RequestContext aContext, MutableAttributeMap aInput) {
- }
-
- public void subflowStarted(FlowSession aParentSession, FlowDefinition aChild, RequestContext aContext,
- MutableAttributeMap aInput) {
- }
-
- public void endingSubflow(RequestContext aContext, MutableAttributeMap aOutput) {
- }
-
- public void subflowEnded(FlowSession aParentSession, FlowDefinition aChild, RequestContext aContext,
- MutableAttributeMap aOutput) {
- }
-
- public void sessionActive(RequestContext aContext) {
- }
-
- public void sessionDeactive(RequestContext aContext) {
- }
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/execution/ExtendedFlowExecutionListenerInterceptor.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/execution/ExtendedFlowExecutionListenerInterceptor.java
deleted file mode 100644
index 401e0213..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/execution/ExtendedFlowExecutionListenerInterceptor.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package org.springframework.webflow.execution;
-
-import org.springframework.webflow.engine.SubflowState;
-import org.springframework.webflow.core.collection.AttributeMap;
-import org.springframework.webflow.core.collection.MutableAttributeMap;
-import org.springframework.webflow.definition.FlowDefinition;
-import org.springframework.webflow.definition.StateDefinition;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A listener/interceptor whose purpose is to adapt a HandlerInterceptor and FlowExecutionListener to provide expanded
- * coverage at the beginning and ending of a request coming into a flow controller. The idea is to signal when a flow
- * starts/activates, then signal when it has deactivated or ended. In addition, it should be signaled when a subflow
- * starts/activates and ends/deactivates.
- *
- * Adapted from Alex Wolfe's post at
- * http://forum.springframework.org/showthread.php?t=17633
- *
- *
- * @author Andrew Ebaugh
- * @author Maxim Petrashev
- */
-public class ExtendedFlowExecutionListenerInterceptor extends FlowExecutionListenerAdapter {
- protected final Log _logger = LogFactory.getLog(getClass());
-
- private static String FIRST_EVENT_SIGNALED = ExtendedFlowExecutionListenerInterceptor.class.getName()
- + ".FIRST_EVENT_SIGNALED";
- private static String CURRENT_SESSION_ENDED = ExtendedFlowExecutionListenerInterceptor.class.getName()
- + ".CURRENT_SESSION_ENDED";
-
- public ExtendedFlowExecutionListenerInterceptor(ConversationLifecycleListener aConversationLifecycleListener) {
- _conversationLifecycleListener = aConversationLifecycleListener;
- }
-
- private ConversationLifecycleListener _conversationLifecycleListener;
-
- /**
- * Called when any client request is submitted to manipulate this flow execution. Sets a flag in the request scope
- * that is activated when the first state is entered during this request. This flag is required in order to trigger
- * execution of the {@link ConversationLifecycleListener#sessionActive(RequestContext)} method.
- *
- * @param aContext The request aContext
- */
- public final void requestSubmitted(RequestContext aContext) {
- aContext.getRequestScope().put(FIRST_EVENT_SIGNALED, Boolean.FALSE);
- aContext.getRequestScope().put(CURRENT_SESSION_ENDED, Boolean.FALSE);
- }
-
- public final void eventSignaled(RequestContext aContext, Event aEvent) {
- signalAction(aContext);
- }
-
- public final void stateEntered(RequestContext aContext, StateDefinition aPreviousState, StateDefinition aState) {
- signalAction(aContext);
- }
-
- /**
- * Called when an event is signaled, or a state is entered, but before any potential transition or actions occurs.
- * If the action signaled is the first for the request, then the
- * {@link ConversationLifecycleListener#sessionActive(RequestContext)} method is invoked. It is necessary that this
- * be called prior to any state transitions to provide listeners coverage of any state exit/transition/entry
- * actions.
- *
- * @param aContext The request aContext
- */
- private void signalAction(RequestContext aContext) {
- if (!firstEventSignaled(aContext)) {
- aContext.getRequestScope().put(FIRST_EVENT_SIGNALED, Boolean.TRUE);
- _conversationLifecycleListener.sessionActive(aContext);
- }
- }
-
- /**
- * A aFlow session is starting. This method invokes
- * {@link ConversationLifecycleListener#startingFlow(FlowDefinition, RequestContext)} if the launching aFlow session
- * is the root aFlow. Otherwise, the
- * {@link ConversationLifecycleListener#startingSubflow(FlowSession, FlowDefinition, RequestContext,MutableAttributeMap)}
- * method is invoked.
- *
- * @param aContext The request aContext
- * @param aFlowDefinition
- * @param aInput
- * @throws EnterStateVetoException The start state transition was not allowed
- */
- public final void sessionStarting(RequestContext aContext, FlowDefinition aFlowDefinition,
- MutableAttributeMap aInput) {
- aContext.getRequestScope().put(FIRST_EVENT_SIGNALED, Boolean.TRUE);
- aContext.getRequestScope().put(CURRENT_SESSION_ENDED, Boolean.FALSE);
- FlowExecutionContext executionContext = aContext.getFlowExecutionContext();
- FlowSession activeSession = executionContext.isActive() ? executionContext.getActiveSession() : null;
- // when starting in default subflow start state?
- if (activeSession != null && SubflowState.class.isInstance(activeSession.getState())) {
- aFlowDefinition = ((SubflowState) activeSession.getState()).getSubflow();
- }
-
- if (activeSession == null) {
- _conversationLifecycleListener.startingFlow(aFlowDefinition, aContext);
- } else {
- _conversationLifecycleListener.startingSubflow(activeSession, aFlowDefinition, aContext, null);
- }
- }
-
- public void sessionStarted(RequestContext aContext, FlowSession aSession) {
- if (aSession.isRoot()) {
- _conversationLifecycleListener.flowStarted(aContext, null);
- } else {
- _conversationLifecycleListener.subflowStarted(aContext, null);
- }
- }
-
- public void sessionEnding(RequestContext aContext, FlowSession aSession, MutableAttributeMap aOutput) {
- if (aSession.isRoot()) {
- _conversationLifecycleListener.endingFlow(aContext, null);
- } else {
- _conversationLifecycleListener.endingSubflow(aContext, null);
- }
- }
-
- public void requestProcessed(RequestContext aContext) {
- FlowExecutionContext executionContext = aContext.getFlowExecutionContext();
- if (executionContext.isActive()) {
- _conversationLifecycleListener.sessionDeactive(aContext);
- }
- }
-
- /**
- * Called when a flow execution session ends. If the ended session was the root session of the flow execution, the
- * {@link ConversationLifecycleListener#flowEnded(FlowSession, RequestContext)} method is invoked. If the ended
- * session was not the root session, then the
- * {@link ConversationLifecycleListener#subflowEnded(FlowSession, FlowDefinition, RequestContext, MutableAttributeMap)} }
- * method is invoked. Prior to this, and in either case, the
- * {@link ConversationLifecycleListener#sessionDeactive(RequestContext)} method is invoked.
- *
- * @param aContext The source of the event
- * @param aEndedSession The ended FlowSession
- */
- public final void sessionEnded(RequestContext aContext, FlowSession aEndedSession, AttributeMap aSessionOutput) {
- FlowExecutionContext exeCtx = aContext.getFlowExecutionContext();
- FlowSession newSession = exeCtx.isActive() ? exeCtx.getActiveSession() : null;
- if (aEndedSession != null) {
- try {
- if (aEndedSession.isRoot()) {
- _conversationLifecycleListener.flowEnded(aEndedSession, aContext);
- } else {
- _conversationLifecycleListener.subflowEnded(newSession, aEndedSession.getDefinition(), aContext,
- null);
- }
- } catch (RuntimeException e) { // todo to think which base exception need wrap
- String message = "Can't end session";
- if (_logger.isWarnEnabled()) {
- _logger.warn(message, e);
- }
- throw new FlowExecutionException(exeCtx.getDefinition().getId(), newSession != null ? newSession
- .getState().getId() : aEndedSession.getState().getId(), message, e);
- }
- }
- aContext.getRequestScope().put(CURRENT_SESSION_ENDED, Boolean.TRUE);
- }
-
- /**
- * Determine whether the current request has handled an event.
- *
- * @param aContext The request context
- * @return true if an event has already been signaled during the current request, otherwise
- * false
- */
- private boolean firstEventSignaled(RequestContext aContext) {
- return aContext.getRequestScope().get(FIRST_EVENT_SIGNALED).equals(Boolean.TRUE);
- }
-
- public void resumed(RequestContext context) {
- signalAction(context);
- }
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/DefaultEntityManagerLifecycleController.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/DefaultEntityManagerLifecycleController.java
deleted file mode 100644
index 6d462cc7..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/DefaultEntityManagerLifecycleController.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.springframework.webflow.jpa;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.util.Assert;
-import org.springframework.transaction.support.TransactionSynchronizationManager;
-import org.springframework.orm.jpa.EntityManagerHolder;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-
-/**
- * Default abstract JPA implementation for {@link EntityManagerLifecycleController}.
- *
- * @author Maxim Petrashev
- */
-public abstract class DefaultEntityManagerLifecycleController implements EntityManagerLifecycleController {
- private EntityManagerFactory _entityManagerFactory;
-
- public DefaultEntityManagerLifecycleController(EntityManagerFactory aEntityManagerFactory) {
- _entityManagerFactory = aEntityManagerFactory;
- }
-
- public void close(EntityManager aEntityManager) {
- Assert.isTrue(aEntityManager.isOpen(), "Entity manager was already closed");
- aEntityManager.close();
- }
-
- public void deactivate(EntityManager aEntityManager) {
- unbind(aEntityManager);
- if (_log.isDebugEnabled()) {
- _log.debug("Entity manager unbinded: " + aEntityManager.isOpen());
- }
- }
-
- public EntityManager create() {
- return _entityManagerFactory.createEntityManager();
- }
-
- public void flush(EntityManager aEntityManager) {
- try {
- aEntityManager.flush();
- } catch (RuntimeException e) {// todo review this code
- aEntityManager.getTransaction().rollback();
- throw e;
- }
- }
-
- public void activate(EntityManager aEntityManager) {
- bind(aEntityManager);
- if (_log.isDebugEnabled()) {
- _log.debug("Session activate: " + aEntityManager.isOpen());
- }
- }
-
- protected void bind(EntityManager aEntityManager) {
- TransactionSynchronizationManager.bindResource(_entityManagerFactory, new EntityManagerHolder(aEntityManager));
- }
-
- protected void unbind(EntityManager aEntityManager) {
- synchronized (_entityManagerFactory) {// todo is this need?
- Assert.isTrue(TransactionSynchronizationManager.hasResource(_entityManagerFactory)); // todo remove this
- // code. Resource
- // must be already
- // present.
- TransactionSynchronizationManager.unbindResource(_entityManagerFactory);
- }
- }
-
- protected EntityManagerFactory getEntityManagerFactory() {
- return _entityManagerFactory;
- }
-
- protected final Log _log = LogFactory.getLog(getClass());
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/EntityManagerLifecycleController.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/EntityManagerLifecycleController.java
deleted file mode 100644
index 74eb6b4e..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/EntityManagerLifecycleController.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.springframework.webflow.jpa;
-
-import javax.persistence.EntityManager;
-
-/**
- * Lifycycle controller that hide vendor specific routines for entity manager like:
- *
- * - Application transaction commit implementation. See, for example,
- *
org.hibernate.annotations.FlushModeType.MANUAL
- * - Binding/Unbinding persistence context resources for current thread
- *
- *
- * @author Maxim Petrashev
- */
-public interface EntityManagerLifecycleController {
- /**
- * Create new entity manager and return wrapper for it with aId id.
- */
- EntityManager create();
-
- /**
- * Reconnect entity manager and bind to current thread.
- * @param aEntityManager
- */
- void activate(EntityManager aEntityManager);
-
- /**
- * Disconnect current session and unbind from current thread.
- * @param aEntityManager
- */
- void deactivate(EntityManager aEntityManager);
-
- /**
- * Commit application transaction.
- * @param aEntityManager
- */
- void flush(EntityManager aEntityManager);
-
- /**
- * Close opened entity manager.
- * @param aEntityManager
- */
- void close(EntityManager aEntityManager);
-
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/OpenEntityManagerPerConversationFlowListener.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/OpenEntityManagerPerConversationFlowListener.java
deleted file mode 100644
index 8bff4dd3..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/OpenEntityManagerPerConversationFlowListener.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package org.springframework.webflow.jpa;
-
-import javax.persistence.EntityManager;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.web.context.request.WebRequestInterceptor;
-import org.springframework.webflow.definition.FlowDefinition;
-import org.springframework.webflow.definition.StateDefinition;
-import org.springframework.webflow.engine.EndState;
-import org.springframework.webflow.execution.ConversationLifecycleListenerAdapter;
-import org.springframework.webflow.execution.FlowExecutionContext;
-import org.springframework.webflow.execution.FlowSession;
-import org.springframework.webflow.execution.RequestContext;
-
-/**
- * Intended for those wating a long session model within webflows. A entity manager is created when the flow begins, and
- * is disconnected and reconnected as necessary throughout the lifecycle of the flow. In particular, it should be
- * thought of as both a {@link org.springframework.webflow.execution.FlowExecutionListener} and
- * {@link WebRequestInterceptor} that binds a entity manager to the current thread for the activate span of a
- * FlowSession. This implementation shares the entity manager between a parent flow and any subflows.
- *
- * To facilitate the long session idea, objects within the flow will be reassociated with the jpa persistence context
- * when the flow is re-activated. Deserialized jpa flow scope objects lose their association to the persistence context,
- * and thus result in problems when you attempt to perform persistence operations (run into non-unique object
- * exceptions, null sessions in persistent collections, and a host of other weird behaviors). There is a basic facility
- * to apply a flushMode to new entity managers that are created, but not as sophisticated as that provided by a
- * HibernateAccessor. Config example:
- *
- *
- * <bean id="openEntityManagerFlowListener"
- * class="org.springframework.webflow.jpa.OpenEntityManagerPerConversationFlowListener">
- * <constructor ref="_lifecycleController"/>
- * </bean>
- *
- *
- *
- * Adapted from Alex Wolfe's post at
- * http://forum.springframework.org/showthread.php?t=17633
- *
- * @author Maxim Petrashev
- */
-public class OpenEntityManagerPerConversationFlowListener extends ConversationLifecycleListenerAdapter {
- protected final Log _logger = LogFactory.getLog(getClass());
-
- private final EntityManagerLifecycleController _lifecycleController;
-
- /**
- * Attribute name for annotated state which mark end-state and application commit end-state.
- */
- public static final String APPLICATION_TRANSACTION_COMMIT_ATTR_NAME = "applicationTransactionCommit";
- /**
- * Attribute name under wich in conversation scope will be stored entity manager for conversation.
- */
- private static final String ENTITY_MANAGER_ATTR_NAME = OpenEntityManagerPerConversationFlowListener.class.getName()
- + ".ENTITY_MANAGER";
-
- protected OpenEntityManagerPerConversationFlowListener(EntityManagerLifecycleController aLifecycleController) {
- _lifecycleController = aLifecycleController;
- }
-
- protected EntityManager getEntityManager(RequestContext aContext) {
- return (EntityManager) aContext.getConversationScope().get(ENTITY_MANAGER_ATTR_NAME);
- }
-
- /**
- * Create entity manager for new conversation.
- * @param aNewFlow
- * @param aContext
- */
- public void startingFlow(FlowDefinition aNewFlow, RequestContext aContext) {
- _logger.debug("Creating entity manager for flow: " + aNewFlow.getId());
- EntityManager entityManager = _lifecycleController.create();
- _lifecycleController.activate(entityManager);
- aContext.getConversationScope().put(ENTITY_MANAGER_ATTR_NAME, entityManager);
- }
-
- /**
- * Try commit application transaction on application transaction commit end state. Clean also all resources that
- * were allocated for conversation entity manager.
- * @param aEndedSession
- * @param aContext
- */
- public void flowEnded(FlowSession aEndedSession, RequestContext aContext) {
- EntityManager entityManager = getEntityManager(aContext);
- try {
- if (isApplicationTransactionCommitState(aEndedSession.getState())) {
- _lifecycleController.flush(entityManager);
- }
- } finally {
- try {
- _lifecycleController.deactivate(entityManager);
- } finally {
- _lifecycleController.close(entityManager);
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void sessionActive(RequestContext aContext) {
- EntityManager entityManager = getEntityManager(aContext);
- _lifecycleController.activate(entityManager);
- }
-
- /**
- * Deactivate current entity manager on end of request handling process.
- */
- public void sessionDeactive(RequestContext aContext) {
- FlowExecutionContext flowExecutionContext = aContext.getFlowExecutionContext();
- if (flowExecutionContext.isActive()) {// todo need CommandManager or request specific lifecycleController
- EntityManager entityManager = getEntityManager(aContext);
- _lifecycleController.deactivate(entityManager);
- } else {
- // entity manager already was closed in flowEnded method
- }
- }
-
- /**
- * Return is aState application commit state or not. Returns true if aState is EndState and aState is annotated by
- * {@link #APPLICATION_TRANSACTION_COMMIT_ATTR_NAME} attribute.
- */
- protected boolean isApplicationTransactionCommitState(StateDefinition aState) {
- boolean retVal = false;
- if (aState instanceof EndState) {
- retVal = aState.getAttributes().get(APPLICATION_TRANSACTION_COMMIT_ATTR_NAME, "false").equals("true");
- }
- return retVal;
- }
-
- public static final String CURRENT_ENTITY_MANAGER_KEY_ATTR_NAME = OpenEntityManagerPerConversationFlowListener.class
- .getName()
- + ".CURRENT_ENTITY_MANAGER_KEY";
- // todo review exceptionThrown
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/TransactionSynchronizationManagerEnityManagerHolder.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/TransactionSynchronizationManagerEnityManagerHolder.java
deleted file mode 100644
index 0b4254fa..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/TransactionSynchronizationManagerEnityManagerHolder.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.springframework.webflow.jpa;
-
-import org.springframework.orm.jpa.EntityManagerHolder;
-import org.springframework.util.AbstractReadOnlyResourceHolder;
-import org.springframework.transaction.support.TransactionSynchronizationManager;
-
-import javax.persistence.EntityManager;
-
-/**
- * Resource holder that is wrapper for TransactionSynchronizationManager.
- *
- * @author Maxim Petrashev
- */
-public class TransactionSynchronizationManagerEnityManagerHolder extends AbstractReadOnlyResourceHolder {
- public EntityManager get() {
- EntityManagerHolder emHolder = (EntityManagerHolder) TransactionSynchronizationManager.getResource(_key);
- return emHolder.getEntityManager();
- }
-
- public TransactionSynchronizationManagerEnityManagerHolder(Object aKey) {
- _key = aKey;
- }
-
- private Object _key;
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/hibernate/EntityManagerLifecycleController.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/hibernate/EntityManagerLifecycleController.java
deleted file mode 100644
index 07c8e7b9..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/hibernate/EntityManagerLifecycleController.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.springframework.webflow.jpa.hibernate;
-
-import org.springframework.webflow.jpa.DefaultEntityManagerLifecycleController;
-import org.hibernate.FlushMode;
-import org.hibernate.SessionFactory;
-import org.hibernate.classic.Session;
-import org.hibernate.context.ManagedSessionContext;
-
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityTransaction;
-
-/**
- * Hibernate specific implementation of EntityManagerLifecycleController interface. Set for each new entity manager
- * hibernate specific flush mode and starts new JPA transaction on activation, and commit it on deactivation
- *
- * @author Maxim Petrashev
- */
-public class EntityManagerLifecycleController extends DefaultEntityManagerLifecycleController {
-
- public EntityManagerLifecycleController(EntityManagerFactory aEntityManagerFactory) {
- super(aEntityManagerFactory);
- }
-
- public EntityManager create() {
- EntityManager retVal = super.create();
- Session session = HibernateUtils.getSession(retVal);
- session.setFlushMode(FlushMode.MANUAL); // todo review this code
- return retVal;
- }
-
- protected void unbind(EntityManager aEntityManager) {
- try {
- SessionFactory sessionFactory = HibernateUtils.getSessionFactory(getEntityManagerFactory());
- ManagedSessionContext.unbind(sessionFactory);
- } finally {
- super.unbind(aEntityManager);
- }
- }
-
- protected void bind(EntityManager aEntityManager) {
- super.bind(aEntityManager);
- // todo remove this code in hibernate specific class
- ManagedSessionContext.bind(HibernateUtils.getSession(aEntityManager));
- }
-
- public void activate(EntityManager aEntityManager) {
- beginTransaction(aEntityManager);
- super.activate(aEntityManager);
- }
-
- public void deactivate(EntityManager aEntityManager) {
- try {
- disconnectSession(aEntityManager);
- } finally {
- super.deactivate(aEntityManager);
- }
- }
-
- protected void beginTransaction(EntityManager aEntityManager) {// todo is it method need? May be transaction aspect
- // has to cover it?
- // begin database transaction for taking available connection
- aEntityManager.getTransaction().begin();
- }
-
- protected void disconnectSession(EntityManager aEntityManager) {// todo is it method need? May be transaction aspect
- // has to cover it?
- EntityTransaction transaction = aEntityManager.getTransaction();
- transaction.commit();
- // todo is it need ? aSession.disconnect();
- }
-
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/hibernate/HibernateUtils.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/hibernate/HibernateUtils.java
deleted file mode 100644
index 2ee3672a..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/jpa/hibernate/HibernateUtils.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.springframework.webflow.jpa.hibernate;
-
-import org.hibernate.SessionFactory;
-import org.hibernate.EntityMode;
-import org.hibernate.metadata.ClassMetadata;
-import org.hibernate.classic.Session;
-import org.hibernate.ejb.HibernateEntityManagerFactory;
-import org.hibernate.ejb.HibernateEntityManager;
-
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.EntityManager;
-import java.util.Map;
-import java.util.List;
-import java.util.LinkedList;
-
-/**
- * Utils class for common hibernate JPA routines.
- *
- * @author Maxim Petrashev
- */
-public abstract class HibernateUtils {
- public static SessionFactory getSessionFactory(EntityManagerFactory aEntityManagerFactory) {
- HibernateEntityManagerFactory hibernateEntityManagerFactory = (HibernateEntityManagerFactory) aEntityManagerFactory;
- return hibernateEntityManagerFactory.getSessionFactory();
- }
-
- public static Session getSession(EntityManager aEntityManager) {
- return (Session) ((HibernateEntityManager) aEntityManager).getSession();
- }
-
- @Deprecated
- public static List getEntityClasses(EntityManager aEntityManager) {
- SessionFactory sessionFactory = getSession(aEntityManager).getSessionFactory();
- @SuppressWarnings("unchecked")
- Map metadataMap = sessionFactory.getAllClassMetadata();
- List retVal = new LinkedList();
- for (ClassMetadata classMetadata : metadataMap.values()) {
- Class type = classMetadata.getMappedClass(EntityMode.POJO);
- retVal.add(type);
- }
- return retVal;
- }
-
- public static Object getIdentifier(SessionFactory aSessionFactory, Object aEntity) {
- return aSessionFactory.getCurrentSession().getIdentifier(aEntity);
- }
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/Sale.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/Sale.java
deleted file mode 100644
index 46204cc3..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/Sale.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright 2004-2007 the original author or authors.
- *
- * 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.
- */
-package org.springframework.webflow.samples.sellitem;
-
-import java.io.Serializable;
-import java.util.Date;
-
-import org.springframework.core.style.ToStringCreator;
-import org.hibernate.annotations.Proxy;
-
-import javax.persistence.Entity;
-import javax.persistence.Table;
-import javax.persistence.Id;
-import javax.persistence.TableGenerator;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Transient;
-
-@Entity
-@Table(name = "T_SALES")
-@Proxy(lazy = true)
-public class Sale implements Serializable {
-
- @Id
- @TableGenerator(name = "ids")
- @GeneratedValue(strategy = GenerationType.TABLE)
- public int getId() {
- return id;
- }
-
- public void setId(int aId) {
- id = aId;
- }
-
- private int id;
-
- private double price;
-
- private int itemCount;
-
- private String category;
-
- private boolean shipping;
-
- private String shippingType;
-
- private Date shipDate;
-
- public String getCategory() {
- return category;
- }
-
- public void setCategory(String category) {
- this.category = category;
- }
-
- public int getItemCount() {
- return itemCount;
- }
-
- public void setItemCount(int itemCount) {
- this.itemCount = itemCount;
- }
-
- public double getPrice() {
- return price;
- }
-
- public void setPrice(double price) {
- this.price = price;
- }
-
- public boolean isShipping() {
- return shipping;
- }
-
- public void setShipping(boolean shipping) {
- this.shipping = shipping;
- }
-
- public String getShippingType() {
- return shippingType;
- }
-
- public void setShippingType(String shippingType) {
- this.shippingType = shippingType;
- }
-
- public Date getShipDate() {
- return shipDate;
- }
-
- public void setShipDate(Date shipDate) {
- this.shipDate = shipDate;
- }
-
- // business logic methods
-
- /**
- * Returns the base amount of the sale, without discount or delivery costs.
- */
- @Transient
- public double getAmount() {
- return price * itemCount;
- }
-
- /**
- * Returns the discount rate to apply.
- */
- @Transient
- public double getDiscountRate() {
- double discount = 0.02;
- if ("A".equals(category)) {
- if (itemCount >= 100) {
- discount = 0.1;
- }
- } else if ("B".equals(category)) {
- if (itemCount >= 200) {
- discount = 0.2;
- }
- }
- return discount;
- }
-
- /**
- * Returns the savings because of the discount.
- */
- @Transient
- public double getSavings() {
- return getDiscountRate() * getAmount();
- }
-
- /**
- * Returns the delivery cost.
- */
- @Transient
- public double getDeliveryCost() {
- double delCost = 0.0;
- if ("S".equals(shippingType)) {
- delCost = 10.0;
- } else if ("E".equals(shippingType)) {
- delCost = 20.0;
- }
- return delCost;
- }
-
- /**
- * Returns the total cost of the sale, including discount and delivery cost.
- */
- @Transient
- public double getTotalCost() {
- return getAmount() + getDeliveryCost() - getSavings();
- }
-
- public String toString() {
- return new ToStringCreator(this).append("price", price).append("itemCount", itemCount).append("shippingType",
- shippingType).append("shipDate", shipDate).toString();
- }
-}
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SaleProcessor.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SaleProcessor.java
deleted file mode 100644
index 34692766..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SaleProcessor.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2004-2007 the original author or authors.
- *
- * 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.
- */
-package org.springframework.webflow.samples.sellitem;
-
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public interface SaleProcessor {
-
- public void process(Sale sale);
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SaleValidator.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SaleValidator.java
deleted file mode 100644
index a7731a55..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SaleValidator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2004-2007 the original author or authors.
- *
- * 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.
- */
-package org.springframework.webflow.samples.sellitem;
-
-import org.springframework.validation.Errors;
-import org.springframework.validation.Validator;
-
-// todo remove dependency on Validator interface
-public class SaleValidator implements Validator {
-
- public boolean supports(Class clazz) {
- return Sale.class.equals(clazz);
- }
-
- public void validate(Object obj, Errors errors) {
- Sale sale = (Sale) obj;
- validatePriceAndItemCount(sale, errors);
- }
-
- public void validatePriceAndItemCount(Sale sale, Errors errors) {
- if (sale.getItemCount() <= 0) {
- errors.rejectValue("itemCount", "tooLittle", "Item count must be greater than 0");
- }
- if (sale.getPrice() <= 0.0) {
- errors.rejectValue("price", "tooLittle", "Price must be greater than 0.0");
- }
- }
-}
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SellItemFlowExecutionListener.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SellItemFlowExecutionListener.java
deleted file mode 100644
index 94545c27..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SellItemFlowExecutionListener.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2004-2007 the original author or authors.
- *
- * 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.
- */
-package org.springframework.webflow.samples.sellitem;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.util.StringUtils;
-import org.springframework.webflow.context.servlet.ServletExternalContext;
-import org.springframework.webflow.definition.StateDefinition;
-import org.springframework.webflow.execution.EnterStateVetoException;
-import org.springframework.webflow.execution.FlowExecutionListenerAdapter;
-import org.springframework.webflow.execution.RequestContext;
-
-public class SellItemFlowExecutionListener extends FlowExecutionListenerAdapter {
-
- public void stateEntering(RequestContext context, StateDefinition nextState) throws EnterStateVetoException {
- String role = nextState.getAttributes().getString("role");
- if (StringUtils.hasText(role)) {
- HttpServletRequest request = ((ServletExternalContext) context.getExternalContext()).getRequest();// todo
- // remove
- // dependency
- // on
- // servlet
- // api
- if (!request.isUserInRole(role)) {
- throw new EnterStateVetoException(context.getActiveFlow().getId(), context.getCurrentState().getId(),
- nextState.getId(), "State requires role '" + role
- + "', but the authenticated user doesn't have it!");
- }
- }
- }
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SellItemPropertyEditorRegistrar.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SellItemPropertyEditorRegistrar.java
deleted file mode 100644
index 7b2e67d2..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/SellItemPropertyEditorRegistrar.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2004-2007 the original author or authors.
- *
- * 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.
- */
-package org.springframework.webflow.samples.sellitem;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import org.springframework.beans.PropertyEditorRegistrar;
-import org.springframework.beans.PropertyEditorRegistry;
-import org.springframework.beans.propertyeditors.CustomDateEditor;
-
-public class SellItemPropertyEditorRegistrar implements PropertyEditorRegistrar {
-
- public void registerCustomEditors(PropertyEditorRegistry registry) {
- registry.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("MM/dd/yyyy"), true));
- }
-}
diff --git a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/jpa/JpaSaleProcessor.java b/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/jpa/JpaSaleProcessor.java
deleted file mode 100644
index 82a8233b..00000000
--- a/spring-webflow-sandbox/src/main/java/org/springframework/webflow/samples/sellitem/jpa/JpaSaleProcessor.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.springframework.webflow.samples.sellitem.jpa;
-
-import org.springframework.webflow.samples.sellitem.SaleProcessor;
-import org.springframework.webflow.samples.sellitem.Sale;
-
-import javax.persistence.EntityManager;
-
-public abstract class JpaSaleProcessor implements SaleProcessor {
- public void process(Sale sale) {
- EntityManager entityManager = getEntityManager();
- entityManager.persist(sale);
- }
-
- protected abstract EntityManager getEntityManager();
-}
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml b/spring-webflow-sandbox/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml
deleted file mode 100644
index a609ee3c..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/classes/log4j.properties b/spring-webflow-sandbox/src/main/webapp/WEB-INF/classes/log4j.properties
deleted file mode 100644
index 5ba9222c..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/classes/log4j.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-log4j.rootCategory=WARN, stdout
-
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
-
-# Enable web flow logging
-log4j.category.org.springframework.webflow=DEBUG
-log4j.category.org.springframework.binding=DEBUG
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/classes/org/springframework/webflow/samples/sellitem/services-config.xml b/spring-webflow-sandbox/src/main/webapp/WEB-INF/classes/org/springframework/webflow/samples/sellitem/services-config.xml
deleted file mode 100644
index a21c5989..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/classes/org/springframework/webflow/samples/sellitem/services-config.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- org.hibernate.dialect.HSQLDialect
- create-drop
- org.hsqldb.jdbcDriver
- jdbc:hsqldb:mem:sellItem
- after_transaction
- true
- org.hibernate.context.ManagedSessionContext
-
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/conversation-scope/sellitem-beans.xml b/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/conversation-scope/sellitem-beans.xml
deleted file mode 100644
index 66a4c1cc..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/conversation-scope/sellitem-beans.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/conversation-scope/sellitem-conversation-scope-flow.xml b/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/conversation-scope/sellitem-conversation-scope-flow.xml
deleted file mode 100644
index b6850a3f..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/conversation-scope/sellitem-conversation-scope-flow.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/conversation-scope/shipping-conversation-scope-flow.xml b/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/conversation-scope/shipping-conversation-scope-flow.xml
deleted file mode 100644
index 2f12345f..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/conversation-scope/shipping-conversation-scope-flow.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/sellitem-beans.xml b/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/sellitem-beans.xml
deleted file mode 100644
index 2b828373..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/sellitem-beans.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/sellitem-flow.xml b/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/sellitem-flow.xml
deleted file mode 100644
index a49fb3d2..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/sellitem-flow.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/shipping-flow.xml b/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/shipping-flow.xml
deleted file mode 100644
index 9bf52e40..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/shipping-flow.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/simple/sellitem-simple-flow.xml b/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/simple/sellitem-simple-flow.xml
deleted file mode 100644
index 8c06eaa1..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/flows/simple/sellitem-simple-flow.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/categoryForm.jsp b/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/categoryForm.jsp
deleted file mode 100644
index 6d132f90..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/categoryForm.jsp
+++ /dev/null
@@ -1,48 +0,0 @@
-<%@ include file="includeTop.jsp" %>
-
-
-
-<%@ include file="includeBottom.jsp" %>
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/costOverview.jsp b/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/costOverview.jsp
deleted file mode 100644
index 8dd43e98..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/costOverview.jsp
+++ /dev/null
@@ -1,71 +0,0 @@
-<%@ include file="includeTop.jsp" %>
-
-
-
-
Purchase cost overview
-
-
-
-
-<%@ include file="includeBottom.jsp" %>
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/error.jsp b/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/error.jsp
deleted file mode 100644
index 65d8ab8c..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/error.jsp
+++ /dev/null
@@ -1,17 +0,0 @@
-<%@ include file="includeTop.jsp" %>
-
-
-
-

-
-
-
- Duplicate submit of the same transaction not allowed!
-
-
-
- Sell a new item
-
-
-
-<%@ include file="includeBottom.jsp" %>
\ No newline at end of file
diff --git a/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/includeBottom.jsp b/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/includeBottom.jsp
deleted file mode 100644
index dfe41438..00000000
--- a/spring-webflow-sandbox/src/main/webapp/WEB-INF/jsp/includeBottom.jsp
+++ /dev/null
@@ -1,5 +0,0 @@
-
-