diff --git a/.classpath b/.classpath index fd307b509eafb5c6d0ae946fa9ebb6b00d730614..60252b002326b29ed1af03b50e72cf86555a0cab 100644 --- a/.classpath +++ b/.classpath @@ -1,38 +1,38 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" output="target/classes" path="src/main/java"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="src" output="target/test-classes" path="src/test/java"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="src" path="src/performancetest/java"/> - <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="src" path="conf"/> - <classpathentry kind="output" path="target/classes"/> -</classpath> +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" output="target/classes" path="src/main/java"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="src" output="target/test-classes" path="src/test/java"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="src" path="src/performancetest/java"/> + <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="src" path="conf"/> + <classpathentry kind="output" path="target/classes"/> +</classpath> diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 28f559fe7e7a625102643ff06297cba345e9adb1..db2cf951f0e1df06eda81efc054aae16abbe172f 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,387 +1,387 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -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.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -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.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -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=warning -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=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.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -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.potentialNullReference=ignore -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -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.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -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.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.8 -org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled -org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,LOW -org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,BETTER -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_annotation=0 -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_method_declaration=0 -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_resources_in_try=80 -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.alignment_for_union_type_in_multicatch=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_lambda_body=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=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=165 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -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=1 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true -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=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -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_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=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_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=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_after_type_annotation=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=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=do not 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=do not 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_lambda_arrow=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_try=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_semicolon_in_try_resources=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_try=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_lambda_arrow=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_try=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_semicolon_in_try_resources=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=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=165 -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_on_off_tags=false -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +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.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +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.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +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=warning +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=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.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +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.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +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.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +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.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled +org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,LOW +org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,BETTER +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_annotation=0 +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_method_declaration=0 +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_resources_in_try=80 +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.alignment_for_union_type_in_multicatch=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_lambda_body=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=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=165 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +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=1 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +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=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +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_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=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_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=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_after_type_annotation=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=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=do not 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=do not 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_lambda_arrow=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_try=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_semicolon_in_try_resources=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_try=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_lambda_arrow=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_try=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_semicolon_in_try_resources=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=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=165 +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_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..f5c99a7f6655acb89125f8623b27ce1001d82b75 --- /dev/null +++ b/.travis.yml @@ -0,0 +1 @@ +language: java \ No newline at end of file diff --git a/pom.xml b/pom.xml index 58ff7143640d9c18c15411e62537a079469cadc7..848195e22fc20bdf29c53e5937750a363f0a3367 100644 --- a/pom.xml +++ b/pom.xml @@ -1,369 +1,371 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <groupId>net.sourceforge.teetime-stages</groupId> - <artifactId>teetime-stages</artifactId> - <version>2.1-SNAPSHOT</version> - <packaging>jar</packaging> - - <name>TeeTime-Stages</name> - <inceptionYear>2015</inceptionYear> - <url>http://teetime-framework.github.io</url> - <description>Kieker specific stages for the TeeTime framework</description> - - <licenses> - <license> - <name>Apache License, Version 2.0</name> - <url>http://christianwulf.github.io/teetime/LICENSE.txt</url> - </license> - </licenses> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <java.version>1.8</java.version> - </properties> - - - <repositories> - <repository> - <!-- for SNAPSHOT versions --> - <id>sonatype.oss.snapshots</id> - <url>https://oss.sonatype.org/content/repositories/snapshots/</url> - </repository> - </repositories> - - <distributionManagement> - <snapshotRepository> - <id>teetime-deployment</id> - <url>https://oss.sonatype.org/content/repositories/snapshots</url> - </snapshotRepository> - <repository> - <id>teetime-deployment</id> - <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> - </repository> - </distributionManagement> - - <developers> - <developer> - <id>chw</id> - <name>Christian Wulf</name> - <email>chw@informatik.uni-kiel.de</email> - <organization>Christian-Albrechts-Universitaet zu Kiel</organization> - <organizationUrl>http://www.se.informatik.uni-kiel.de/en/team/christian-wulf</organizationUrl> - </developer> - <developer> - <id>ntd</id> - <name>Nelson Tavares de Sousa</name> - <email>ntd@informatik.uni-kiel.de</email> - <organization>Christian-Albrechts-Universitaet zu Kiel</organization> - <organizationUrl>http://www.se.uni-kiel.de/en</organizationUrl> - </developer> - </developers> - - <scm> - <connection>scm:git:https://build.se.informatik.uni-kiel.de/gitlab/chw/teetime.git</connection> - <developerConnection>scm:git:ssh://gitlab@build.se.informatik.uni-kiel.de:chw/teetime.git</developerConnection> - <url>https://build.se.informatik.uni-kiel.de/gitlab/chw/teetime/</url> - </scm> - - <dependencies> - <dependency> - <groupId>net.sourceforge.teetime</groupId> - <artifactId>teetime</artifactId> - <version>2.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>net.kieker-monitoring</groupId> - <artifactId>kieker</artifactId> - <version>1.11</version> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.11</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-library</artifactId> - <version>1.3</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>1.7.7</version> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <version>1.1.2</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>18.0</version> - </dependency> - <dependency> - <groupId>com.tinkerpop.blueprints</groupId> - <artifactId>blueprints-core</artifactId> - <version>2.6.0</version> - </dependency> - </dependencies> - - <build> - <plugins> - - <!-- we want JDK 1.6 source and binary compatibility --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.1</version> - - <configuration> - <source>${java.version}</source> - <target>${java.version}</target> - </configuration> - </plugin> - - <!-- goals to check for plugin updates: versions:display-plugin-updates --> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>versions-maven-plugin</artifactId> - <version>2.1</version> - </plugin> - - <!-- goals to build a jar with binaries: jar:jar, jar:test-jar --> - <!-- <plugin> --> - <!-- <groupId>org.apache.maven.plugins</groupId> --> - <!-- <artifactId>maven-jar-plugin</artifactId> --> - <!-- <version>2.5</version> --> - <!-- <executions> --> - <!-- <execution> --> - <!-- <goals> --> - <!-- <goal>test-jar</goal> --> - <!-- </goals> --> - <!-- </execution> --> - <!-- </executions> --> - <!-- </plugin> --> - - <!-- copies all dependencies as separate jars into the target folder --> - <!-- <plugin> --> - <!-- <groupId>org.apache.maven.plugins</groupId> --> - <!-- <artifactId>maven-dependency-plugin</artifactId> --> - <!-- <version>2.10</version> --> - <!-- <executions> --> - <!-- <execution> --> - <!-- <id>copy-dependencies</id> --> - <!-- <phase>package</phase> --> - <!-- <goals> --> - <!-- <goal>copy-dependencies</goal> --> - <!-- </goals> --> - <!-- </execution> --> - <!-- </executions> --> - <!-- </plugin> --> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-source-plugin</artifactId> - <version>2.2.1</version> - <executions> - <execution> - <id>attach-sources</id> - <goals> - <goal>jar-no-fork</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-javadoc-plugin</artifactId> - <version>2.9.1</version> - <configuration> - <failOnError>false</failOnError> - </configuration> - <executions> - <execution> - <id>attach-javadocs</id> - <goals> - <goal>jar</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.sonatype.plugins</groupId> - <artifactId>nexus-staging-maven-plugin</artifactId> - <version>1.6.3</version> - <extensions>true</extensions> - <configuration> - <serverId>teetime-deployment</serverId> - <nexusUrl>https://oss.sonatype.org/</nexusUrl> - <autoReleaseAfterClose>false</autoReleaseAfterClose> - </configuration> - </plugin> - - <!-- Checkstyle --> - <!-- <plugin> --> - <!-- <groupId>org.apache.maven.plugins</groupId> --> - <!-- <artifactId>maven-checkstyle-plugin</artifactId> --> - <!-- <version>2.12</version> --> - <!-- <executions> --> - <!-- <execution> --> - <!-- <phase>test</phase> --> - <!-- <goals> --> - <!-- <goal>check</goal> --> - <!-- </goals> --> - <!-- <configuration> --> - <!-- <configLocation>${project.basedir}/conf/quality-config/cs-conf.xml</configLocation> --> - <!-- <includeTestSourceDirectory>true</includeTestSourceDirectory> --> - <!-- <encoding>UTF-8</encoding> --> - <!-- <consoleOutput>true</consoleOutput> --> - <!-- <failsOnError>false</failsOnError> --> - <!-- <failOnViolation>false</failOnViolation> --> - <!-- <linkXRef>false</linkXRef> --> - <!-- </configuration> --> - <!-- </execution> --> - <!-- </executions> --> - <!-- </plugin> --> - - <!-- Findbugs --> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>findbugs-maven-plugin</artifactId> - <version>3.0.0</version> - <configuration> - <effort>Max</effort> - <threshold>Low</threshold> - <includeTests>true</includeTests> - <failOnError>false</failOnError> - <excludeFilterFile>${project.basedir}/conf/quality-config/fb-filter.xml</excludeFilterFile> - </configuration> - <executions> - <execution> - <phase>test</phase> - <goals> - <goal>findbugs</goal> - </goals> - </execution> - </executions> - </plugin> - - <!-- PMD --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-pmd-plugin</artifactId> - <version>3.2</version> - <configuration> - <rulesets> - <ruleset>${project.basedir}/conf/quality-config/pmd-ruleset.xml</ruleset> - </rulesets> - <includeTests>true</includeTests> - <targetJdk>${java.version}</targetJdk> - <failOnError>false</failOnError> - </configuration> - <executions> - <execution> - <phase>test</phase> - <goals> - <goal>pmd</goal> - <goal>cpd</goal> - </goals> - </execution> - </executions> - </plugin> - - - <!-- Copyright Header --> - <plugin> - <groupId>com.mycila</groupId> - <artifactId>license-maven-plugin</artifactId> - <version>2.7</version> - <configuration> - <header>com/mycila/maven/plugin/license/templates/APACHE-2.txt</header> - <properties> - <owner>Christian Wulf, Nelson Tavares de Sousa</owner> - <email>http://christianwulf.github.io/teetime</email> - </properties> - <includes> - <include>**/*.java</include> - </includes> - </configuration> - <executions> - <execution> - <phase>test</phase> - <goals> - <goal>format</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - - - - <profiles> - <profile> - <id>performancetest</id> - <build> - <plugins> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <version>1.9.1</version> - <executions> - <execution> - <id>add-test-source</id> - <phase>generate-test-sources</phase> - <goals> - <goal>add-test-source</goal> - </goals> - <configuration> - <sources> - <source>src/performancetest/java</source> - </sources> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - <activation> - </activation> - </profile> - <profile> - <id>signing</id> - <activation> - <property> - <name>sign-jars</name> - <value>true</value> - </property> - </activation> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-gpg-plugin</artifactId> - <version>1.5</version> - <executions> - <execution> - <id>sign-artifacts</id> - <phase>verify</phase> - <goals> - <goal>sign</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> - -</project> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>net.sourceforge.teetime-stages</groupId> + <artifactId>teetime-stages</artifactId> + <version>2.1-SNAPSHOT</version> + <packaging>jar</packaging> + + <name>TeeTime-Stages</name> + <inceptionYear>2015</inceptionYear> + <url>http://teetime-framework.github.io</url> + <description>Kieker specific stages for the TeeTime framework</description> + + <licenses> + <license> + <name>Apache License, Version 2.0</name> + <url>http://christianwulf.github.io/teetime/LICENSE.txt</url> + </license> + </licenses> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <java.version>1.6</java.version> + </properties> + + + <repositories> + <repository> + <!-- for SNAPSHOT versions --> + <id>sonatype.oss.snapshots</id> + <url>https://oss.sonatype.org/content/repositories/snapshots/</url> + </repository> + </repositories> + + <distributionManagement> + <snapshotRepository> + <id>teetime-deployment</id> + <url>https://oss.sonatype.org/content/repositories/snapshots</url> + </snapshotRepository> + <repository> + <id>teetime-deployment</id> + <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> + </repository> + </distributionManagement> + + <developers> + <developer> + <id>chw</id> + <name>Christian Wulf</name> + <email>chw@informatik.uni-kiel.de</email> + <organization>Christian-Albrechts-Universitaet zu Kiel</organization> + <organizationUrl>http://www.se.informatik.uni-kiel.de/en/team/christian-wulf</organizationUrl> + </developer> + <developer> + <id>ntd</id> + <name>Nelson Tavares de Sousa</name> + <email>ntd@informatik.uni-kiel.de</email> + <organization>Christian-Albrechts-Universitaet zu Kiel</organization> + <organizationUrl>http://www.se.uni-kiel.de/en</organizationUrl> + </developer> + </developers> + + <scm> + <connection>scm:git:https://build.se.informatik.uni-kiel.de/gitlab/chw/teetime.git</connection> + <developerConnection>scm:git:ssh://gitlab@build.se.informatik.uni-kiel.de:chw/teetime.git</developerConnection> + <url>https://build.se.informatik.uni-kiel.de/gitlab/chw/teetime/</url> + </scm> + + <dependencies> + <dependency> + <groupId>net.sourceforge.teetime</groupId> + <artifactId>teetime</artifactId> + <version>2.1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>net.kieker-monitoring</groupId> + <artifactId>kieker</artifactId> + <version>1.11</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-library</artifactId> + <version>1.3</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.7.7</version> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>1.1.2</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>18.0</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.19.1</version> + <configuration> + <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds> + </configuration> + </plugin> + <!-- we want JDK 1.6 source and binary compatibility --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.1</version> + + <configuration> + <source>${java.version}</source> + <target>${java.version}</target> + </configuration> + </plugin> + + <!-- goals to check for plugin updates: versions:display-plugin-updates --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>versions-maven-plugin</artifactId> + <version>2.1</version> + </plugin> + + <!-- goals to build a jar with binaries: jar:jar, jar:test-jar --> + <!-- <plugin> --> + <!-- <groupId>org.apache.maven.plugins</groupId> --> + <!-- <artifactId>maven-jar-plugin</artifactId> --> + <!-- <version>2.5</version> --> + <!-- <executions> --> + <!-- <execution> --> + <!-- <goals> --> + <!-- <goal>test-jar</goal> --> + <!-- </goals> --> + <!-- </execution> --> + <!-- </executions> --> + <!-- </plugin> --> + + <!-- copies all dependencies as separate jars into the target folder --> + <!-- <plugin> --> + <!-- <groupId>org.apache.maven.plugins</groupId> --> + <!-- <artifactId>maven-dependency-plugin</artifactId> --> + <!-- <version>2.10</version> --> + <!-- <executions> --> + <!-- <execution> --> + <!-- <id>copy-dependencies</id> --> + <!-- <phase>package</phase> --> + <!-- <goals> --> + <!-- <goal>copy-dependencies</goal> --> + <!-- </goals> --> + <!-- </execution> --> + <!-- </executions> --> + <!-- </plugin> --> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.2.1</version> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9.1</version> + <configuration> + <failOnError>false</failOnError> + </configuration> + <executions> + <execution> + <id>attach-javadocs</id> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.sonatype.plugins</groupId> + <artifactId>nexus-staging-maven-plugin</artifactId> + <version>1.6.3</version> + <extensions>true</extensions> + <configuration> + <serverId>teetime-deployment</serverId> + <nexusUrl>https://oss.sonatype.org/</nexusUrl> + <autoReleaseAfterClose>false</autoReleaseAfterClose> + </configuration> + </plugin> + + <!-- Checkstyle --> + <!-- <plugin> --> + <!-- <groupId>org.apache.maven.plugins</groupId> --> + <!-- <artifactId>maven-checkstyle-plugin</artifactId> --> + <!-- <version>2.12</version> --> + <!-- <executions> --> + <!-- <execution> --> + <!-- <phase>test</phase> --> + <!-- <goals> --> + <!-- <goal>check</goal> --> + <!-- </goals> --> + <!-- <configuration> --> + <!-- <configLocation>${project.basedir}/conf/quality-config/cs-conf.xml</configLocation> --> + <!-- <includeTestSourceDirectory>true</includeTestSourceDirectory> --> + <!-- <encoding>UTF-8</encoding> --> + <!-- <consoleOutput>true</consoleOutput> --> + <!-- <failsOnError>false</failsOnError> --> + <!-- <failOnViolation>false</failOnViolation> --> + <!-- <linkXRef>false</linkXRef> --> + <!-- </configuration> --> + <!-- </execution> --> + <!-- </executions> --> + <!-- </plugin> --> + + <!-- Findbugs --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>findbugs-maven-plugin</artifactId> + <version>3.0.0</version> + <configuration> + <effort>Max</effort> + <threshold>Low</threshold> + <includeTests>true</includeTests> + <failOnError>false</failOnError> + <excludeFilterFile>${project.basedir}/conf/quality-config/fb-filter.xml</excludeFilterFile> + </configuration> + <executions> + <execution> + <phase>test</phase> + <goals> + <goal>findbugs</goal> + </goals> + </execution> + </executions> + </plugin> + + <!-- PMD --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + <version>3.2</version> + <configuration> + <rulesets> + <ruleset>${project.basedir}/conf/quality-config/pmd-ruleset.xml</ruleset> + </rulesets> + <includeTests>true</includeTests> + <targetJdk>${java.version}</targetJdk> + <failOnError>false</failOnError> + </configuration> + <executions> + <execution> + <phase>test</phase> + <goals> + <goal>pmd</goal> + <goal>cpd</goal> + </goals> + </execution> + </executions> + </plugin> + + + <!-- Copyright Header --> + <plugin> + <groupId>com.mycila</groupId> + <artifactId>license-maven-plugin</artifactId> + <version>2.7</version> + <configuration> + <header>com/mycila/maven/plugin/license/templates/APACHE-2.txt</header> + <properties> + <owner>Christian Wulf, Nelson Tavares de Sousa</owner> + <email>http://teetime-framework.github.io</email> + </properties> + <includes> + <include>**/*.java</include> + </includes> + </configuration> + <executions> + <execution> + <phase>test</phase> + <goals> + <goal>format</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + + + + <profiles> + <profile> + <id>performancetest</id> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>1.9.1</version> + <executions> + <execution> + <id>add-test-source</id> + <phase>generate-test-sources</phase> + <goals> + <goal>add-test-source</goal> + </goals> + <configuration> + <sources> + <source>src/performancetest/java</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <activation> + </activation> + </profile> + <profile> + <id>signing</id> + <activation> + <property> + <name>sign-jars</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.5</version> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + +</project> diff --git a/src/main/java/kieker/analysis/TraceAnalysis.java b/src/main/java/kieker/analysis/TraceAnalysis.java index 2be3f3291dde9d61b42e3c9b1df89633a283c613..c0f18e61bcda17afe6c28af9c7ae904813f4d48e 100644 --- a/src/main/java/kieker/analysis/TraceAnalysis.java +++ b/src/main/java/kieker/analysis/TraceAnalysis.java @@ -1,44 +1,44 @@ -/** - * - */ -package kieker.analysis; - -import java.io.File; - -import com.tinkerpop.blueprints.Edge; -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.Vertex; -import com.tinkerpop.blueprints.impls.tg.TinkerGraph; - -import teetime.framework.Execution; - -/** - * - */ -public final class TraceAnalysis { - - public static void main(final String[] args) { - - // TODO Temp - File importDirectory = new File("example/event monitoring log"); - - final TraceAnalysisConfiguration traceAnalysisConfiguration = new TraceAnalysisConfiguration(importDirectory); - final Execution<TraceAnalysisConfiguration> analysis = new Execution<>(traceAnalysisConfiguration); - analysis.executeBlocking(); - - /* - * - * - * - * TODO - */ - - Graph graph = new TinkerGraph(); - - Vertex vertex = graph.addVertex(101); - - Edge edge = vertex.addEdge("Label", vertex); - - } - -} +/** + * + */ +package kieker.analysis; + +import java.io.File; + +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Graph; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.impls.tg.TinkerGraph; + +import teetime.framework.Execution; + +/** + * + */ +public final class TraceAnalysis { + + public static void main(final String[] args) { + + // TODO Temp + File importDirectory = new File("example/event monitoring log"); + + final TraceAnalysisConfiguration traceAnalysisConfiguration = new TraceAnalysisConfiguration(importDirectory); + final Execution<TraceAnalysisConfiguration> analysis = new Execution<>(traceAnalysisConfiguration); + analysis.executeBlocking(); + + /* + * + * + * + * TODO + */ + + Graph graph = new TinkerGraph(); + + Vertex vertex = graph.addVertex(101); + + Edge edge = vertex.addEdge("Label", vertex); + + } + +} diff --git a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java index 11de06acc784a021d2389717dbd2c4fdb37d7e37..e78b6a3561d27758714121ac2a4052b332ef6d1d 100644 --- a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java +++ b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java @@ -1,155 +1,155 @@ -/** - * - */ -package kieker.analysis; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import com.tinkerpop.blueprints.Graph; - -import kieker.analysis.dev.DependencyCreatorStage; -import kieker.analysis.dev.DependencyStatisticsDecoratorStage; -import kieker.analysis.domain.AggregatedOperationCall; -import kieker.analysis.domain.AggregatedTrace; -import kieker.analysis.domain.OperationCall; -import kieker.analysis.domain.Trace; -import kieker.analysis.stage.tracediagnosis.AllowedRecordsFilter; -import kieker.analysis.stage.tracediagnosis.BeginEndOfMonitoringDetector; -import kieker.analysis.stage.tracediagnosis.OperationCallHandlerComposite; -import kieker.analysis.stage.tracediagnosis.ReadingComposite; -import kieker.analysis.stage.tracediagnosis.TraceAggregationComposite; -import kieker.analysis.stage.tracediagnosis.TraceReconstructionComposite; -import kieker.analysis.trace.graphoutput.DotGraphWriter; -import kieker.analysis.trace.graphoutput.GraphMLWriter; -import kieker.analysis.trace.traversal.AggrTraceTraverserStage; -import kieker.analysis.trace.traversal.TraceTraverserStage; -import kieker.analysis.util.graph.NamedGraph; -import kieker.common.record.IMonitoringRecord; -import kieker.common.record.misc.KiekerMetadataRecord; - -import teetime.framework.Configuration; -import teetime.stage.CollectorSink; -import teetime.stage.MultipleInstanceOfFilter; -import teetime.stage.basic.distributor.Distributor; -import teetime.stage.basic.distributor.strategy.CopyByReferenceStrategy; - -/** - * - */ - -public class TraceAnalysisConfiguration extends Configuration { - - private final List<OperationCall> operationCalls = new ArrayList<>(1000); - private final List<AggregatedOperationCall> aggregatedOperationCalls = new ArrayList<>(1000); - - private final List<KiekerMetadataRecord> metadataRecords = new ArrayList<>(1000); - private final TraceReconstructionComposite reconstruction; - private final BeginEndOfMonitoringDetector beginEndOfMonitoringDetector; - private final AllowedRecordsFilter allowedRecordsFilter; - - public TraceAnalysisConfiguration(final File importDirectory) { - // Create the stages - final ReadingComposite reader = new ReadingComposite(importDirectory); - final MultipleInstanceOfFilter<IMonitoringRecord> typeFilter = new MultipleInstanceOfFilter<>(); - final Distributor<Trace> distributor = new Distributor<>(new CopyByReferenceStrategy()); - final TraceAggregationComposite aggregation = new TraceAggregationComposite(); - final CollectorSink<KiekerMetadataRecord> metadataCollector = new CollectorSink<>(this.metadataRecords); - final OperationCallHandlerComposite operationCallHandler = new OperationCallHandlerComposite(this.operationCalls, this.aggregatedOperationCalls); - - this.allowedRecordsFilter = new AllowedRecordsFilter(); - this.beginEndOfMonitoringDetector = new BeginEndOfMonitoringDetector(); - this.reconstruction = new TraceReconstructionComposite(true); // TODO Temp. Get Data from PropertyModel - - // Connect the stages - super.connectPorts(reader.getOutputPort(), allowedRecordsFilter.getInputPort()); - super.connectPorts(allowedRecordsFilter.getOutputPort(), typeFilter.getInputPort()); - super.connectPorts(typeFilter.getOutputPortForType(IMonitoringRecord.class), this.beginEndOfMonitoringDetector.getInputPort()); - super.connectPorts(this.beginEndOfMonitoringDetector.getOutputPort(), this.reconstruction.getInputPort()); - super.connectPorts(this.reconstruction.getOutputPort(), distributor.getInputPort()); - super.connectPorts(distributor.getNewOutputPort(), operationCallHandler.getInputPort()); - super.connectPorts(distributor.getNewOutputPort(), aggregation.getInputPort()); - super.connectPorts(typeFilter.getOutputPortForType(KiekerMetadataRecord.class), metadataCollector.getInputPort()); - - // Graph Creation - // TODO move to own composite(s) - - String graphFilesOutputDir = "example/event monitoring log/output"; // TODO Temp hard coded - - TraceTraverserStage traceTraverserStage = new TraceTraverserStage(); - final Distributor<NamedGraph<Graph>> graphDistributor = new Distributor<>(new CopyByReferenceStrategy()); - GraphMLWriter graphMLWriter = new GraphMLWriter(graphFilesOutputDir); - DotGraphWriter dotGraphWriter = new DotGraphWriter(graphFilesOutputDir); - - super.connectPorts(distributor.getNewOutputPort(), traceTraverserStage.getInputPort()); - super.connectPorts(traceTraverserStage.getOutputPort(), graphDistributor.getInputPort()); - super.connectPorts(graphDistributor.getNewOutputPort(), graphMLWriter.getInputPort()); - super.connectPorts(graphDistributor.getNewOutputPort(), dotGraphWriter.getInputPort()); - - final Distributor<AggregatedTrace> aggregatedTraceDistributor = new Distributor<>(new CopyByReferenceStrategy()); - AggrTraceTraverserStage aggrTraceTraverser = new AggrTraceTraverserStage(); - final Distributor<NamedGraph<Graph>> graphDistributor2 = new Distributor<>(new CopyByReferenceStrategy()); - GraphMLWriter graphMLWriter2 = new GraphMLWriter(graphFilesOutputDir); - DotGraphWriter dotGraphWriter2 = new DotGraphWriter(graphFilesOutputDir); - - super.connectPorts(aggregation.getOutputPort(), aggregatedTraceDistributor.getInputPort()); - - super.connectPorts(aggregatedTraceDistributor.getNewOutputPort(), aggrTraceTraverser.getInputPort()); - super.connectPorts(aggrTraceTraverser.getOutputPort(), graphDistributor2.getInputPort()); - super.connectPorts(graphDistributor2.getNewOutputPort(), graphMLWriter2.getInputPort()); - super.connectPorts(graphDistributor2.getNewOutputPort(), dotGraphWriter2.getInputPort()); - - DependencyCreatorStage dependencyCreatorStage = new DependencyCreatorStage(); - DependencyStatisticsDecoratorStage dependencyStatisticsDecoratorStage = new DependencyStatisticsDecoratorStage(); - super.connectPorts(aggregatedTraceDistributor.getNewOutputPort(), dependencyCreatorStage.getInputPort()); - super.connectPorts(dependencyCreatorStage.getOutputPort(), dependencyStatisticsDecoratorStage.getInputPort()); - - /* - * - * - */ - - // TODO Temp Some examples for nested graphs - // - // final NestedGraphFactory nestedGraphFactory = new NestedGraphFactory(); - // final ObjectProducer<NestedGraph<Graph>> nestedGraphProducerStage = new ObjectProducer<>(1, nestedGraphFactory); - // final NestedGraphPrinterStage nestedGraphPrinterStage = new NestedGraphPrinterStage(); - // - // super.connectPorts(nestedGraphProducerStage.getOutputPort(), nestedGraphPrinterStage.getInputPort()); - - } - - public long getBeginTimestamp() { - return this.beginEndOfMonitoringDetector.getBeginTimestamp(); - } - - public long getEndTimestamp() { - return this.beginEndOfMonitoringDetector.getEndTimestamp(); - } - - public int countIncompleteTraces() { - return this.reconstruction.countIncompleteTraces(); - } - - public int countDanglingEvents() { - return this.reconstruction.countDanglingRecords(); - } - - public int countIgnoredRecords() { - return this.allowedRecordsFilter.getIgnoredRecords(); - } - - public List<KiekerMetadataRecord> getMetadataRecords() { - return this.metadataRecords; - } - - public List<OperationCall> getOperationCalls() { - return this.operationCalls; - } - - public List<AggregatedOperationCall> getAggregatedOperationCalls() { - return this.aggregatedOperationCalls; - } - -} +/** + * + */ +package kieker.analysis; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import com.tinkerpop.blueprints.Graph; + +import kieker.analysis.dev.DependencyCreatorStage; +import kieker.analysis.dev.DependencyStatisticsDecoratorStage; +import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.domain.AggregatedTrace; +import kieker.analysis.domain.OperationCall; +import kieker.analysis.domain.Trace; +import kieker.analysis.stage.tracediagnosis.AllowedRecordsFilter; +import kieker.analysis.stage.tracediagnosis.BeginEndOfMonitoringDetector; +import kieker.analysis.stage.tracediagnosis.OperationCallHandlerComposite; +import kieker.analysis.stage.tracediagnosis.ReadingComposite; +import kieker.analysis.stage.tracediagnosis.TraceAggregationComposite; +import kieker.analysis.stage.tracediagnosis.TraceReconstructionComposite; +import kieker.analysis.trace.graphoutput.DotGraphWriter; +import kieker.analysis.trace.graphoutput.GraphMLWriter; +import kieker.analysis.trace.traversal.AggrTraceTraverserStage; +import kieker.analysis.trace.traversal.TraceTraverserStage; +import kieker.analysis.util.graph.NamedGraph; +import kieker.common.record.IMonitoringRecord; +import kieker.common.record.misc.KiekerMetadataRecord; + +import teetime.framework.Configuration; +import teetime.stage.CollectorSink; +import teetime.stage.MultipleInstanceOfFilter; +import teetime.stage.basic.distributor.Distributor; +import teetime.stage.basic.distributor.strategy.CopyByReferenceStrategy; + +/** + * + */ + +public class TraceAnalysisConfiguration extends Configuration { + + private final List<OperationCall> operationCalls = new ArrayList<>(1000); + private final List<AggregatedOperationCall> aggregatedOperationCalls = new ArrayList<>(1000); + + private final List<KiekerMetadataRecord> metadataRecords = new ArrayList<>(1000); + private final TraceReconstructionComposite reconstruction; + private final BeginEndOfMonitoringDetector beginEndOfMonitoringDetector; + private final AllowedRecordsFilter allowedRecordsFilter; + + public TraceAnalysisConfiguration(final File importDirectory) { + // Create the stages + final ReadingComposite reader = new ReadingComposite(importDirectory); + final MultipleInstanceOfFilter<IMonitoringRecord> typeFilter = new MultipleInstanceOfFilter<>(); + final Distributor<Trace> distributor = new Distributor<>(new CopyByReferenceStrategy()); + final TraceAggregationComposite aggregation = new TraceAggregationComposite(); + final CollectorSink<KiekerMetadataRecord> metadataCollector = new CollectorSink<>(this.metadataRecords); + final OperationCallHandlerComposite operationCallHandler = new OperationCallHandlerComposite(this.operationCalls, this.aggregatedOperationCalls); + + this.allowedRecordsFilter = new AllowedRecordsFilter(); + this.beginEndOfMonitoringDetector = new BeginEndOfMonitoringDetector(); + this.reconstruction = new TraceReconstructionComposite(true); // TODO Temp. Get Data from PropertyModel + + // Connect the stages + super.connectPorts(reader.getOutputPort(), allowedRecordsFilter.getInputPort()); + super.connectPorts(allowedRecordsFilter.getOutputPort(), typeFilter.getInputPort()); + super.connectPorts(typeFilter.getOutputPortForType(IMonitoringRecord.class), this.beginEndOfMonitoringDetector.getInputPort()); + super.connectPorts(this.beginEndOfMonitoringDetector.getOutputPort(), this.reconstruction.getInputPort()); + super.connectPorts(this.reconstruction.getOutputPort(), distributor.getInputPort()); + super.connectPorts(distributor.getNewOutputPort(), operationCallHandler.getInputPort()); + super.connectPorts(distributor.getNewOutputPort(), aggregation.getInputPort()); + super.connectPorts(typeFilter.getOutputPortForType(KiekerMetadataRecord.class), metadataCollector.getInputPort()); + + // Graph Creation + // TODO move to own composite(s) + + String graphFilesOutputDir = "example/event monitoring log/output"; // TODO Temp hard coded + + TraceTraverserStage traceTraverserStage = new TraceTraverserStage(); + final Distributor<NamedGraph<Graph>> graphDistributor = new Distributor<>(new CopyByReferenceStrategy()); + GraphMLWriter graphMLWriter = new GraphMLWriter(graphFilesOutputDir); + DotGraphWriter dotGraphWriter = new DotGraphWriter(graphFilesOutputDir); + + super.connectPorts(distributor.getNewOutputPort(), traceTraverserStage.getInputPort()); + super.connectPorts(traceTraverserStage.getOutputPort(), graphDistributor.getInputPort()); + super.connectPorts(graphDistributor.getNewOutputPort(), graphMLWriter.getInputPort()); + super.connectPorts(graphDistributor.getNewOutputPort(), dotGraphWriter.getInputPort()); + + final Distributor<AggregatedTrace> aggregatedTraceDistributor = new Distributor<>(new CopyByReferenceStrategy()); + AggrTraceTraverserStage aggrTraceTraverser = new AggrTraceTraverserStage(); + final Distributor<NamedGraph<Graph>> graphDistributor2 = new Distributor<>(new CopyByReferenceStrategy()); + GraphMLWriter graphMLWriter2 = new GraphMLWriter(graphFilesOutputDir); + DotGraphWriter dotGraphWriter2 = new DotGraphWriter(graphFilesOutputDir); + + super.connectPorts(aggregation.getOutputPort(), aggregatedTraceDistributor.getInputPort()); + + super.connectPorts(aggregatedTraceDistributor.getNewOutputPort(), aggrTraceTraverser.getInputPort()); + super.connectPorts(aggrTraceTraverser.getOutputPort(), graphDistributor2.getInputPort()); + super.connectPorts(graphDistributor2.getNewOutputPort(), graphMLWriter2.getInputPort()); + super.connectPorts(graphDistributor2.getNewOutputPort(), dotGraphWriter2.getInputPort()); + + DependencyCreatorStage dependencyCreatorStage = new DependencyCreatorStage(); + DependencyStatisticsDecoratorStage dependencyStatisticsDecoratorStage = new DependencyStatisticsDecoratorStage(); + super.connectPorts(aggregatedTraceDistributor.getNewOutputPort(), dependencyCreatorStage.getInputPort()); + super.connectPorts(dependencyCreatorStage.getOutputPort(), dependencyStatisticsDecoratorStage.getInputPort()); + + /* + * + * + */ + + // TODO Temp Some examples for nested graphs + // + // final NestedGraphFactory nestedGraphFactory = new NestedGraphFactory(); + // final ObjectProducer<NestedGraph<Graph>> nestedGraphProducerStage = new ObjectProducer<>(1, nestedGraphFactory); + // final NestedGraphPrinterStage nestedGraphPrinterStage = new NestedGraphPrinterStage(); + // + // super.connectPorts(nestedGraphProducerStage.getOutputPort(), nestedGraphPrinterStage.getInputPort()); + + } + + public long getBeginTimestamp() { + return this.beginEndOfMonitoringDetector.getBeginTimestamp(); + } + + public long getEndTimestamp() { + return this.beginEndOfMonitoringDetector.getEndTimestamp(); + } + + public int countIncompleteTraces() { + return this.reconstruction.countIncompleteTraces(); + } + + public int countDanglingEvents() { + return this.reconstruction.countDanglingRecords(); + } + + public int countIgnoredRecords() { + return this.allowedRecordsFilter.getIgnoredRecords(); + } + + public List<KiekerMetadataRecord> getMetadataRecords() { + return this.metadataRecords; + } + + public List<OperationCall> getOperationCalls() { + return this.operationCalls; + } + + public List<AggregatedOperationCall> getAggregatedOperationCalls() { + return this.aggregatedOperationCalls; + } + +} diff --git a/src/main/java/kieker/analysis/dev/AggregatedTraceCallsDecorator.java b/src/main/java/kieker/analysis/dev/AggregatedTraceCallsDecorator.java index 9690149337dbb50ee830a65355d50c09a862ee90..e3665cb83751f99e2b3140a5d323c8db92abca52 100644 --- a/src/main/java/kieker/analysis/dev/AggregatedTraceCallsDecorator.java +++ b/src/main/java/kieker/analysis/dev/AggregatedTraceCallsDecorator.java @@ -1,59 +1,59 @@ -package kieker.analysis.dev; - -import java.util.Iterator; - -import kieker.analysis.domain.AggregatedOperationCall; -import kieker.analysis.domain.AggregatedTrace; -import kieker.analysis.domain.OperationCall; -import kieker.analysis.domain.Trace; - -import teetime.stage.basic.AbstractTransformation; - -/** - * This stage assigns normal {@link OperationCall} to {@link AggregatedOperationCall}. - * - * @author Sören Henning - * - */ -public class AggregatedTraceCallsDecorator extends AbstractTransformation<AggregatedTrace, AggregatedTrace> { - - /* - * TODO Separate logic - * - * - use Visitor pattern - * - use a new trace traverser (AggTrace-List<Trace>-Traverser) - * - maybe the Trace-Traverser and AggTrace-List<Trace>-Traverser can share logic - * - */ - - @Override - protected void execute(final AggregatedTrace aggregatedTrace) { - - AggregatedOperationCall aggregatedOperationCall = aggregatedTrace.getRootOperationCall(); - - for (Trace trace : aggregatedTrace.getTraces()) { - - transformCall(aggregatedOperationCall, trace.getRootOperationCall()); - } - - this.getOutputPort().send(aggregatedTrace); - } - - public void transformTrace(final AggregatedTrace aggregatedTrace, final Trace trace) { - - transformCall(aggregatedTrace.getRootOperationCall(), trace.getRootOperationCall()); - } - - public void transformCall(final AggregatedOperationCall aggregatedOperationCall, final OperationCall operationCall) { - - // This would be the visit() method - aggregatedOperationCall.addBaseOperationCall(operationCall); - - Iterator<AggregatedOperationCall> aggCallIterator = aggregatedOperationCall.getChildren().iterator(); - Iterator<OperationCall> callIterator = operationCall.getChildren().iterator(); - while (aggCallIterator.hasNext() && callIterator.hasNext()) { - transformCall(aggCallIterator.next(), callIterator.next()); - } - } - -} +package kieker.analysis.dev; + +import java.util.Iterator; + +import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.domain.AggregatedTrace; +import kieker.analysis.domain.OperationCall; +import kieker.analysis.domain.Trace; + +import teetime.stage.basic.AbstractTransformation; + +/** + * This stage assigns normal {@link OperationCall} to {@link AggregatedOperationCall}. + * + * @author Sören Henning + * + */ +public class AggregatedTraceCallsDecorator extends AbstractTransformation<AggregatedTrace, AggregatedTrace> { + + /* + * TODO Separate logic + * + * - use Visitor pattern + * - use a new trace traverser (AggTrace-List<Trace>-Traverser) + * - maybe the Trace-Traverser and AggTrace-List<Trace>-Traverser can share logic + * + */ + + @Override + protected void execute(final AggregatedTrace aggregatedTrace) { + + AggregatedOperationCall aggregatedOperationCall = aggregatedTrace.getRootOperationCall(); + + for (Trace trace : aggregatedTrace.getTraces()) { + + transformCall(aggregatedOperationCall, trace.getRootOperationCall()); + } + + this.getOutputPort().send(aggregatedTrace); + } + + public void transformTrace(final AggregatedTrace aggregatedTrace, final Trace trace) { + + transformCall(aggregatedTrace.getRootOperationCall(), trace.getRootOperationCall()); + } + + public void transformCall(final AggregatedOperationCall aggregatedOperationCall, final OperationCall operationCall) { + + // This would be the visit() method + aggregatedOperationCall.addBaseOperationCall(operationCall); + + Iterator<AggregatedOperationCall> aggCallIterator = aggregatedOperationCall.getChildren().iterator(); + Iterator<OperationCall> callIterator = operationCall.getChildren().iterator(); + while (aggCallIterator.hasNext() && callIterator.hasNext()) { + transformCall(aggCallIterator.next(), callIterator.next()); + } + } + +} diff --git a/src/main/java/kieker/analysis/dev/ComponentDependencyGraphCreatorStage.java b/src/main/java/kieker/analysis/dev/ComponentDependencyGraphCreatorStage.java index 0191c8e1e186eec9e3d865553d31b758e4457150..08582c7f37b8fd51f9e5518b65329a4bb0e8bd10 100644 --- a/src/main/java/kieker/analysis/dev/ComponentDependencyGraphCreatorStage.java +++ b/src/main/java/kieker/analysis/dev/ComponentDependencyGraphCreatorStage.java @@ -1,19 +1,19 @@ -package kieker.analysis.dev; - -import com.tinkerpop.blueprints.Graph; - -import kieker.analysis.domain.OperationsDependency; - -import teetime.stage.basic.AbstractTransformation; - -public class ComponentDependencyGraphCreatorStage extends AbstractTransformation<OperationsDependency, Graph> { - - @Override - protected void execute(final OperationsDependency operationsDependency) { - - // Loop trough nodes - // Loop trough edges - - } - -} +package kieker.analysis.dev; + +import com.tinkerpop.blueprints.Graph; + +import kieker.analysis.domain.OperationsDependency; + +import teetime.stage.basic.AbstractTransformation; + +public class ComponentDependencyGraphCreatorStage extends AbstractTransformation<OperationsDependency, Graph> { + + @Override + protected void execute(final OperationsDependency operationsDependency) { + + // Loop trough nodes + // Loop trough edges + + } + +} diff --git a/src/main/java/kieker/analysis/dev/DependencyCreator.java b/src/main/java/kieker/analysis/dev/DependencyCreator.java index 93b6e47b4c122364fd566df32f61870324f2b406..419f43406a13e64988c0b3a12d711ec455f15037 100644 --- a/src/main/java/kieker/analysis/dev/DependencyCreator.java +++ b/src/main/java/kieker/analysis/dev/DependencyCreator.java @@ -1,26 +1,26 @@ -package kieker.analysis.dev; - -import kieker.analysis.domain.AggregatedOperationCall; -import kieker.analysis.domain.OperationsDependency; -import kieker.analysis.trace.traversal.OperationCallVisitor; - -public class DependencyCreator extends OperationCallVisitor<AggregatedOperationCall> { - - private final OperationsDependency operationsDependency; - - public DependencyCreator(final OperationsDependency operationsDependency) { - this.operationsDependency = operationsDependency; - } - - @Override - public void visit(final AggregatedOperationCall operationCall) { - - operationsDependency.addCall(operationCall); - - } - - public OperationsDependency getOperationsDependency() { - return operationsDependency; - } - -} +package kieker.analysis.dev; + +import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.domain.OperationsDependency; +import kieker.analysis.trace.traversal.OperationCallVisitor; + +public class DependencyCreator extends OperationCallVisitor<AggregatedOperationCall> { + + private final OperationsDependency operationsDependency; + + public DependencyCreator(final OperationsDependency operationsDependency) { + this.operationsDependency = operationsDependency; + } + + @Override + public void visit(final AggregatedOperationCall operationCall) { + + operationsDependency.addCall(operationCall); + + } + + public OperationsDependency getOperationsDependency() { + return operationsDependency; + } + +} diff --git a/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java b/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java index 0c3403633e62aa2dece0b698333f9cd515b74351..01602930895e68ae1e1e48470d69a9791df6f9cd 100644 --- a/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java +++ b/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java @@ -1,27 +1,27 @@ -package kieker.analysis.dev; - -import kieker.analysis.domain.AggregatedTrace; -import kieker.analysis.domain.OperationsDependency; -import kieker.analysis.trace.traversal.TraceTraverser; - -import teetime.stage.basic.AbstractTransformation; - -public class DependencyCreatorStage extends AbstractTransformation<AggregatedTrace, OperationsDependency> { - - private final OperationsDependency operationsDependency = new OperationsDependency(); - private final DependencyCreator dependencyCreator = new DependencyCreator(operationsDependency); - - @Override - protected void execute(final AggregatedTrace trace) { - new TraceTraverser<>(dependencyCreator).traverse(trace); - } - - @Override - public void onTerminating() throws Exception { // NOPMD (the throws clause is forced by the framework) - - this.getOutputPort().send(operationsDependency); - - super.onTerminating(); - } - -} +package kieker.analysis.dev; + +import kieker.analysis.domain.AggregatedTrace; +import kieker.analysis.domain.OperationsDependency; +import kieker.analysis.trace.traversal.TraceTraverser; + +import teetime.stage.basic.AbstractTransformation; + +public class DependencyCreatorStage extends AbstractTransformation<AggregatedTrace, OperationsDependency> { + + private final OperationsDependency operationsDependency = new OperationsDependency(); + private final DependencyCreator dependencyCreator = new DependencyCreator(operationsDependency); + + @Override + protected void execute(final AggregatedTrace trace) { + new TraceTraverser<>(dependencyCreator).traverse(trace); + } + + @Override + public void onTerminating() throws Exception { // NOPMD (the throws clause is forced by the framework) + + this.getOutputPort().send(operationsDependency); + + super.onTerminating(); + } + +} diff --git a/src/main/java/kieker/analysis/dev/DependencyStatisticsDecorator.java b/src/main/java/kieker/analysis/dev/DependencyStatisticsDecorator.java index 569e9ed73266d9b77307481c6c45c6d174eeece0..a91a378a06ecb3865f7da4426569964f44bde92e 100644 --- a/src/main/java/kieker/analysis/dev/DependencyStatisticsDecorator.java +++ b/src/main/java/kieker/analysis/dev/DependencyStatisticsDecorator.java @@ -1,37 +1,37 @@ -package kieker.analysis.dev; - -import java.util.List; -import java.util.stream.Collectors; - -import kieker.analysis.domain.AggregatedOperationCall; -import kieker.analysis.domain.OperationsDependency; -import kieker.analysis.traceanalysisutil.Statistics; -import kieker.analysis.traceanalysisutil.StatisticsUtility; - -/** - * @author Sören Henning - * - */ -// TODO Maybe make static -public class DependencyStatisticsDecorator { - - public void decorate(final OperationsDependency operationsDependency) { - - for (AggregatedOperationCall operation : operationsDependency.getOperations()) { - - List<Long> durations = operation.getBaseOperationCalls().stream() - .map(call -> call.getDuration()).collect(Collectors.toList()); - - Statistics statistics = StatisticsUtility.calculateStatistics(durations); - - operation.setTotalDuration(statistics.getTotalDuration()); - operation.setMaxDuration(statistics.getMaxDuration()); - operation.setMinDuration(statistics.getMinDuration()); - operation.setMeanDuration(statistics.getMeanDuration()); - operation.setMedianDuration(statistics.getMedianDuration()); - - } - - } - -} +package kieker.analysis.dev; + +import java.util.List; +import java.util.stream.Collectors; + +import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.domain.OperationsDependency; +import kieker.analysis.traceanalysisutil.Statistics; +import kieker.analysis.traceanalysisutil.StatisticsUtility; + +/** + * @author Sören Henning + * + */ +// TODO Maybe make static +public class DependencyStatisticsDecorator { + + public void decorate(final OperationsDependency operationsDependency) { + + for (AggregatedOperationCall operation : operationsDependency.getOperations()) { + + List<Long> durations = operation.getBaseOperationCalls().stream() + .map(call -> call.getDuration()).collect(Collectors.toList()); + + Statistics statistics = StatisticsUtility.calculateStatistics(durations); + + operation.setTotalDuration(statistics.getTotalDuration()); + operation.setMaxDuration(statistics.getMaxDuration()); + operation.setMinDuration(statistics.getMinDuration()); + operation.setMeanDuration(statistics.getMeanDuration()); + operation.setMedianDuration(statistics.getMedianDuration()); + + } + + } + +} diff --git a/src/main/java/kieker/analysis/dev/DependencyStatisticsDecoratorStage.java b/src/main/java/kieker/analysis/dev/DependencyStatisticsDecoratorStage.java index 6fbe87ff77b21f9eeb9bfee659567d368057ff1b..75fb19d0c45a48d9b4f60e2d4357c7e20371b679 100644 --- a/src/main/java/kieker/analysis/dev/DependencyStatisticsDecoratorStage.java +++ b/src/main/java/kieker/analysis/dev/DependencyStatisticsDecoratorStage.java @@ -1,28 +1,28 @@ -package kieker.analysis.dev; - -import kieker.analysis.domain.OperationsDependency; - -import teetime.stage.basic.AbstractTransformation; - -/** - * @author Sören Henning - * - */ -public class DependencyStatisticsDecoratorStage extends AbstractTransformation<OperationsDependency, OperationsDependency> { - - private final DependencyStatisticsDecorator statisticsDecorator = new DependencyStatisticsDecorator(); - - @Override - protected void execute(final OperationsDependency operationsDependency) { - - statisticsDecorator.decorate(operationsDependency); - - // TODO Temporary final stage -> print result - operationsDependency.printDependenncies(); - operationsDependency.printOperations(); - - this.getOutputPort().send(operationsDependency); - - } - -} +package kieker.analysis.dev; + +import kieker.analysis.domain.OperationsDependency; + +import teetime.stage.basic.AbstractTransformation; + +/** + * @author Sören Henning + * + */ +public class DependencyStatisticsDecoratorStage extends AbstractTransformation<OperationsDependency, OperationsDependency> { + + private final DependencyStatisticsDecorator statisticsDecorator = new DependencyStatisticsDecorator(); + + @Override + protected void execute(final OperationsDependency operationsDependency) { + + statisticsDecorator.decorate(operationsDependency); + + // TODO Temporary final stage -> print result + operationsDependency.printDependenncies(); + operationsDependency.printOperations(); + + this.getOutputPort().send(operationsDependency); + + } + +} diff --git a/src/main/java/kieker/analysis/dev/nestedgraph/NestedGraph.java b/src/main/java/kieker/analysis/dev/nestedgraph/NestedGraph.java index 1005fc529877b4db05fb1670484eded527d6297d..e6e59ba294b45edb81cc874f31bf5b274252a57b 100644 --- a/src/main/java/kieker/analysis/dev/nestedgraph/NestedGraph.java +++ b/src/main/java/kieker/analysis/dev/nestedgraph/NestedGraph.java @@ -1,172 +1,172 @@ -package kieker.analysis.dev.nestedgraph; - -import java.util.HashSet; -import java.util.Set; - -import com.tinkerpop.blueprints.Edge; -import com.tinkerpop.blueprints.Features; -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.GraphQuery; -import com.tinkerpop.blueprints.Vertex; -import com.tinkerpop.blueprints.util.StringFactory; -import com.tinkerpop.blueprints.util.wrappers.WrapperGraph; -import com.tinkerpop.blueprints.util.wrappers.partition.PartitionGraph; - -public class NestedGraph<T extends Graph> implements Graph, WrapperGraph<T> { - - protected PartitionGraph<T> baseGraph; - - private final Features features; - - private static final String PARTITION_KEY = "__nested-graph-partition"; - - private static final String DEFAULT_PARTITION = ""; - - private final Set<NestedGraphPartition> partitions = new HashSet<>(); - - public NestedGraph(final T baseGraph) { - this.baseGraph = new PartitionGraph<>(baseGraph, PARTITION_KEY, DEFAULT_PARTITION); - this.features = this.baseGraph.getFeatures().copyFeatures(); - this.features.isWrapper = true; - } - - public void addPartition(final NestedGraphPartition partition) { - partitions.add(partition); - } - - public Iterable<NestedGraphPartition> getPartitions() { - return partitions; - } - - public Iterable<Vertex> getVerticesForPartition(final NestedGraphPartition partition) { - - baseGraph.removeReadPartition(DEFAULT_PARTITION); - baseGraph.addReadPartition(partition.getName()); - - Set<Vertex> vertices = new HashSet<Vertex>(); - for (Vertex vertex : baseGraph.getVertices()) { - vertices.add(vertex); - } - - baseGraph.removeReadPartition(partition.getName()); - baseGraph.addReadPartition(DEFAULT_PARTITION); - - return vertices; - } - - public Iterable<Edge> getEdgesForPartition(final NestedGraphPartition partition) { - - baseGraph.removeReadPartition(DEFAULT_PARTITION); - baseGraph.addReadPartition(partition.getName()); - - Set<Edge> edges = new HashSet<Edge>(); - for (Edge edge : baseGraph.getEdges()) { - edges.add(edge); - } - - baseGraph.removeReadPartition(partition.getName()); - baseGraph.addReadPartition(DEFAULT_PARTITION); - - return edges; - } - - public Vertex addVertexToPartition(final Object id, final NestedGraphPartition partition) { - - baseGraph.setWritePartition(partition.getName()); - - Vertex vertex = baseGraph.addVertex(id); - - baseGraph.setWritePartition(DEFAULT_PARTITION); - - return vertex; - - } - - public Edge addEdgeToPartition(final Object id, final Vertex outVertex, final Vertex inVertex, final String label, final NestedGraphPartition partition) { - - baseGraph.setWritePartition(partition.getName()); - - Edge edge = baseGraph.addEdge(id, outVertex, inVertex, label); - - baseGraph.setWritePartition(DEFAULT_PARTITION); - - return edge; - - } - - @Override - public Vertex addVertex(final Object id) { - return baseGraph.addVertex(id); - } - - @Override - public Vertex getVertex(final Object id) { - return baseGraph.getVertex(id); - } - - @Override - public Iterable<Vertex> getVertices() { - return this.baseGraph.getVertices(); - } - - @Override - public Iterable<Vertex> getVertices(final String key, final Object value) { - return this.baseGraph.getVertices(key, value); - } - - @Override - public Edge addEdge(final Object id, final Vertex outVertex, final Vertex inVertex, final String label) { - return baseGraph.addEdge(id, outVertex, inVertex, label); - } - - @Override - public Edge getEdge(final Object id) { - return baseGraph.getEdge(id); - } - - @Override - public Iterable<Edge> getEdges() { - return baseGraph.getEdges(); - } - - @Override - public Iterable<Edge> getEdges(final String key, final Object value) { - return this.baseGraph.getEdges(key, value); - } - - @Override - public void removeEdge(final Edge edge) { - baseGraph.removeEdge(edge); - } - - @Override - public void removeVertex(final Vertex vertex) { - baseGraph.removeVertex(vertex); - } - - @Override - public T getBaseGraph() { - return baseGraph.getBaseGraph(); - } - - @Override - public GraphQuery query() { - return this.baseGraph.query(); - } - - @Override - public String toString() { - return StringFactory.graphString(this, this.baseGraph.toString()); - } - - @Override - public Features getFeatures() { - return this.features; - } - - @Override - public void shutdown() { - this.baseGraph.shutdown(); - } - -} +package kieker.analysis.dev.nestedgraph; + +import java.util.HashSet; +import java.util.Set; + +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Features; +import com.tinkerpop.blueprints.Graph; +import com.tinkerpop.blueprints.GraphQuery; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.util.StringFactory; +import com.tinkerpop.blueprints.util.wrappers.WrapperGraph; +import com.tinkerpop.blueprints.util.wrappers.partition.PartitionGraph; + +public class NestedGraph<T extends Graph> implements Graph, WrapperGraph<T> { + + protected PartitionGraph<T> baseGraph; + + private final Features features; + + private static final String PARTITION_KEY = "__nested-graph-partition"; + + private static final String DEFAULT_PARTITION = ""; + + private final Set<NestedGraphPartition> partitions = new HashSet<>(); + + public NestedGraph(final T baseGraph) { + this.baseGraph = new PartitionGraph<>(baseGraph, PARTITION_KEY, DEFAULT_PARTITION); + this.features = this.baseGraph.getFeatures().copyFeatures(); + this.features.isWrapper = true; + } + + public void addPartition(final NestedGraphPartition partition) { + partitions.add(partition); + } + + public Iterable<NestedGraphPartition> getPartitions() { + return partitions; + } + + public Iterable<Vertex> getVerticesForPartition(final NestedGraphPartition partition) { + + baseGraph.removeReadPartition(DEFAULT_PARTITION); + baseGraph.addReadPartition(partition.getName()); + + Set<Vertex> vertices = new HashSet<Vertex>(); + for (Vertex vertex : baseGraph.getVertices()) { + vertices.add(vertex); + } + + baseGraph.removeReadPartition(partition.getName()); + baseGraph.addReadPartition(DEFAULT_PARTITION); + + return vertices; + } + + public Iterable<Edge> getEdgesForPartition(final NestedGraphPartition partition) { + + baseGraph.removeReadPartition(DEFAULT_PARTITION); + baseGraph.addReadPartition(partition.getName()); + + Set<Edge> edges = new HashSet<Edge>(); + for (Edge edge : baseGraph.getEdges()) { + edges.add(edge); + } + + baseGraph.removeReadPartition(partition.getName()); + baseGraph.addReadPartition(DEFAULT_PARTITION); + + return edges; + } + + public Vertex addVertexToPartition(final Object id, final NestedGraphPartition partition) { + + baseGraph.setWritePartition(partition.getName()); + + Vertex vertex = baseGraph.addVertex(id); + + baseGraph.setWritePartition(DEFAULT_PARTITION); + + return vertex; + + } + + public Edge addEdgeToPartition(final Object id, final Vertex outVertex, final Vertex inVertex, final String label, final NestedGraphPartition partition) { + + baseGraph.setWritePartition(partition.getName()); + + Edge edge = baseGraph.addEdge(id, outVertex, inVertex, label); + + baseGraph.setWritePartition(DEFAULT_PARTITION); + + return edge; + + } + + @Override + public Vertex addVertex(final Object id) { + return baseGraph.addVertex(id); + } + + @Override + public Vertex getVertex(final Object id) { + return baseGraph.getVertex(id); + } + + @Override + public Iterable<Vertex> getVertices() { + return this.baseGraph.getVertices(); + } + + @Override + public Iterable<Vertex> getVertices(final String key, final Object value) { + return this.baseGraph.getVertices(key, value); + } + + @Override + public Edge addEdge(final Object id, final Vertex outVertex, final Vertex inVertex, final String label) { + return baseGraph.addEdge(id, outVertex, inVertex, label); + } + + @Override + public Edge getEdge(final Object id) { + return baseGraph.getEdge(id); + } + + @Override + public Iterable<Edge> getEdges() { + return baseGraph.getEdges(); + } + + @Override + public Iterable<Edge> getEdges(final String key, final Object value) { + return this.baseGraph.getEdges(key, value); + } + + @Override + public void removeEdge(final Edge edge) { + baseGraph.removeEdge(edge); + } + + @Override + public void removeVertex(final Vertex vertex) { + baseGraph.removeVertex(vertex); + } + + @Override + public T getBaseGraph() { + return baseGraph.getBaseGraph(); + } + + @Override + public GraphQuery query() { + return this.baseGraph.query(); + } + + @Override + public String toString() { + return StringFactory.graphString(this, this.baseGraph.toString()); + } + + @Override + public Features getFeatures() { + return this.features; + } + + @Override + public void shutdown() { + this.baseGraph.shutdown(); + } + +} diff --git a/src/main/java/kieker/analysis/dev/nestedgraph/NestedGraphPartition.java b/src/main/java/kieker/analysis/dev/nestedgraph/NestedGraphPartition.java index afecb4d3ecd77271cd62b94c947231268c5233a0..ce092e3af60e04326ba9aceaaf8a2d5f9548c4ee 100644 --- a/src/main/java/kieker/analysis/dev/nestedgraph/NestedGraphPartition.java +++ b/src/main/java/kieker/analysis/dev/nestedgraph/NestedGraphPartition.java @@ -1,47 +1,47 @@ -package kieker.analysis.dev.nestedgraph; - -import java.util.HashSet; -import java.util.Set; - -public class NestedGraphPartition { - - private String name; - - private String label; - - private final Set<NestedGraphPartition> subPartitions = new HashSet<>(); - - public NestedGraphPartition(final String name) { - this(name, null); - } - - public NestedGraphPartition(final String name, final String label) { - this.name = name; - this.label = label; - } - - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - public String getLabel() { - return label; - } - - public void setLabel(final String label) { - this.label = label; - } - - public Iterable<NestedGraphPartition> getSubPartitions() { - return subPartitions; - } - - public void addSubPartition(final NestedGraphPartition subPartition) { - subPartitions.add(subPartition); - } - -} +package kieker.analysis.dev.nestedgraph; + +import java.util.HashSet; +import java.util.Set; + +public class NestedGraphPartition { + + private String name; + + private String label; + + private final Set<NestedGraphPartition> subPartitions = new HashSet<>(); + + public NestedGraphPartition(final String name) { + this(name, null); + } + + public NestedGraphPartition(final String name, final String label) { + this.name = name; + this.label = label; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public String getLabel() { + return label; + } + + public void setLabel(final String label) { + this.label = label; + } + + public Iterable<NestedGraphPartition> getSubPartitions() { + return subPartitions; + } + + public void addSubPartition(final NestedGraphPartition subPartition) { + subPartitions.add(subPartition); + } + +} diff --git a/src/main/java/kieker/analysis/dev/nestedgraph/SubGraph.java b/src/main/java/kieker/analysis/dev/nestedgraph/SubGraph.java index f60d214e970c76aa6cb54756402cb214822fac62..17a90c5f4be9cdb00460355ccaff469d69eef57e 100644 --- a/src/main/java/kieker/analysis/dev/nestedgraph/SubGraph.java +++ b/src/main/java/kieker/analysis/dev/nestedgraph/SubGraph.java @@ -1,102 +1,102 @@ -package kieker.analysis.dev.nestedgraph; - -import com.tinkerpop.blueprints.Edge; -import com.tinkerpop.blueprints.Features; -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.GraphQuery; -import com.tinkerpop.blueprints.Vertex; - -//TODO implements -public class SubGraph implements Graph { - - private final NestedGraph<Graph> mainGraph; // TODO has to be nestable Graph - - public SubGraph(final NestedGraph<Graph> mainGraph) { - this.mainGraph = mainGraph; - - // TODO subGraph beim mainGraph anmelden - } - - public NestedGraph<Graph> getMainGraph() { - return mainGraph; - } - - @Override - public Features getFeatures() { - // TODO Auto-generated method stub - return null; - } - - @Override - public Vertex addVertex(final Object id) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Vertex getVertex(final Object id) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void removeVertex(final Vertex vertex) { - // TODO Auto-generated method stub - - } - - @Override - public Iterable<Vertex> getVertices() { - // TODO Auto-generated method stub - return null; - } - - @Override - public Iterable<Vertex> getVertices(final String key, final Object value) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Edge addEdge(final Object id, final Vertex outVertex, final Vertex inVertex, final String label) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Edge getEdge(final Object id) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void removeEdge(final Edge edge) { - // TODO Auto-generated method stub - - } - - @Override - public Iterable<Edge> getEdges() { - // TODO Auto-generated method stub - return null; - } - - @Override - public Iterable<Edge> getEdges(final String key, final Object value) { - // TODO Auto-generated method stub - return null; - } - - @Override - public GraphQuery query() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void shutdown() { - // TODO Auto-generated method stub - - } - -} +package kieker.analysis.dev.nestedgraph; + +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Features; +import com.tinkerpop.blueprints.Graph; +import com.tinkerpop.blueprints.GraphQuery; +import com.tinkerpop.blueprints.Vertex; + +//TODO implements +public class SubGraph implements Graph { + + private final NestedGraph<Graph> mainGraph; // TODO has to be nestable Graph + + public SubGraph(final NestedGraph<Graph> mainGraph) { + this.mainGraph = mainGraph; + + // TODO subGraph beim mainGraph anmelden + } + + public NestedGraph<Graph> getMainGraph() { + return mainGraph; + } + + @Override + public Features getFeatures() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Vertex addVertex(final Object id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Vertex getVertex(final Object id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void removeVertex(final Vertex vertex) { + // TODO Auto-generated method stub + + } + + @Override + public Iterable<Vertex> getVertices() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Iterable<Vertex> getVertices(final String key, final Object value) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Edge addEdge(final Object id, final Vertex outVertex, final Vertex inVertex, final String label) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Edge getEdge(final Object id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void removeEdge(final Edge edge) { + // TODO Auto-generated method stub + + } + + @Override + public Iterable<Edge> getEdges() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Iterable<Edge> getEdges(final String key, final Object value) { + // TODO Auto-generated method stub + return null; + } + + @Override + public GraphQuery query() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void shutdown() { + // TODO Auto-generated method stub + + } + +} diff --git a/src/main/java/kieker/analysis/dev/nestedgraphstages/NestedGraphFactory.java b/src/main/java/kieker/analysis/dev/nestedgraphstages/NestedGraphFactory.java index 06d001d1cccd03cbc711865214a1e2a95efccdf9..1bb72a71bd330fcc41c53ef90242d96fa1e6a307 100644 --- a/src/main/java/kieker/analysis/dev/nestedgraphstages/NestedGraphFactory.java +++ b/src/main/java/kieker/analysis/dev/nestedgraphstages/NestedGraphFactory.java @@ -1,43 +1,43 @@ -package kieker.analysis.dev.nestedgraphstages; - -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.Vertex; -import com.tinkerpop.blueprints.impls.tg.TinkerGraph; - -import kieker.analysis.dev.nestedgraph.NestedGraph; -import kieker.analysis.dev.nestedgraph.NestedGraphPartition; - -import teetime.util.ConstructorClosure; - -public class NestedGraphFactory implements ConstructorClosure<NestedGraph<Graph>> { - - @Override - public NestedGraph<Graph> create() { - - NestedGraph<Graph> graph = new NestedGraph<Graph>(new TinkerGraph()); - - Vertex entry = graph.addVertex("Entry"); - - NestedGraphPartition partitionBookstore = new NestedGraphPartition("Bookstore"); - graph.addPartition(partitionBookstore); - Vertex searchBook = graph.addVertexToPartition("searchBook()", partitionBookstore); - - NestedGraphPartition partitionCRM = new NestedGraphPartition("CRM"); - graph.addPartition(partitionCRM); - Vertex getOffers = graph.addVertexToPartition("getOffers()", partitionCRM); - Vertex customMethod = graph.addVertexToPartition("customMethod()", partitionCRM); - - NestedGraphPartition partitionCatalog = new NestedGraphPartition("Catalog"); - graph.addPartition(partitionCatalog); - Vertex getBook = graph.addVertexToPartition("getBook()", partitionCatalog); - - graph.addEdge(null, entry, searchBook, "100"); - graph.addEdge(null, searchBook, getBook, "100"); - graph.addEdge(null, searchBook, getOffers, "100"); - graph.addEdge(null, getOffers, getBook, "96"); - graph.addEdge(null, getOffers, customMethod, "0"); - - return graph; - } - -} +package kieker.analysis.dev.nestedgraphstages; + +import com.tinkerpop.blueprints.Graph; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.impls.tg.TinkerGraph; + +import kieker.analysis.dev.nestedgraph.NestedGraph; +import kieker.analysis.dev.nestedgraph.NestedGraphPartition; + +import teetime.util.ConstructorClosure; + +public class NestedGraphFactory implements ConstructorClosure<NestedGraph<Graph>> { + + @Override + public NestedGraph<Graph> create() { + + NestedGraph<Graph> graph = new NestedGraph<Graph>(new TinkerGraph()); + + Vertex entry = graph.addVertex("Entry"); + + NestedGraphPartition partitionBookstore = new NestedGraphPartition("Bookstore"); + graph.addPartition(partitionBookstore); + Vertex searchBook = graph.addVertexToPartition("searchBook()", partitionBookstore); + + NestedGraphPartition partitionCRM = new NestedGraphPartition("CRM"); + graph.addPartition(partitionCRM); + Vertex getOffers = graph.addVertexToPartition("getOffers()", partitionCRM); + Vertex customMethod = graph.addVertexToPartition("customMethod()", partitionCRM); + + NestedGraphPartition partitionCatalog = new NestedGraphPartition("Catalog"); + graph.addPartition(partitionCatalog); + Vertex getBook = graph.addVertexToPartition("getBook()", partitionCatalog); + + graph.addEdge(null, entry, searchBook, "100"); + graph.addEdge(null, searchBook, getBook, "100"); + graph.addEdge(null, searchBook, getOffers, "100"); + graph.addEdge(null, getOffers, getBook, "96"); + graph.addEdge(null, getOffers, customMethod, "0"); + + return graph; + } + +} diff --git a/src/main/java/kieker/analysis/dev/nestedgraphstages/NestedGraphPrinterStage.java b/src/main/java/kieker/analysis/dev/nestedgraphstages/NestedGraphPrinterStage.java index 4adb233361cc4dd78fca5b5c06448a5a194c7cd5..c5f2f8a32d0ec89ae6e1450e8d36fae2ecb7c421 100644 --- a/src/main/java/kieker/analysis/dev/nestedgraphstages/NestedGraphPrinterStage.java +++ b/src/main/java/kieker/analysis/dev/nestedgraphstages/NestedGraphPrinterStage.java @@ -1,43 +1,43 @@ -package kieker.analysis.dev.nestedgraphstages; - -import com.tinkerpop.blueprints.Edge; -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.Vertex; - -import kieker.analysis.dev.nestedgraph.NestedGraph; -import kieker.analysis.dev.nestedgraph.NestedGraphPartition; - -import teetime.framework.AbstractConsumerStage; - -public class NestedGraphPrinterStage extends AbstractConsumerStage<NestedGraph<Graph>> { - - @Override - protected void execute(final NestedGraph<Graph> graph) { - - System.out.println("TOP LEVEL:"); - - for (Vertex vertex : graph.getVertices()) { - System.out.println(vertex); - } - - for (Edge edge : graph.getEdges()) { - System.out.println(edge); - } - - for (NestedGraphPartition partition : graph.getPartitions()) { - - System.out.println("PARTITION: " + partition.getName()); - - for (Vertex vertex : graph.getVerticesForPartition(partition)) { - System.out.println(vertex); - } - - for (Edge edge : graph.getEdgesForPartition(partition)) { - System.out.println(edge); - } - - } - - } - -} +package kieker.analysis.dev.nestedgraphstages; + +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Graph; +import com.tinkerpop.blueprints.Vertex; + +import kieker.analysis.dev.nestedgraph.NestedGraph; +import kieker.analysis.dev.nestedgraph.NestedGraphPartition; + +import teetime.framework.AbstractConsumerStage; + +public class NestedGraphPrinterStage extends AbstractConsumerStage<NestedGraph<Graph>> { + + @Override + protected void execute(final NestedGraph<Graph> graph) { + + System.out.println("TOP LEVEL:"); + + for (Vertex vertex : graph.getVertices()) { + System.out.println(vertex); + } + + for (Edge edge : graph.getEdges()) { + System.out.println(edge); + } + + for (NestedGraphPartition partition : graph.getPartitions()) { + + System.out.println("PARTITION: " + partition.getName()); + + for (Vertex vertex : graph.getVerticesForPartition(partition)) { + System.out.println(vertex); + } + + for (Edge edge : graph.getEdgesForPartition(partition)) { + System.out.println(edge); + } + + } + + } + +} diff --git a/src/main/java/kieker/analysis/domain/AbstractOperationCall.java b/src/main/java/kieker/analysis/domain/AbstractOperationCall.java index 2ebd2805b3f1a5cc3ce18d61336f273ef05cebfa..ba00e105cf5656c6f162e34570a637359982dccc 100644 --- a/src/main/java/kieker/analysis/domain/AbstractOperationCall.java +++ b/src/main/java/kieker/analysis/domain/AbstractOperationCall.java @@ -1,210 +1,210 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.domain; - -import java.util.ArrayList; -import java.util.List; - -/** - * This is an abstract base for classes representing operation calls (also called executions) within this application. As it can has multiple children, an instance - * of this class - * can represent a whole call tree. This class implements the both methods {@link OperationCall#equals(Object)} and {@link OperationCall#hashCode()}, allowing to - * easily check - * whether two traces are equal and should be in the same equivalence class. - * - * @author Nils Christian Ehmke - * - * @param <T> - * The precise type of the children. This should usually be the implementing class itself. - */ -public abstract class AbstractOperationCall<T extends AbstractOperationCall<T>> { - - private final List<T> children = new ArrayList<>(); - - private final String container; - private final String component; - private final String operation; - - private final String identifier; - - private int stackDepth; - private int stackSize; - private String failedCause; - - private int orderIndex; - - public AbstractOperationCall(final String container, final String component, final String operation, final int orderIndex) { - this(container, component, operation, orderIndex, null); - } - - public AbstractOperationCall(final String container, final String component, final String operation, final int orderIndex, final String failedCause) { - this.container = container.intern(); - this.component = component.intern(); - this.operation = operation.intern(); - this.orderIndex = orderIndex; - this.failedCause = (failedCause != null) ? failedCause.intern() : null; - - this.identifier = container + ',' + component + ',' + operation; - } - - public void addChild(final T child) { - this.children.add(child); - } - - public final List<T> getChildren() { - return this.children; - } - - public abstract T getParent(); - - public final String getContainer() { - return this.container; - } - - public final String getComponent() { - return this.component; - } - - public final String getOperation() { - return this.operation; - } - - public int getOrderIndex() { - return orderIndex; - } - - public final int getStackDepth() { - return this.stackDepth; - } - - public final void setStackDepth(final int stackDepth) { - this.stackDepth = stackDepth; - } - - public final int getStackSize() { - return this.stackSize; - } - - public final void setStackSize(final int stackSize) { - this.stackSize = stackSize; - } - - public final boolean isFailed() { - return (this.failedCause != null); - } - - public final String getFailedCause() { - return this.failedCause; - } - - public final void setFailedCause(final String failedCause) { - this.failedCause = (failedCause != null) ? failedCause.intern() : null; - } - - public final boolean containsFailure() { - return this.isFailed() || this.children.parallelStream().anyMatch(T::containsFailure); - } - - public String getIdentifier() { - return identifier; - } - - public String getIdentifierWithFailure() { - return identifier + ',' + failedCause; - } - - public final int calculateHashCode() { - final int prime = 31; - int result = 1; - - result = (prime * result) + ((this.children == null) ? 0 : this.calculateHashCodeForChildren()); - result = (prime * result) + ((this.component == null) ? 0 : this.component.hashCode()); - result = (prime * result) + ((this.container == null) ? 0 : this.container.hashCode()); - result = (prime * result) + ((this.failedCause == null) ? 0 : this.failedCause.hashCode()); - result = (prime * result) + ((this.operation == null) ? 0 : this.operation.hashCode()); - - return result; - } - - private final int calculateHashCodeForChildren() { - int hashCode = 1; - for (final T child : this.children) { - hashCode = (31 * hashCode) + (child == null ? 0 : child.calculateHashCode()); - } - return hashCode; - } - - @SuppressWarnings("unchecked") - public final boolean isEqualTo(final Object obj) { // NOPMD (this method violates some metrics) - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (this.getClass() != obj.getClass()) { - return false; - } - final T other = (T) obj; - if (this.children == null) { - if (other.getChildren() != null) { - return false; - } - } else { - final int length1 = this.children.size(); - final int length2 = other.getChildren().size(); - if (length1 != length2) { - return false; - } - for (int i = 0; i < length1; i++) { - if (!this.children.get(i).isEqualTo(other.getChildren().get(i))) { - return false; - } - } - } - if (this.component == null) { - if (other.getComponent() != null) { - return false; - } - } else if (!this.component.equals(other.getComponent())) { - return false; - } - if (this.container == null) { - if (other.getContainer() != null) { - return false; - } - } else if (!this.container.equals(other.getContainer())) { - return false; - } - if (this.failedCause == null) { - if (other.getFailedCause() != null) { - return false; - } - } else if (!this.failedCause.equals(other.getFailedCause())) { - return false; - } - if (this.operation == null) { - if (other.getOperation() != null) { - return false; - } - } else if (!this.operation.equals(other.getOperation())) { - return false; - } - return true; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.domain; + +import java.util.ArrayList; +import java.util.List; + +/** + * This is an abstract base for classes representing operation calls (also called executions) within this application. As it can has multiple children, an instance + * of this class + * can represent a whole call tree. This class implements the both methods {@link OperationCall#equals(Object)} and {@link OperationCall#hashCode()}, allowing to + * easily check + * whether two traces are equal and should be in the same equivalence class. + * + * @author Nils Christian Ehmke + * + * @param <T> + * The precise type of the children. This should usually be the implementing class itself. + */ +public abstract class AbstractOperationCall<T extends AbstractOperationCall<T>> { + + private final List<T> children = new ArrayList<>(); + + private final String container; + private final String component; + private final String operation; + + private final String identifier; + + private int stackDepth; + private int stackSize; + private String failedCause; + + private int orderIndex; + + public AbstractOperationCall(final String container, final String component, final String operation, final int orderIndex) { + this(container, component, operation, orderIndex, null); + } + + public AbstractOperationCall(final String container, final String component, final String operation, final int orderIndex, final String failedCause) { + this.container = container.intern(); + this.component = component.intern(); + this.operation = operation.intern(); + this.orderIndex = orderIndex; + this.failedCause = (failedCause != null) ? failedCause.intern() : null; + + this.identifier = container + ',' + component + ',' + operation; + } + + public void addChild(final T child) { + this.children.add(child); + } + + public final List<T> getChildren() { + return this.children; + } + + public abstract T getParent(); + + public final String getContainer() { + return this.container; + } + + public final String getComponent() { + return this.component; + } + + public final String getOperation() { + return this.operation; + } + + public int getOrderIndex() { + return orderIndex; + } + + public final int getStackDepth() { + return this.stackDepth; + } + + public final void setStackDepth(final int stackDepth) { + this.stackDepth = stackDepth; + } + + public final int getStackSize() { + return this.stackSize; + } + + public final void setStackSize(final int stackSize) { + this.stackSize = stackSize; + } + + public final boolean isFailed() { + return (this.failedCause != null); + } + + public final String getFailedCause() { + return this.failedCause; + } + + public final void setFailedCause(final String failedCause) { + this.failedCause = (failedCause != null) ? failedCause.intern() : null; + } + + public final boolean containsFailure() { + return this.isFailed() || this.children.parallelStream().anyMatch(T::containsFailure); + } + + public String getIdentifier() { + return identifier; + } + + public String getIdentifierWithFailure() { + return identifier + ',' + failedCause; + } + + public final int calculateHashCode() { + final int prime = 31; + int result = 1; + + result = (prime * result) + ((this.children == null) ? 0 : this.calculateHashCodeForChildren()); + result = (prime * result) + ((this.component == null) ? 0 : this.component.hashCode()); + result = (prime * result) + ((this.container == null) ? 0 : this.container.hashCode()); + result = (prime * result) + ((this.failedCause == null) ? 0 : this.failedCause.hashCode()); + result = (prime * result) + ((this.operation == null) ? 0 : this.operation.hashCode()); + + return result; + } + + private final int calculateHashCodeForChildren() { + int hashCode = 1; + for (final T child : this.children) { + hashCode = (31 * hashCode) + (child == null ? 0 : child.calculateHashCode()); + } + return hashCode; + } + + @SuppressWarnings("unchecked") + public final boolean isEqualTo(final Object obj) { // NOPMD (this method violates some metrics) + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (this.getClass() != obj.getClass()) { + return false; + } + final T other = (T) obj; + if (this.children == null) { + if (other.getChildren() != null) { + return false; + } + } else { + final int length1 = this.children.size(); + final int length2 = other.getChildren().size(); + if (length1 != length2) { + return false; + } + for (int i = 0; i < length1; i++) { + if (!this.children.get(i).isEqualTo(other.getChildren().get(i))) { + return false; + } + } + } + if (this.component == null) { + if (other.getComponent() != null) { + return false; + } + } else if (!this.component.equals(other.getComponent())) { + return false; + } + if (this.container == null) { + if (other.getContainer() != null) { + return false; + } + } else if (!this.container.equals(other.getContainer())) { + return false; + } + if (this.failedCause == null) { + if (other.getFailedCause() != null) { + return false; + } + } else if (!this.failedCause.equals(other.getFailedCause())) { + return false; + } + if (this.operation == null) { + if (other.getOperation() != null) { + return false; + } + } else if (!this.operation.equals(other.getOperation())) { + return false; + } + return true; + } + +} diff --git a/src/main/java/kieker/analysis/domain/AbstractTrace.java b/src/main/java/kieker/analysis/domain/AbstractTrace.java index 056d6c79c7e9855efcb356aa64a0a677a79005da..0fff19a7f7d1a1e3d3338cc04cbaf6f86b093c8f 100644 --- a/src/main/java/kieker/analysis/domain/AbstractTrace.java +++ b/src/main/java/kieker/analysis/domain/AbstractTrace.java @@ -1,70 +1,70 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.domain; - -/** - * This is an abstract base for classes representing traces (a tree of operation calls) within this application. Technically this class is just a container for a - * single {@link AbstractOperationCall} instance representing the root call of a whole call tree. Furthermore, this class implements the methods - * {@link AbstractTrace#equals(Object)} and {@link AbstractTrace#hashCode()}, allowing to put traces for example into a map to aggregate them. - * - * @author Nils Christian Ehmke - * - * @param <T> - * The type of the root node. - */ -public abstract class AbstractTrace<T extends AbstractOperationCall<T>> { - - private final T rootOperationCall; - - public AbstractTrace(final T rootOperationCall) { - this.rootOperationCall = rootOperationCall; - } - - public final T getRootOperationCall() { - return this.rootOperationCall; - } - - public final int calculateHashCode() { - final int prime = 31; - int result = 1; - result = (prime * result) + ((this.rootOperationCall == null) ? 0 : this.rootOperationCall.calculateHashCode()); - return result; - } - - @SuppressWarnings("rawtypes") - public final boolean isEqualTo(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (this.getClass() != obj.getClass()) { - return false; - } - final AbstractTrace other = (AbstractTrace) obj; - if (this.rootOperationCall == null) { - if (other.rootOperationCall != null) { - return false; - } - } else if (!this.rootOperationCall.isEqualTo(other.rootOperationCall)) { - return false; - } - return true; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.domain; + +/** + * This is an abstract base for classes representing traces (a tree of operation calls) within this application. Technically this class is just a container for a + * single {@link AbstractOperationCall} instance representing the root call of a whole call tree. Furthermore, this class implements the methods + * {@link AbstractTrace#equals(Object)} and {@link AbstractTrace#hashCode()}, allowing to put traces for example into a map to aggregate them. + * + * @author Nils Christian Ehmke + * + * @param <T> + * The type of the root node. + */ +public abstract class AbstractTrace<T extends AbstractOperationCall<T>> { + + private final T rootOperationCall; + + public AbstractTrace(final T rootOperationCall) { + this.rootOperationCall = rootOperationCall; + } + + public final T getRootOperationCall() { + return this.rootOperationCall; + } + + public final int calculateHashCode() { + final int prime = 31; + int result = 1; + result = (prime * result) + ((this.rootOperationCall == null) ? 0 : this.rootOperationCall.calculateHashCode()); + return result; + } + + @SuppressWarnings("rawtypes") + public final boolean isEqualTo(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (this.getClass() != obj.getClass()) { + return false; + } + final AbstractTrace other = (AbstractTrace) obj; + if (this.rootOperationCall == null) { + if (other.rootOperationCall != null) { + return false; + } + } else if (!this.rootOperationCall.isEqualTo(other.rootOperationCall)) { + return false; + } + return true; + } + +} diff --git a/src/main/java/kieker/analysis/domain/AggregatedOperationCall.java b/src/main/java/kieker/analysis/domain/AggregatedOperationCall.java index a483a0e31a7bcb47f959b7c451a5968c827e488c..5ebc990645a00b998b13b3015151749a544fa282 100644 --- a/src/main/java/kieker/analysis/domain/AggregatedOperationCall.java +++ b/src/main/java/kieker/analysis/domain/AggregatedOperationCall.java @@ -1,149 +1,149 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.domain; - -import java.util.LinkedList; -import java.util.List; - -/** - * This class represents an aggregated operation call within this application. It adds some properties that are only available due to aggregation, like the average - * duration of all calls. - * - * @author Nils Christian Ehmke, Sören Henning - */ -public class AggregatedOperationCall extends AbstractOperationCall<AggregatedOperationCall> { - - private AggregatedOperationCall parent; - private long totalDuration; - private long medianDuration; - private long minDuration; - private long maxDuration; - private long meanDuration; - private int calls; - - private final List<OperationCall> baseOperationCalls = new LinkedList<>(); - - public AggregatedOperationCall(final OperationCall call) { - super(call.getContainer(), call.getComponent(), call.getOperation(), call.getOrderIndex(), call.getFailedCause()); - - for (final OperationCall child : call.getChildren()) { - addChild(new AggregatedOperationCall(child)); - } - - this.setStackDepth(call.getStackDepth()); - this.setStackSize(call.getStackSize()); - } - - public AggregatedOperationCall(final String container, final String component, final String operation, - final int orderIndex) { - super(container, component, operation, orderIndex); - } - - public AggregatedOperationCall(final String container, final String component, final String operation, - final int orderIndex, final String failedCause) { - super(container, component, operation, orderIndex); - - this.setFailedCause(failedCause); - } - - public AggregatedOperationCall(final String container, final String component, final String operation, // NOPMD (a long parameter list cannot be avoided) - final int orderIndex, final String failedCause, final long totalDuration, final long medianDuration, final long minDuration, final long maxDuration, - final long meanDuration, final int calls) { - super(container, component, operation, orderIndex); - - this.totalDuration = totalDuration; - this.medianDuration = medianDuration; - this.minDuration = minDuration; - this.maxDuration = maxDuration; - this.meanDuration = meanDuration; - this.calls = calls; - - this.setFailedCause(failedCause); - } - - @Override - public AggregatedOperationCall getParent() { - return parent; - } - - @Override - public void addChild(final AggregatedOperationCall child) { - super.addChild(child); - child.parent = this; - } - - public long getTotalDuration() { - return this.totalDuration; - } - - public void setTotalDuration(final long totalDuration) { - this.totalDuration = totalDuration; - } - - public long getMedianDuration() { - return this.medianDuration; - } - - public void setMedianDuration(final long meanDuration) { - this.medianDuration = meanDuration; - } - - public long getMinDuration() { - return this.minDuration; - } - - public void setMinDuration(final long minDuration) { - this.minDuration = minDuration; - } - - public long getMaxDuration() { - return this.maxDuration; - } - - public void setMaxDuration(final long maxDuration) { - this.maxDuration = maxDuration; - } - - public long getMeanDuration() { - return this.meanDuration; - } - - public void setMeanDuration(final long avgDuration) { - this.meanDuration = avgDuration; - } - - public int getCalls() { - return this.calls; - } - - public void setCalls(final int calls) { - this.calls = calls; - } - - public List<OperationCall> getBaseOperationCalls() { - return baseOperationCalls; - } - - public void addBaseOperationCall(final OperationCall baseOperationCall) { - baseOperationCalls.add(baseOperationCall); - } - - public void addBaseOperationCalls(final List<OperationCall> baseOperationCalls) { - this.baseOperationCalls.addAll(baseOperationCalls); - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.domain; + +import java.util.LinkedList; +import java.util.List; + +/** + * This class represents an aggregated operation call within this application. It adds some properties that are only available due to aggregation, like the average + * duration of all calls. + * + * @author Nils Christian Ehmke, Sören Henning + */ +public class AggregatedOperationCall extends AbstractOperationCall<AggregatedOperationCall> { + + private AggregatedOperationCall parent; + private long totalDuration; + private long medianDuration; + private long minDuration; + private long maxDuration; + private long meanDuration; + private int calls; + + private final List<OperationCall> baseOperationCalls = new LinkedList<>(); + + public AggregatedOperationCall(final OperationCall call) { + super(call.getContainer(), call.getComponent(), call.getOperation(), call.getOrderIndex(), call.getFailedCause()); + + for (final OperationCall child : call.getChildren()) { + addChild(new AggregatedOperationCall(child)); + } + + this.setStackDepth(call.getStackDepth()); + this.setStackSize(call.getStackSize()); + } + + public AggregatedOperationCall(final String container, final String component, final String operation, + final int orderIndex) { + super(container, component, operation, orderIndex); + } + + public AggregatedOperationCall(final String container, final String component, final String operation, + final int orderIndex, final String failedCause) { + super(container, component, operation, orderIndex); + + this.setFailedCause(failedCause); + } + + public AggregatedOperationCall(final String container, final String component, final String operation, // NOPMD (a long parameter list cannot be avoided) + final int orderIndex, final String failedCause, final long totalDuration, final long medianDuration, final long minDuration, final long maxDuration, + final long meanDuration, final int calls) { + super(container, component, operation, orderIndex); + + this.totalDuration = totalDuration; + this.medianDuration = medianDuration; + this.minDuration = minDuration; + this.maxDuration = maxDuration; + this.meanDuration = meanDuration; + this.calls = calls; + + this.setFailedCause(failedCause); + } + + @Override + public AggregatedOperationCall getParent() { + return parent; + } + + @Override + public void addChild(final AggregatedOperationCall child) { + super.addChild(child); + child.parent = this; + } + + public long getTotalDuration() { + return this.totalDuration; + } + + public void setTotalDuration(final long totalDuration) { + this.totalDuration = totalDuration; + } + + public long getMedianDuration() { + return this.medianDuration; + } + + public void setMedianDuration(final long meanDuration) { + this.medianDuration = meanDuration; + } + + public long getMinDuration() { + return this.minDuration; + } + + public void setMinDuration(final long minDuration) { + this.minDuration = minDuration; + } + + public long getMaxDuration() { + return this.maxDuration; + } + + public void setMaxDuration(final long maxDuration) { + this.maxDuration = maxDuration; + } + + public long getMeanDuration() { + return this.meanDuration; + } + + public void setMeanDuration(final long avgDuration) { + this.meanDuration = avgDuration; + } + + public int getCalls() { + return this.calls; + } + + public void setCalls(final int calls) { + this.calls = calls; + } + + public List<OperationCall> getBaseOperationCalls() { + return baseOperationCalls; + } + + public void addBaseOperationCall(final OperationCall baseOperationCall) { + baseOperationCalls.add(baseOperationCall); + } + + public void addBaseOperationCalls(final List<OperationCall> baseOperationCalls) { + this.baseOperationCalls.addAll(baseOperationCalls); + } + +} diff --git a/src/main/java/kieker/analysis/domain/AggregatedTrace.java b/src/main/java/kieker/analysis/domain/AggregatedTrace.java index bca7c81bd1b4070dddd9b9a345ff7aaf79a17cd6..31527a4b4a27e0bd8cf3f60e44a1f24f974cdff4 100644 --- a/src/main/java/kieker/analysis/domain/AggregatedTrace.java +++ b/src/main/java/kieker/analysis/domain/AggregatedTrace.java @@ -1,40 +1,40 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.domain; - -import java.util.List; - -/** - * This class represents an aggregated trace (also called a trace equivalence class) within this application. - * - * @author Nils Christian Ehmke - */ -public final class AggregatedTrace extends AbstractTrace<AggregatedOperationCall> { - - private final List<Trace> traces; - - public AggregatedTrace(final List<Trace> traces) { - super(new AggregatedOperationCall(traces.get(0).getRootOperationCall())); - - this.traces = traces; - } - - public List<Trace> getTraces() { - return this.traces; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.domain; + +import java.util.List; + +/** + * This class represents an aggregated trace (also called a trace equivalence class) within this application. + * + * @author Nils Christian Ehmke + */ +public final class AggregatedTrace extends AbstractTrace<AggregatedOperationCall> { + + private final List<Trace> traces; + + public AggregatedTrace(final List<Trace> traces) { + super(new AggregatedOperationCall(traces.get(0).getRootOperationCall())); + + this.traces = traces; + } + + public List<Trace> getTraces() { + return this.traces; + } + +} diff --git a/src/main/java/kieker/analysis/domain/ComponentCall.java b/src/main/java/kieker/analysis/domain/ComponentCall.java index a4f700684c918810b4a84c0151329b580c511643..4f5e474c86ee4e76066c27d73a99a09eae132194 100644 --- a/src/main/java/kieker/analysis/domain/ComponentCall.java +++ b/src/main/java/kieker/analysis/domain/ComponentCall.java @@ -1,33 +1,33 @@ -package kieker.analysis.domain; - -public class ComponentCall { - - private final String container; - private final String component; - - private final String identifier; - - public ComponentCall(final String container, final String component) { - this.container = container; - this.component = component; - - this.identifier = container + ',' + component; - } - - public ComponentCall(final AbstractOperationCall<?> operationCall) { - this(operationCall.getContainer(), operationCall.getComponent()); - } - - public String getContainer() { - return container; - } - - public String getComponent() { - return component; - } - - public String getIdentifier() { - return identifier; - } - -} +package kieker.analysis.domain; + +public class ComponentCall { + + private final String container; + private final String component; + + private final String identifier; + + public ComponentCall(final String container, final String component) { + this.container = container; + this.component = component; + + this.identifier = container + ',' + component; + } + + public ComponentCall(final AbstractOperationCall<?> operationCall) { + this(operationCall.getContainer(), operationCall.getComponent()); + } + + public String getContainer() { + return container; + } + + public String getComponent() { + return component; + } + + public String getIdentifier() { + return identifier; + } + +} diff --git a/src/main/java/kieker/analysis/domain/ComponentDependency.java b/src/main/java/kieker/analysis/domain/ComponentDependency.java index b237c11eff95d47593ba4cc9eb28296bfe1a0684..2bd9c8571ffd3b07d42ead3e43c25b72e70cafdb 100644 --- a/src/main/java/kieker/analysis/domain/ComponentDependency.java +++ b/src/main/java/kieker/analysis/domain/ComponentDependency.java @@ -1,55 +1,55 @@ -package kieker.analysis.domain; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -public class ComponentDependency { - - private final Map<String, ComponentCall> components = new HashMap<>(); - - private final Map<String, ComponentDependencyRelation> relations = new HashMap<>(); - - // TODO this should not be part of the model - public void addCall(final AggregatedOperationCall operationCall) { - - ComponentCall componentCall = new ComponentCall(operationCall); - - if (!components.containsKey(componentCall.getIdentifier())) { - components.put(componentCall.getIdentifier(), componentCall); - } - - // TODO Better -> - - // TODO Add method in OperationCall to receive the key/identifier - String componentKey = operationCall.getContainer() + ',' + operationCall.getComponent(); - - if (!components.containsKey(componentKey)) { - components.put(componentKey, new ComponentCall(operationCall)); - } - - // TODO Add data to this ComonentCall - } - - public void addRelation(final OperationsDependencyRelation relation) { - - String id1 = new ComponentCall(relation.getCaller()).getIdentifier(); - String id2 = new ComponentCall(relation.getCallee()).getIdentifier(); - - String id = id1 + ',' + id2; - - if (!relations.containsKey(id)) { - // components.put(id, new ComponentDependencyRelation(caller, callee) - } - - } - - public Collection<ComponentCall> getComponents() { - return components.values(); - } - - public Collection<ComponentDependencyRelation> getRelations() { - return relations.values(); - } - -} +package kieker.analysis.domain; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +public class ComponentDependency { + + private final Map<String, ComponentCall> components = new HashMap<>(); + + private final Map<String, ComponentDependencyRelation> relations = new HashMap<>(); + + // TODO this should not be part of the model + public void addCall(final AggregatedOperationCall operationCall) { + + ComponentCall componentCall = new ComponentCall(operationCall); + + if (!components.containsKey(componentCall.getIdentifier())) { + components.put(componentCall.getIdentifier(), componentCall); + } + + // TODO Better -> + + // TODO Add method in OperationCall to receive the key/identifier + String componentKey = operationCall.getContainer() + ',' + operationCall.getComponent(); + + if (!components.containsKey(componentKey)) { + components.put(componentKey, new ComponentCall(operationCall)); + } + + // TODO Add data to this ComonentCall + } + + public void addRelation(final OperationsDependencyRelation relation) { + + String id1 = new ComponentCall(relation.getCaller()).getIdentifier(); + String id2 = new ComponentCall(relation.getCallee()).getIdentifier(); + + String id = id1 + ',' + id2; + + if (!relations.containsKey(id)) { + // components.put(id, new ComponentDependencyRelation(caller, callee) + } + + } + + public Collection<ComponentCall> getComponents() { + return components.values(); + } + + public Collection<ComponentDependencyRelation> getRelations() { + return relations.values(); + } + +} diff --git a/src/main/java/kieker/analysis/domain/ComponentDependencyRelation.java b/src/main/java/kieker/analysis/domain/ComponentDependencyRelation.java index 17d147421eb3c528b67d8e3592177dc6f143efb8..ff913f66b93035b4c4cedaed9a1e85006484f7e1 100644 --- a/src/main/java/kieker/analysis/domain/ComponentDependencyRelation.java +++ b/src/main/java/kieker/analysis/domain/ComponentDependencyRelation.java @@ -1,43 +1,43 @@ -package kieker.analysis.domain; - -public class ComponentDependencyRelation { - - private final ComponentCall caller; - - private final ComponentCall callee; - - private int calls; - - private int failuredCalls; - - public ComponentDependencyRelation(final ComponentCall caller, final ComponentCall callee) { - this.caller = caller; - this.callee = callee; - } - - public ComponentCall getCaller() { - return caller; - } - - public ComponentCall getCallee() { - return callee; - } - - public void addCalls(final int calls) { - this.calls += calls; - } - - public void addFailuredCalls(final int failuredCalls) { - addCalls(failuredCalls); - this.failuredCalls += failuredCalls; - } - - public int getCalls() { - return calls; - } - - public int getFailuredCalls() { - return failuredCalls; - } - -} +package kieker.analysis.domain; + +public class ComponentDependencyRelation { + + private final ComponentCall caller; + + private final ComponentCall callee; + + private int calls; + + private int failuredCalls; + + public ComponentDependencyRelation(final ComponentCall caller, final ComponentCall callee) { + this.caller = caller; + this.callee = callee; + } + + public ComponentCall getCaller() { + return caller; + } + + public ComponentCall getCallee() { + return callee; + } + + public void addCalls(final int calls) { + this.calls += calls; + } + + public void addFailuredCalls(final int failuredCalls) { + addCalls(failuredCalls); + this.failuredCalls += failuredCalls; + } + + public int getCalls() { + return calls; + } + + public int getFailuredCalls() { + return failuredCalls; + } + +} diff --git a/src/main/java/kieker/analysis/domain/OperationCall.java b/src/main/java/kieker/analysis/domain/OperationCall.java index dd0c75114df3b54e38f9a76ebab335ee982feb2d..125d7791ddae805a3e99333c5fcd51f4586e3106 100644 --- a/src/main/java/kieker/analysis/domain/OperationCall.java +++ b/src/main/java/kieker/analysis/domain/OperationCall.java @@ -1,86 +1,86 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.domain; - -/** - * This class represents a concrete operation call within this application. It adds some properties that are only required for concrete operation calls, like the - * trace ID and the - * duration. It extends the call tree mechanism (inherited from {@link AbstractOperationCall}) by a parent, allowing to navigate in both directions within the tree. - * - * @author Nils Christian Ehmke - */ -public final class OperationCall extends AbstractOperationCall<OperationCall> { - - private final long traceID; - - private OperationCall parent; - private float percent; - private long duration; - private long timestamp; - - public OperationCall(final String container, final String component, final String operation, final int orderIndex, final long traceID, final long timestamp) { - this(container, component, operation, orderIndex, null, traceID, timestamp); - } - - public OperationCall(final String container, final String component, final String operation, final int orderIndex, final String failedCause, final long traceID, - final long timestamp) { - super(container, component, operation, orderIndex, failedCause); - - this.traceID = traceID; - this.timestamp = timestamp; - } - - @Override - public void addChild(final OperationCall child) { - super.addChild(child); - child.parent = this; - } - - @Override - public OperationCall getParent() { - return this.parent; - } - - public float getPercent() { - return this.percent; - } - - public void setPercent(final float percent) { - this.percent = percent; - } - - public long getDuration() { - return this.duration; - } - - public void setDuration(final long duration) { - this.duration = duration; - } - - public long getTraceID() { - return this.traceID; - } - - public long getTimestamp() { - return this.timestamp; - } - - public void setTimestamp(final long timestamp) { - this.timestamp = timestamp; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.domain; + +/** + * This class represents a concrete operation call within this application. It adds some properties that are only required for concrete operation calls, like the + * trace ID and the + * duration. It extends the call tree mechanism (inherited from {@link AbstractOperationCall}) by a parent, allowing to navigate in both directions within the tree. + * + * @author Nils Christian Ehmke + */ +public final class OperationCall extends AbstractOperationCall<OperationCall> { + + private final long traceID; + + private OperationCall parent; + private float percent; + private long duration; + private long timestamp; + + public OperationCall(final String container, final String component, final String operation, final int orderIndex, final long traceID, final long timestamp) { + this(container, component, operation, orderIndex, null, traceID, timestamp); + } + + public OperationCall(final String container, final String component, final String operation, final int orderIndex, final String failedCause, final long traceID, + final long timestamp) { + super(container, component, operation, orderIndex, failedCause); + + this.traceID = traceID; + this.timestamp = timestamp; + } + + @Override + public void addChild(final OperationCall child) { + super.addChild(child); + child.parent = this; + } + + @Override + public OperationCall getParent() { + return this.parent; + } + + public float getPercent() { + return this.percent; + } + + public void setPercent(final float percent) { + this.percent = percent; + } + + public long getDuration() { + return this.duration; + } + + public void setDuration(final long duration) { + this.duration = duration; + } + + public long getTraceID() { + return this.traceID; + } + + public long getTimestamp() { + return this.timestamp; + } + + public void setTimestamp(final long timestamp) { + this.timestamp = timestamp; + } + +} diff --git a/src/main/java/kieker/analysis/domain/OperationsDependency.java b/src/main/java/kieker/analysis/domain/OperationsDependency.java index 41fd8758e706c69df599450e741a646d507e3e76..2b8562b6a7068da71c183e555929bc9bedbfbf67 100644 --- a/src/main/java/kieker/analysis/domain/OperationsDependency.java +++ b/src/main/java/kieker/analysis/domain/OperationsDependency.java @@ -1,116 +1,116 @@ -package kieker.analysis.domain; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -/** - * This class represents an aggregated aggregated-trace. It connects - * operation calls and represents how often one operation call was called - * by another. - * - * @author Sören Henning - * - */ -public class OperationsDependency { - - // TODO Move to Domain package - - private final Map<String, AggregatedOperationCall> operations = new HashMap<>(); - - private final Map<String, OperationsDependencyRelation> relations = new HashMap<>(); - - public void addCall(final AggregatedOperationCall call) { - - addOperation(call); - addRelation(call); - } - - // TODO this should not be part of the model - private void addOperation(final AggregatedOperationCall call) { - String key = call.getIdentifier(); - - if (!operations.containsKey(key)) { - operations.put(key, new AggregatedOperationCall(call.getContainer(), call.getComponent(), call.getOperation(), 0)); - } - operations.get(key).addBaseOperationCalls(call.getBaseOperationCalls()); - } - - private void addRelation(final AggregatedOperationCall call) { - - AggregatedOperationCall parentCall = call.getParent(); - - if (parentCall == null) { - // TODO parent shouldn't be null. Create a class "EntryOperationCall". - return; - } - - String key = call.getIdentifier() + ',' + parentCall.getIdentifier(); - - if (!relations.containsKey(key)) { - - AggregatedOperationCall callee = operations.get(call.getIdentifier()); - AggregatedOperationCall caller = operations.get(parentCall.getIdentifier()); - - OperationsDependencyRelation relation = new OperationsDependencyRelation(callee, caller); - relations.put(key, relation); - } - - if (call.isFailed()) { - relations.get(key).addFailuredCalls(call.getCalls()); - } else { - relations.get(key).addCalls(call.getCalls()); - } - } - - public Collection<AggregatedOperationCall> getOperations() { - return operations.values(); - } - - public Collection<OperationsDependencyRelation> getRelations() { - return relations.values(); - } - - // TODO Just for debugging - - public void printOperations() { - - System.out.println("Operations:"); - System.out.println(); - - for (Entry<String, AggregatedOperationCall> call : operations.entrySet()) { - - System.out.println("Key: " + call.getKey()); - System.out.println("Value: " + call.getValue().getOperation()); - System.out.println("Calls:"); - - for (OperationCall call2 : call.getValue().getBaseOperationCalls()) { - - System.out.println(call2.getOperation()); - // System.out.println(call2.getFailedCause()); - - } - System.out.println(); - } - } - - // TODO Just for debugging - - public void printDependenncies() { - - System.out.println("Dependencies"); - System.out.println("Size: " + relations.size()); - - for (Entry<String, OperationsDependencyRelation> call : relations.entrySet()) { - - System.out.println("Set begin"); - // System.out.println(call.getKey()); - System.out.println(call.getValue().getCaller().getOperation() + "<-" + call.getValue().getCallee().getOperation() + ": " + call.getValue().getCalls() - + " (F: " + call.getValue().getFailuredCalls() + ")"); - System.out.println("Set end"); - System.out.println(); - } - } - -} +package kieker.analysis.domain; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +/** + * This class represents an aggregated aggregated-trace. It connects + * operation calls and represents how often one operation call was called + * by another. + * + * @author Sören Henning + * + */ +public class OperationsDependency { + + // TODO Move to Domain package + + private final Map<String, AggregatedOperationCall> operations = new HashMap<>(); + + private final Map<String, OperationsDependencyRelation> relations = new HashMap<>(); + + public void addCall(final AggregatedOperationCall call) { + + addOperation(call); + addRelation(call); + } + + // TODO this should not be part of the model + private void addOperation(final AggregatedOperationCall call) { + String key = call.getIdentifier(); + + if (!operations.containsKey(key)) { + operations.put(key, new AggregatedOperationCall(call.getContainer(), call.getComponent(), call.getOperation(), 0)); + } + operations.get(key).addBaseOperationCalls(call.getBaseOperationCalls()); + } + + private void addRelation(final AggregatedOperationCall call) { + + AggregatedOperationCall parentCall = call.getParent(); + + if (parentCall == null) { + // TODO parent shouldn't be null. Create a class "EntryOperationCall". + return; + } + + String key = call.getIdentifier() + ',' + parentCall.getIdentifier(); + + if (!relations.containsKey(key)) { + + AggregatedOperationCall callee = operations.get(call.getIdentifier()); + AggregatedOperationCall caller = operations.get(parentCall.getIdentifier()); + + OperationsDependencyRelation relation = new OperationsDependencyRelation(callee, caller); + relations.put(key, relation); + } + + if (call.isFailed()) { + relations.get(key).addFailuredCalls(call.getCalls()); + } else { + relations.get(key).addCalls(call.getCalls()); + } + } + + public Collection<AggregatedOperationCall> getOperations() { + return operations.values(); + } + + public Collection<OperationsDependencyRelation> getRelations() { + return relations.values(); + } + + // TODO Just for debugging + + public void printOperations() { + + System.out.println("Operations:"); + System.out.println(); + + for (Entry<String, AggregatedOperationCall> call : operations.entrySet()) { + + System.out.println("Key: " + call.getKey()); + System.out.println("Value: " + call.getValue().getOperation()); + System.out.println("Calls:"); + + for (OperationCall call2 : call.getValue().getBaseOperationCalls()) { + + System.out.println(call2.getOperation()); + // System.out.println(call2.getFailedCause()); + + } + System.out.println(); + } + } + + // TODO Just for debugging + + public void printDependenncies() { + + System.out.println("Dependencies"); + System.out.println("Size: " + relations.size()); + + for (Entry<String, OperationsDependencyRelation> call : relations.entrySet()) { + + System.out.println("Set begin"); + // System.out.println(call.getKey()); + System.out.println(call.getValue().getCaller().getOperation() + "<-" + call.getValue().getCallee().getOperation() + ": " + call.getValue().getCalls() + + " (F: " + call.getValue().getFailuredCalls() + ")"); + System.out.println("Set end"); + System.out.println(); + } + } + +} diff --git a/src/main/java/kieker/analysis/domain/OperationsDependencyRelation.java b/src/main/java/kieker/analysis/domain/OperationsDependencyRelation.java index 06c57c1d5328e30a718e2d185d215e22b802ee5c..530527acc2240edba1a62fd64bfca74999b47611 100644 --- a/src/main/java/kieker/analysis/domain/OperationsDependencyRelation.java +++ b/src/main/java/kieker/analysis/domain/OperationsDependencyRelation.java @@ -1,51 +1,51 @@ -package kieker.analysis.domain; - -/** - * Relation between two {@link AggregatedOperationCall}. Further it stores - * the number one operation calls the other and how many of this call failed - * by throwing an exception. - * - * @author Sören Henning - * - */ -// TODO Move to domain package -public class OperationsDependencyRelation { - - private final AggregatedOperationCall caller; - - private final AggregatedOperationCall callee; - - private int calls; - - private int failuredCalls; - - public OperationsDependencyRelation(final AggregatedOperationCall caller, final AggregatedOperationCall callee) { - this.caller = caller; - this.callee = callee; - } - - public AggregatedOperationCall getCaller() { - return caller; - } - - public AggregatedOperationCall getCallee() { - return callee; - } - - public void addCalls(final int calls) { - this.calls += calls; - } - - public void addFailuredCalls(final int failuredCalls) { - addCalls(failuredCalls); - this.failuredCalls += failuredCalls; - } - - public int getCalls() { - return calls; - } - - public int getFailuredCalls() { - return failuredCalls; - } -} +package kieker.analysis.domain; + +/** + * Relation between two {@link AggregatedOperationCall}. Further it stores + * the number one operation calls the other and how many of this call failed + * by throwing an exception. + * + * @author Sören Henning + * + */ +// TODO Move to domain package +public class OperationsDependencyRelation { + + private final AggregatedOperationCall caller; + + private final AggregatedOperationCall callee; + + private int calls; + + private int failuredCalls; + + public OperationsDependencyRelation(final AggregatedOperationCall caller, final AggregatedOperationCall callee) { + this.caller = caller; + this.callee = callee; + } + + public AggregatedOperationCall getCaller() { + return caller; + } + + public AggregatedOperationCall getCallee() { + return callee; + } + + public void addCalls(final int calls) { + this.calls += calls; + } + + public void addFailuredCalls(final int failuredCalls) { + addCalls(failuredCalls); + this.failuredCalls += failuredCalls; + } + + public int getCalls() { + return calls; + } + + public int getFailuredCalls() { + return failuredCalls; + } +} diff --git a/src/main/java/kieker/analysis/domain/Trace.java b/src/main/java/kieker/analysis/domain/Trace.java index eaafb6ba07865216bcfb538b06eb69222adabfb4..74f72f71f28e0498e781be2d51350ba93e15eaae 100644 --- a/src/main/java/kieker/analysis/domain/Trace.java +++ b/src/main/java/kieker/analysis/domain/Trace.java @@ -1,38 +1,38 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.domain; - -/** - * This class represents a concrete trace within this application. It adds some properties that are only required for concrete traces, like the trace ID. - * - * @author Nils Christian Ehmke - */ -public final class Trace extends AbstractTrace<OperationCall> { - - private final long traceID; - - public Trace(final OperationCall rootOperationCall, final long traceID) { - super(rootOperationCall); - - this.traceID = traceID; - } - - public long getTraceID() { - return this.traceID; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.domain; + +/** + * This class represents a concrete trace within this application. It adds some properties that are only required for concrete traces, like the trace ID. + * + * @author Nils Christian Ehmke + */ +public final class Trace extends AbstractTrace<OperationCall> { + + private final long traceID; + + public Trace(final OperationCall rootOperationCall, final long traceID) { + super(rootOperationCall); + + this.traceID = traceID; + } + + public long getTraceID() { + return this.traceID; + } + +} diff --git a/src/main/java/kieker/analysis/examples/ThroughputAnalysis.java b/src/main/java/kieker/analysis/examples/ThroughputAnalysis.java index 52c28bd86d819cf50efbeb749eea20f8fadecc46..2ac1f5e959d56d76d62a891a19bcf26e65267405 100644 --- a/src/main/java/kieker/analysis/examples/ThroughputAnalysis.java +++ b/src/main/java/kieker/analysis/examples/ThroughputAnalysis.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/analysis/examples/ThroughputTimestampAnalysis.java b/src/main/java/kieker/analysis/examples/ThroughputTimestampAnalysis.java index 24d6713ae703d09a379062a0e92f2f5c612f1560..4e6fb20e3e607409bf4f093f2cd8bcc475d13413 100644 --- a/src/main/java/kieker/analysis/examples/ThroughputTimestampAnalysis.java +++ b/src/main/java/kieker/analysis/examples/ThroughputTimestampAnalysis.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/analysis/graph/Direction.java b/src/main/java/kieker/analysis/graph/Direction.java index fea516c1ee0703a83a49d4b823501b0191875bce..d10ff42b72b715e507b324d8677a76321c0cd925 100644 --- a/src/main/java/kieker/analysis/graph/Direction.java +++ b/src/main/java/kieker/analysis/graph/Direction.java @@ -1,22 +1,22 @@ -package kieker.analysis.graph; - -/** - * Direction is used to denote the direction of an edge or location of a vertex on an edge. - * - * @author Sören Henning - * - */ -public enum Direction { - - OUT, IN, BOTH; - - public Direction opposite() { - if (this.equals(OUT)) { - return IN; - } else if (this.equals(IN)) { - return OUT; - } else { - return BOTH; - } - } -} +package kieker.analysis.graph; + +/** + * Direction is used to denote the direction of an edge or location of a vertex on an edge. + * + * @author Sören Henning + * + */ +public enum Direction { + + OUT, IN, BOTH; + + public Direction opposite() { + if (this.equals(OUT)) { + return IN; + } else if (this.equals(IN)) { + return OUT; + } else { + return BOTH; + } + } +} diff --git a/src/main/java/kieker/analysis/graph/Edge.java b/src/main/java/kieker/analysis/graph/Edge.java index 82f8065b9435de8d791b38b4ce77c6d375957394..75fdbd09e8c8308323a3d12a12c2dcc848c76be8 100644 --- a/src/main/java/kieker/analysis/graph/Edge.java +++ b/src/main/java/kieker/analysis/graph/Edge.java @@ -1,7 +1,7 @@ -package kieker.analysis.graph; - -public interface Edge extends Element { - - public Vertex getVertex(Direction direction) throws IllegalArgumentException; - -} +package kieker.analysis.graph; + +public interface Edge extends Element { + + public Vertex getVertex(Direction direction) throws IllegalArgumentException; + +} diff --git a/src/main/java/kieker/analysis/graph/Element.java b/src/main/java/kieker/analysis/graph/Element.java index b90e87b7f82f91459b6539468bfc301f2da70239..9682cead451b9861c1a504c94fd9474ebe5a02c8 100644 --- a/src/main/java/kieker/analysis/graph/Element.java +++ b/src/main/java/kieker/analysis/graph/Element.java @@ -1,18 +1,18 @@ -package kieker.analysis.graph; - -import java.util.Set; - -public abstract interface Element { - - public <T> T getProperty(String key); - - public Set<String> getPropertyKeys(); - - public void setProperty(String key, Object value); - - public <T> T removeProperty(String key); - - public void remove(); - - public Object getId(); -} +package kieker.analysis.graph; + +import java.util.Set; + +public abstract interface Element { + + public <T> T getProperty(String key); + + public Set<String> getPropertyKeys(); + + public void setProperty(String key, Object value); + + public <T> T removeProperty(String key); + + public void remove(); + + public Object getId(); +} diff --git a/src/main/java/kieker/analysis/graph/Graph.java b/src/main/java/kieker/analysis/graph/Graph.java index 0719646bd63fb9480b28f5a4ebd29bc66b0447d6..d2c9a59ebfebf6ae0ee2f4b38d35a47e35a2571a 100644 --- a/src/main/java/kieker/analysis/graph/Graph.java +++ b/src/main/java/kieker/analysis/graph/Graph.java @@ -1,21 +1,21 @@ -package kieker.analysis.graph; - -public interface Graph { - - public Vertex addVertex(Object id); - - public Vertex getVertex(Object id); - - public void removeVertex(Vertex vertex); - - public Iterable<Vertex> getVertices(); - - public Edge addEdge(Object id, Vertex outVertex, Vertex inVertex); - - public Edge getEdge(Object id); - - public void removeEdge(Edge edge); - - public Iterable<Edge> getEdges(); - -} +package kieker.analysis.graph; + +public interface Graph { + + public Vertex addVertex(Object id); + + public Vertex getVertex(Object id); + + public void removeVertex(Vertex vertex); + + public Iterable<Vertex> getVertices(); + + public Edge addEdge(Object id, Vertex outVertex, Vertex inVertex); + + public Edge getEdge(Object id); + + public void removeEdge(Edge edge); + + public Iterable<Edge> getEdges(); + +} diff --git a/src/main/java/kieker/analysis/graph/GraphTester.java b/src/main/java/kieker/analysis/graph/GraphTester.java index 1fb4f3ce144400679fb231cad6ae330e380de590..bc151543721ce59aa4905506c14a0af169d72d8a 100644 --- a/src/main/java/kieker/analysis/graph/GraphTester.java +++ b/src/main/java/kieker/analysis/graph/GraphTester.java @@ -1,42 +1,42 @@ -package kieker.analysis.graph; - -import kieker.analysis.graph.impl.GraphImpl; - -public class GraphTester { - - public static void main(final String[] args) { - - Graph graph = new GraphImpl(); - - Vertex node1 = graph.addVertex("n1"); - - Vertex node2 = graph.addVertex("n2"); - - Vertex node3 = graph.addVertex("n3"); - - Vertex node4 = graph.addVertex("n4"); - - Edge edge12 = node1.addEdge(node2); - Edge edge11 = node1.addEdge(node1); - - Edge edge23 = node2.addEdge("e23", node3); - - graph.addEdge("e13", node1, node3); - - Vertex node1snd = graph.getVertex("n1"); - - assert node1 == node1snd; - - for (Vertex vertex : graph.getVertices()) { - System.out.println(vertex.getId()); - } - - for (Edge edge : graph.getEdges()) { - System.out.println(edge.getId()); - } - - // node2.addEdgeTo(node11); - - } - -} +package kieker.analysis.graph; + +import kieker.analysis.graph.impl.GraphImpl; + +public class GraphTester { + + public static void main(final String[] args) { + + Graph graph = new GraphImpl(); + + Vertex node1 = graph.addVertex("n1"); + + Vertex node2 = graph.addVertex("n2"); + + Vertex node3 = graph.addVertex("n3"); + + Vertex node4 = graph.addVertex("n4"); + + Edge edge12 = node1.addEdge(node2); + Edge edge11 = node1.addEdge(node1); + + Edge edge23 = node2.addEdge("e23", node3); + + graph.addEdge("e13", node1, node3); + + Vertex node1snd = graph.getVertex("n1"); + + assert node1 == node1snd; + + for (Vertex vertex : graph.getVertices()) { + System.out.println(vertex.getId()); + } + + for (Edge edge : graph.getEdges()) { + System.out.println(edge.getId()); + } + + // node2.addEdgeTo(node11); + + } + +} diff --git a/src/main/java/kieker/analysis/graph/Subgraph.java b/src/main/java/kieker/analysis/graph/Subgraph.java index a3beca7c78f688fb297d34926c3ce226188accba..e331bed31758eeef2e5cc69ae8856e7d519e4eff 100644 --- a/src/main/java/kieker/analysis/graph/Subgraph.java +++ b/src/main/java/kieker/analysis/graph/Subgraph.java @@ -1,5 +1,5 @@ -package kieker.analysis.graph; - -public interface Subgraph { - -} +package kieker.analysis.graph; + +public interface Subgraph { + +} diff --git a/src/main/java/kieker/analysis/graph/Vertex.java b/src/main/java/kieker/analysis/graph/Vertex.java index 6d6b02a8ff266ffea82800cb4419ebd21ce157c1..f231c78d27a3764b5453331e738c88b30b08150a 100644 --- a/src/main/java/kieker/analysis/graph/Vertex.java +++ b/src/main/java/kieker/analysis/graph/Vertex.java @@ -1,17 +1,17 @@ -package kieker.analysis.graph; - -public interface Vertex extends Element { - - public Graph getChildGraph(); - - public Graph addChildGraph(); - - public Iterable<Edge> getEdges(Direction direction); - - public Iterable<Vertex> getVertices(Direction direction); - - public Edge addEdge(Vertex inVertex); - - public Edge addEdge(Object id, Vertex inVertex); - -} +package kieker.analysis.graph; + +public interface Vertex extends Element { + + public Graph getChildGraph(); + + public Graph addChildGraph(); + + public Iterable<Edge> getEdges(Direction direction); + + public Iterable<Vertex> getVertices(Direction direction); + + public Edge addEdge(Vertex inVertex); + + public Edge addEdge(Object id, Vertex inVertex); + +} diff --git a/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java b/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java index 6b0dbae34ae08f8336c9a51955f0237c0963d1d2..6909533ce83b20b2247b23cf5a2030af6555371e 100644 --- a/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java +++ b/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java @@ -1,34 +1,34 @@ -package kieker.analysis.graph.impl; - -import kieker.analysis.graph.Direction; -import kieker.analysis.graph.Edge; -import kieker.analysis.graph.Vertex; - -class EdgeImpl extends ElementImpl implements Edge { - - private final Vertex outVertex; - private final Vertex inVertex; - - protected EdgeImpl(final String id, final Vertex outVertex, final Vertex inVertex, final GraphImpl graph) { - super(id, graph); - this.outVertex = outVertex; - this.inVertex = inVertex; - } - - @Override - public void remove() { - this.graph.removeEdge(this); - } - - @Override - public Vertex getVertex(final Direction direction) throws IllegalArgumentException { - if (direction.equals(Direction.IN)) { - return this.inVertex; - } else if (direction.equals(Direction.OUT)) { - return this.outVertex; - } else { - throw ExceptionFactory.bothIsNotSupported(); - } - } - -} +package kieker.analysis.graph.impl; + +import kieker.analysis.graph.Direction; +import kieker.analysis.graph.Edge; +import kieker.analysis.graph.Vertex; + +class EdgeImpl extends ElementImpl implements Edge { + + private final Vertex outVertex; + private final Vertex inVertex; + + protected EdgeImpl(final String id, final Vertex outVertex, final Vertex inVertex, final GraphImpl graph) { + super(id, graph); + this.outVertex = outVertex; + this.inVertex = inVertex; + } + + @Override + public void remove() { + this.graph.removeEdge(this); + } + + @Override + public Vertex getVertex(final Direction direction) throws IllegalArgumentException { + if (direction.equals(Direction.IN)) { + return this.inVertex; + } else if (direction.equals(Direction.OUT)) { + return this.outVertex; + } else { + throw ExceptionFactory.bothIsNotSupported(); + } + } + +} diff --git a/src/main/java/kieker/analysis/graph/impl/ElementImpl.java b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java index e1c2fbd6b26cecf3508fb5bfd22fc40f296e9750..e980e4b94f10a84c6543f99aeee56d86a655ac91 100644 --- a/src/main/java/kieker/analysis/graph/impl/ElementImpl.java +++ b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java @@ -1,51 +1,51 @@ -package kieker.analysis.graph.impl; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import kieker.analysis.graph.Element; - -abstract class ElementImpl implements Element { - - protected Map<String, Object> properties = new HashMap<String, Object>(); - protected final String id; - protected final GraphImpl graph; // TODO Maybe Graph as type? - - protected ElementImpl(final String id, final GraphImpl graph) { - this.graph = graph; - this.id = id; - } - - @Override - @SuppressWarnings("unchecked") - public <T> T getProperty(final String key) { - return (T) this.properties.get(key); - } - - @Override - public Set<String> getPropertyKeys() { - return new HashSet<String>(this.properties.keySet()); - } - - @Override - public void setProperty(final String key, final Object value) { - this.properties.put(key, value); - } - - @Override - @SuppressWarnings("unchecked") - public <T> T removeProperty(final String key) { - return (T) this.properties.remove(key); - } - - @Override - abstract public void remove(); - - @Override - public Object getId() { - return this.id; - } - -} +package kieker.analysis.graph.impl; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import kieker.analysis.graph.Element; + +abstract class ElementImpl implements Element { + + protected Map<String, Object> properties = new HashMap<String, Object>(); + protected final String id; + protected final GraphImpl graph; // TODO Maybe Graph as type? + + protected ElementImpl(final String id, final GraphImpl graph) { + this.graph = graph; + this.id = id; + } + + @Override + @SuppressWarnings("unchecked") + public <T> T getProperty(final String key) { + return (T) this.properties.get(key); + } + + @Override + public Set<String> getPropertyKeys() { + return new HashSet<String>(this.properties.keySet()); + } + + @Override + public void setProperty(final String key, final Object value) { + this.properties.put(key, value); + } + + @Override + @SuppressWarnings("unchecked") + public <T> T removeProperty(final String key) { + return (T) this.properties.remove(key); + } + + @Override + abstract public void remove(); + + @Override + public Object getId() { + return this.id; + } + +} diff --git a/src/main/java/kieker/analysis/graph/impl/ExceptionFactory.java b/src/main/java/kieker/analysis/graph/impl/ExceptionFactory.java index 63605411798372bd59ab02c3e734e3ade1548faf..f437379e32450c8d33ff89145759c990c175bf33 100644 --- a/src/main/java/kieker/analysis/graph/impl/ExceptionFactory.java +++ b/src/main/java/kieker/analysis/graph/impl/ExceptionFactory.java @@ -1,58 +1,58 @@ -package kieker.analysis.graph.impl; - -/** - * The ExceptionFactory provides standard exceptions for graphs. - * - * @author Sören Henning - */ -class ExceptionFactory { - - // Graph related exceptions - - public static IllegalArgumentException vertexIdCanNotBeNull() { - return new IllegalArgumentException("Vertex id can not be null"); - } - - public static IllegalArgumentException edgeIdCanNotBeNull() { - return new IllegalArgumentException("Edge id can not be null"); - } - - public static IllegalArgumentException vertexWithIdAlreadyExists(final Object id) { - return new IllegalArgumentException("Vertex with id already exists: " + id); - } - - public static IllegalArgumentException edgeWithIdAlreadyExists(final Object id) { - return new IllegalArgumentException("Edge with id already exists: " + id); - } - - public static IllegalStateException vertexWithIdDoesNotExist(final Object id) { - return new IllegalStateException("Vertex with id does not exist: " + id); - } - - public static IllegalStateException edgeWithIdDoesNotExist(final Object id) { - return new IllegalStateException("Edge with id does not exist: " + id); - } - - public static IllegalArgumentException bothIsNotSupported() { - return new IllegalArgumentException("A direction of BOTH is not supported"); - } - - // Element related exceptions - - public static IllegalArgumentException propertyKeyIsReserved(final String key) { - return new IllegalArgumentException("Property key is reserved for all elements: " + key); - } - - public static IllegalArgumentException propertyKeyCanNotBeEmpty() { - return new IllegalArgumentException("Property key can not be the empty string"); - } - - public static IllegalArgumentException propertyKeyCanNotBeNull() { - return new IllegalArgumentException("Property key can not be null"); - } - - public static IllegalArgumentException propertyValueCanNotBeNull() { - return new IllegalArgumentException("Property value can not be null"); - } - -} +package kieker.analysis.graph.impl; + +/** + * The ExceptionFactory provides standard exceptions for graphs. + * + * @author Sören Henning + */ +class ExceptionFactory { + + // Graph related exceptions + + public static IllegalArgumentException vertexIdCanNotBeNull() { + return new IllegalArgumentException("Vertex id can not be null"); + } + + public static IllegalArgumentException edgeIdCanNotBeNull() { + return new IllegalArgumentException("Edge id can not be null"); + } + + public static IllegalArgumentException vertexWithIdAlreadyExists(final Object id) { + return new IllegalArgumentException("Vertex with id already exists: " + id); + } + + public static IllegalArgumentException edgeWithIdAlreadyExists(final Object id) { + return new IllegalArgumentException("Edge with id already exists: " + id); + } + + public static IllegalStateException vertexWithIdDoesNotExist(final Object id) { + return new IllegalStateException("Vertex with id does not exist: " + id); + } + + public static IllegalStateException edgeWithIdDoesNotExist(final Object id) { + return new IllegalStateException("Edge with id does not exist: " + id); + } + + public static IllegalArgumentException bothIsNotSupported() { + return new IllegalArgumentException("A direction of BOTH is not supported"); + } + + // Element related exceptions + + public static IllegalArgumentException propertyKeyIsReserved(final String key) { + return new IllegalArgumentException("Property key is reserved for all elements: " + key); + } + + public static IllegalArgumentException propertyKeyCanNotBeEmpty() { + return new IllegalArgumentException("Property key can not be the empty string"); + } + + public static IllegalArgumentException propertyKeyCanNotBeNull() { + return new IllegalArgumentException("Property key can not be null"); + } + + public static IllegalArgumentException propertyValueCanNotBeNull() { + return new IllegalArgumentException("Property value can not be null"); + } + +} diff --git a/src/main/java/kieker/analysis/graph/impl/GraphImpl.java b/src/main/java/kieker/analysis/graph/impl/GraphImpl.java index 580a808d2656bb4bc8bf9631b3a61a87c7333009..b5202fbfdbfb476b8d96fbde2580b24dde3296cd 100644 --- a/src/main/java/kieker/analysis/graph/impl/GraphImpl.java +++ b/src/main/java/kieker/analysis/graph/impl/GraphImpl.java @@ -1,126 +1,126 @@ -package kieker.analysis.graph.impl; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -import kieker.analysis.graph.Direction; -import kieker.analysis.graph.Edge; -import kieker.analysis.graph.Graph; -import kieker.analysis.graph.Vertex; - -public class GraphImpl implements Graph { - - protected Map<String, Vertex> vertices = new HashMap<String, Vertex>(); - protected Map<String, Edge> edges = new HashMap<String, Edge>(); - - protected Long currentDefaultId = 0l; - - public GraphImpl() {} - - @Override - public Vertex addVertex(final Object id) { - String idString = null; - if (id == null) { - do { - idString = getDefaultId(); - } while (vertices.containsKey(idString)); - } else { - idString = id.toString(); - if (vertices.containsKey(idString)) { - throw ExceptionFactory.vertexWithIdAlreadyExists(id); - } - } - - Vertex vertex = new VertexImpl(idString, this); - vertices.put(vertex.getId().toString(), vertex); - return vertex; - } - - @Override - public Vertex getVertex(final Object id) { - if (id == null) { - throw ExceptionFactory.vertexIdCanNotBeNull(); - } - String idString = id.toString(); - return this.vertices.get(idString); - } - - @Override - public Iterable<Vertex> getVertices() { - return new ArrayList<Vertex>(this.vertices.values()); - } - - @Override - public void removeVertex(final Vertex vertex) { - if (!this.vertices.containsKey(vertex.getId().toString())) { - throw ExceptionFactory.vertexWithIdDoesNotExist(vertex.getId()); - } - - for (Edge edge : vertex.getEdges(Direction.BOTH)) { - this.removeEdge(edge); - } - - this.vertices.remove(vertex.getId().toString()); - } - - @Override - public Edge addEdge(final Object id, final Vertex outVertex, final Vertex inVertex) { - String idString; - if (id == null) { - do { - idString = getDefaultId(); - } while (edges.containsKey(idString)); - } else { - idString = id.toString(); - if (edges.containsKey(idString)) { - throw ExceptionFactory.edgeWithIdAlreadyExists(id); - } - } - - // TODO Maybe: Check whether both vertices are in the same graph - - final Edge edge = new EdgeImpl(idString, outVertex, inVertex, this); - this.edges.put(edge.getId().toString(), edge); - ((VertexImpl) outVertex).addOutEdge(edge); - ((VertexImpl) inVertex).addInEdge(edge); - - return edge; - } - - @Override - public Edge getEdge(final Object id) { - if (id == null) { - throw ExceptionFactory.edgeIdCanNotBeNull(); - } - String idString = id.toString(); - return this.edges.get(idString); - } - - @Override - public Iterable<Edge> getEdges() { - return new ArrayList<Edge>(this.edges.values()); - } - - @Override - public void removeEdge(final Edge edge) { - if (!this.edges.containsKey(edge.getId().toString())) { - throw ExceptionFactory.edgeWithIdDoesNotExist(edge.getId()); - } - - ((VertexImpl) edge.getVertex(Direction.IN)).removeInEdge(edge); - ((VertexImpl) edge.getVertex(Direction.OUT)).removeOutEdge(edge); - - this.edges.remove(edge.getId().toString()); - } - - private String getDefaultId() { - String idString; - do { - idString = currentDefaultId.toString(); - currentDefaultId++; - } while (vertices.containsKey(idString) || edges.containsKey(idString)); - return idString; - } - -} +package kieker.analysis.graph.impl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import kieker.analysis.graph.Direction; +import kieker.analysis.graph.Edge; +import kieker.analysis.graph.Graph; +import kieker.analysis.graph.Vertex; + +public class GraphImpl implements Graph { + + protected Map<String, Vertex> vertices = new HashMap<String, Vertex>(); + protected Map<String, Edge> edges = new HashMap<String, Edge>(); + + protected Long currentDefaultId = 0l; + + public GraphImpl() {} + + @Override + public Vertex addVertex(final Object id) { + String idString = null; + if (id == null) { + do { + idString = getDefaultId(); + } while (vertices.containsKey(idString)); + } else { + idString = id.toString(); + if (vertices.containsKey(idString)) { + throw ExceptionFactory.vertexWithIdAlreadyExists(id); + } + } + + Vertex vertex = new VertexImpl(idString, this); + vertices.put(vertex.getId().toString(), vertex); + return vertex; + } + + @Override + public Vertex getVertex(final Object id) { + if (id == null) { + throw ExceptionFactory.vertexIdCanNotBeNull(); + } + String idString = id.toString(); + return this.vertices.get(idString); + } + + @Override + public Iterable<Vertex> getVertices() { + return new ArrayList<Vertex>(this.vertices.values()); + } + + @Override + public void removeVertex(final Vertex vertex) { + if (!this.vertices.containsKey(vertex.getId().toString())) { + throw ExceptionFactory.vertexWithIdDoesNotExist(vertex.getId()); + } + + for (Edge edge : vertex.getEdges(Direction.BOTH)) { + this.removeEdge(edge); + } + + this.vertices.remove(vertex.getId().toString()); + } + + @Override + public Edge addEdge(final Object id, final Vertex outVertex, final Vertex inVertex) { + String idString; + if (id == null) { + do { + idString = getDefaultId(); + } while (edges.containsKey(idString)); + } else { + idString = id.toString(); + if (edges.containsKey(idString)) { + throw ExceptionFactory.edgeWithIdAlreadyExists(id); + } + } + + // TODO Maybe: Check whether both vertices are in the same graph + + final Edge edge = new EdgeImpl(idString, outVertex, inVertex, this); + this.edges.put(edge.getId().toString(), edge); + ((VertexImpl) outVertex).addOutEdge(edge); + ((VertexImpl) inVertex).addInEdge(edge); + + return edge; + } + + @Override + public Edge getEdge(final Object id) { + if (id == null) { + throw ExceptionFactory.edgeIdCanNotBeNull(); + } + String idString = id.toString(); + return this.edges.get(idString); + } + + @Override + public Iterable<Edge> getEdges() { + return new ArrayList<Edge>(this.edges.values()); + } + + @Override + public void removeEdge(final Edge edge) { + if (!this.edges.containsKey(edge.getId().toString())) { + throw ExceptionFactory.edgeWithIdDoesNotExist(edge.getId()); + } + + ((VertexImpl) edge.getVertex(Direction.IN)).removeInEdge(edge); + ((VertexImpl) edge.getVertex(Direction.OUT)).removeOutEdge(edge); + + this.edges.remove(edge.getId().toString()); + } + + private String getDefaultId() { + String idString; + do { + idString = currentDefaultId.toString(); + currentDefaultId++; + } while (vertices.containsKey(idString) || edges.containsKey(idString)); + return idString; + } + +} diff --git a/src/main/java/kieker/analysis/graph/impl/VertexImpl.java b/src/main/java/kieker/analysis/graph/impl/VertexImpl.java index 2bfc84218d9215584ce3ab3ac64fa10fa69809a6..fa049476d4ff44dd21a6a9832dec446a5478a079 100644 --- a/src/main/java/kieker/analysis/graph/impl/VertexImpl.java +++ b/src/main/java/kieker/analysis/graph/impl/VertexImpl.java @@ -1,93 +1,93 @@ -package kieker.analysis.graph.impl; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -import kieker.analysis.graph.Direction; -import kieker.analysis.graph.Edge; -import kieker.analysis.graph.Graph; -import kieker.analysis.graph.Vertex; - -class VertexImpl extends ElementImpl implements Vertex { - - protected Map<String, Edge> outEdges = new HashMap<String, Edge>(); - protected Map<String, Edge> inEdges = new HashMap<String, Edge>(); - - protected VertexImpl(final String id, final GraphImpl graph) { - super(id, graph); - } - - @Override - public Graph addChildGraph() { - // TODO Auto-generated method stub - return null; - } - - @Override - public Graph getChildGraph() { - // TODO Auto-generated method stub - return null; - } - - @Override - public Iterable<Edge> getEdges(final Direction direction) { - if (direction.equals(Direction.OUT)) { - return new ArrayList<>(this.outEdges.values()); - } else if (direction.equals(Direction.IN)) { - return new ArrayList<>(this.inEdges.values()); - } else { - ArrayList<Edge> edges = new ArrayList<>(this.outEdges.values()); - edges.addAll(this.inEdges.values()); - return edges; - } - } - - @Override - public Iterable<Vertex> getVertices(final Direction direction) { - - if (direction.equals(Direction.BOTH)) { - ArrayList<Vertex> vertices = (ArrayList<Vertex>) getVertices(Direction.IN); - vertices.addAll((ArrayList<Vertex>) getVertices(Direction.OUT)); - return vertices; - } - - ArrayList<Vertex> vertices = new ArrayList<>(); - for (Edge edge : getEdges(direction)) { - vertices.add(edge.getVertex(direction.opposite())); - } - return vertices; - } - - @Override - public void remove() { - graph.removeVertex(this); - } - - @Override - public Edge addEdge(final Vertex inVertex) { - return addEdge(null, inVertex); - } - - @Override - public Edge addEdge(final Object id, final Vertex inVertex) { - return this.graph.addEdge(id, this, inVertex); - } - - protected void addOutEdge(final Edge edge) { - this.outEdges.put(edge.getId().toString(), edge); - } - - protected void addInEdge(final Edge edge) { - this.inEdges.put(edge.getId().toString(), edge); - } - - protected void removeInEdge(final Edge edge) { - this.inEdges.remove(edge.getId().toString()); - } - - protected void removeOutEdge(final Edge edge) { - this.outEdges.remove(edge.getId().toString()); - } - -} +package kieker.analysis.graph.impl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import kieker.analysis.graph.Direction; +import kieker.analysis.graph.Edge; +import kieker.analysis.graph.Graph; +import kieker.analysis.graph.Vertex; + +class VertexImpl extends ElementImpl implements Vertex { + + protected Map<String, Edge> outEdges = new HashMap<String, Edge>(); + protected Map<String, Edge> inEdges = new HashMap<String, Edge>(); + + protected VertexImpl(final String id, final GraphImpl graph) { + super(id, graph); + } + + @Override + public Graph addChildGraph() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Graph getChildGraph() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Iterable<Edge> getEdges(final Direction direction) { + if (direction.equals(Direction.OUT)) { + return new ArrayList<>(this.outEdges.values()); + } else if (direction.equals(Direction.IN)) { + return new ArrayList<>(this.inEdges.values()); + } else { + ArrayList<Edge> edges = new ArrayList<>(this.outEdges.values()); + edges.addAll(this.inEdges.values()); + return edges; + } + } + + @Override + public Iterable<Vertex> getVertices(final Direction direction) { + + if (direction.equals(Direction.BOTH)) { + ArrayList<Vertex> vertices = (ArrayList<Vertex>) getVertices(Direction.IN); + vertices.addAll((ArrayList<Vertex>) getVertices(Direction.OUT)); + return vertices; + } + + ArrayList<Vertex> vertices = new ArrayList<>(); + for (Edge edge : getEdges(direction)) { + vertices.add(edge.getVertex(direction.opposite())); + } + return vertices; + } + + @Override + public void remove() { + graph.removeVertex(this); + } + + @Override + public Edge addEdge(final Vertex inVertex) { + return addEdge(null, inVertex); + } + + @Override + public Edge addEdge(final Object id, final Vertex inVertex) { + return this.graph.addEdge(id, this, inVertex); + } + + protected void addOutEdge(final Edge edge) { + this.outEdges.put(edge.getId().toString(), edge); + } + + protected void addInEdge(final Edge edge) { + this.inEdges.put(edge.getId().toString(), edge); + } + + protected void removeInEdge(final Edge edge) { + this.inEdges.remove(edge.getId().toString()); + } + + protected void removeOutEdge(final Edge edge) { + this.outEdges.remove(edge.getId().toString()); + } + +} diff --git a/src/main/java/kieker/analysis/stage/CacheFilter.java b/src/main/java/kieker/analysis/stage/CacheFilter.java index d0a82be8baf48aff0bd0846db6a92cbd5180c2a8..c7b9dd0e0a18c974830ec77cb08c9f0afedbdd98 100644 --- a/src/main/java/kieker/analysis/stage/CacheFilter.java +++ b/src/main/java/kieker/analysis/stage/CacheFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/analysis/stage/CollectorSink.java b/src/main/java/kieker/analysis/stage/CollectorSink.java index 6926580140fa21640b276124a1a2e9b3f218413e..f035c2bf889cbc24346e27123b0afb900effe22b 100644 --- a/src/main/java/kieker/analysis/stage/CollectorSink.java +++ b/src/main/java/kieker/analysis/stage/CollectorSink.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/analysis/stage/EmptyPassOnFilter.java b/src/main/java/kieker/analysis/stage/EmptyPassOnFilter.java index e255df3974cdc919b2a5116486d187486bad49af..6cea642526d6240a9fe401d8296410ff7006b773 100644 --- a/src/main/java/kieker/analysis/stage/EmptyPassOnFilter.java +++ b/src/main/java/kieker/analysis/stage/EmptyPassOnFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/analysis/stage/ObjectProducer.java b/src/main/java/kieker/analysis/stage/ObjectProducer.java index 83abf79ab5f454449f62d1cfeee811d7834d472b..a02bd9ea84e6e6b143792c68f5dc4d7e5799bc32 100644 --- a/src/main/java/kieker/analysis/stage/ObjectProducer.java +++ b/src/main/java/kieker/analysis/stage/ObjectProducer.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/analysis/stage/StartTimestampFilter.java b/src/main/java/kieker/analysis/stage/StartTimestampFilter.java index 809a25b880a6cb2cb954557f1edf7977c6fe7085..fb1dbd0ad8ac7a7d90a064640a52c8fbbf431751 100644 --- a/src/main/java/kieker/analysis/stage/StartTimestampFilter.java +++ b/src/main/java/kieker/analysis/stage/StartTimestampFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/analysis/stage/StopTimestampFilter.java b/src/main/java/kieker/analysis/stage/StopTimestampFilter.java index ac8a1801f62dcfd0c22cbe90dce08e7f8cc6eb75..690319a20b9dbd0b9507ae38c8818aa0e32226d9 100644 --- a/src/main/java/kieker/analysis/stage/StopTimestampFilter.java +++ b/src/main/java/kieker/analysis/stage/StopTimestampFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/analysis/stage/TimeReader.java b/src/main/java/kieker/analysis/stage/TimeReader.java index 8454d15097004075ccea386b4df7b72f4a24f084..12c872c0444f825e43e3994d807e85179c6c6264 100644 --- a/src/main/java/kieker/analysis/stage/TimeReader.java +++ b/src/main/java/kieker/analysis/stage/TimeReader.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/AggregatedTraceStatisticsDecorator.java b/src/main/java/kieker/analysis/stage/tracediagnosis/AggregatedTraceStatisticsDecorator.java index ad32e0d5021ac11413e8aafabfffe34e769442ab..f7d18f00610e6a9b69befd45c917332bdb4621a7 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/AggregatedTraceStatisticsDecorator.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/AggregatedTraceStatisticsDecorator.java @@ -1,120 +1,120 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import java.util.ArrayList; -import java.util.List; - -import kieker.analysis.domain.AggregatedOperationCall; -import kieker.analysis.domain.AggregatedTrace; -import kieker.analysis.domain.OperationCall; -import kieker.analysis.domain.Trace; -import kieker.analysis.traceanalysisutil.Statistics; -import kieker.analysis.traceanalysisutil.StatisticsUtility; - -import teetime.stage.basic.AbstractTransformation; - -/** - * This class is a {@code TeeTime} stage adding statistics (via the corresponding setters) to instances of {@link AggregatedTrace}. The traces are forwarded to the - * output port. - * - * @author Nils Christian Ehmke - */ -public final class AggregatedTraceStatisticsDecorator extends AbstractTransformation<AggregatedTrace, AggregatedTrace> { - - @Override - public void execute(final AggregatedTrace trace) { - AggregatedTraceStatisticsDecorator.addNumberOfCalls(trace.getRootOperationCall(), trace.getTraces().size()); - AggregatedTraceStatisticsDecorator.addDurationStatistics(trace); - - // The references are no longer needed - trace.getTraces().clear(); - - super.getOutputPort().send(trace); - } - - private static void addNumberOfCalls(final AggregatedOperationCall call, final int calls) { - call.setCalls(calls); - - for (final AggregatedOperationCall child : call.getChildren()) { - AggregatedTraceStatisticsDecorator.addNumberOfCalls(child, calls); - } - } - - private static void addDurationStatistics(final AggregatedTrace trace) { - final TraceDurationVisitor traceDurationVisitor = new TraceDurationVisitor(); - - for (final Trace t : trace.getTraces()) { - traceDurationVisitor.visit(t); - } - - traceDurationVisitor.addDurationStatistics(trace); - } - - /** - * @author Nils Christian Ehmke - */ - private static final class TraceDurationVisitor { - - private final List<List<Long>> durationsPerEdge = new ArrayList<>(); - private int edgeIndex; - - public void visit(final Trace trace) { - this.edgeIndex = -1; - this.visit(trace.getRootOperationCall()); - } - - private void visit(final OperationCall rootOperationCall) { - this.edgeIndex++; - if (this.durationsPerEdge.size() <= this.edgeIndex) { - this.durationsPerEdge.add(new ArrayList<Long>()); - } - - final List<Long> durationsOfCurrentEdge = this.durationsPerEdge.get(this.edgeIndex); - - durationsOfCurrentEdge.add(rootOperationCall.getDuration()); - - for (final OperationCall child : rootOperationCall.getChildren()) { - this.visit(child); - } - } - - public void addDurationStatistics(final AggregatedTrace trace) { - this.edgeIndex = -1; - this.addDurationStatistics(trace.getRootOperationCall()); - } - - private void addDurationStatistics(final AggregatedOperationCall rootOperationCall) { - this.edgeIndex++; - - final List<Long> durationsOfCurrentEdge = this.durationsPerEdge.get(this.edgeIndex); - - final Statistics statistics = StatisticsUtility.calculateStatistics(durationsOfCurrentEdge); - rootOperationCall.setMinDuration(statistics.getMinDuration()); - rootOperationCall.setMaxDuration(statistics.getMaxDuration()); - rootOperationCall.setMeanDuration(statistics.getMeanDuration()); - rootOperationCall.setTotalDuration(statistics.getTotalDuration()); - rootOperationCall.setMedianDuration(statistics.getMedianDuration()); - - for (final AggregatedOperationCall child : rootOperationCall.getChildren()) { - this.addDurationStatistics(child); - } - } - - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import java.util.ArrayList; +import java.util.List; + +import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.domain.AggregatedTrace; +import kieker.analysis.domain.OperationCall; +import kieker.analysis.domain.Trace; +import kieker.analysis.traceanalysisutil.Statistics; +import kieker.analysis.traceanalysisutil.StatisticsUtility; + +import teetime.stage.basic.AbstractTransformation; + +/** + * This class is a {@code TeeTime} stage adding statistics (via the corresponding setters) to instances of {@link AggregatedTrace}. The traces are forwarded to the + * output port. + * + * @author Nils Christian Ehmke + */ +public final class AggregatedTraceStatisticsDecorator extends AbstractTransformation<AggregatedTrace, AggregatedTrace> { + + @Override + public void execute(final AggregatedTrace trace) { + AggregatedTraceStatisticsDecorator.addNumberOfCalls(trace.getRootOperationCall(), trace.getTraces().size()); + AggregatedTraceStatisticsDecorator.addDurationStatistics(trace); + + // The references are no longer needed + trace.getTraces().clear(); + + super.getOutputPort().send(trace); + } + + private static void addNumberOfCalls(final AggregatedOperationCall call, final int calls) { + call.setCalls(calls); + + for (final AggregatedOperationCall child : call.getChildren()) { + AggregatedTraceStatisticsDecorator.addNumberOfCalls(child, calls); + } + } + + private static void addDurationStatistics(final AggregatedTrace trace) { + final TraceDurationVisitor traceDurationVisitor = new TraceDurationVisitor(); + + for (final Trace t : trace.getTraces()) { + traceDurationVisitor.visit(t); + } + + traceDurationVisitor.addDurationStatistics(trace); + } + + /** + * @author Nils Christian Ehmke + */ + private static final class TraceDurationVisitor { + + private final List<List<Long>> durationsPerEdge = new ArrayList<>(); + private int edgeIndex; + + public void visit(final Trace trace) { + this.edgeIndex = -1; + this.visit(trace.getRootOperationCall()); + } + + private void visit(final OperationCall rootOperationCall) { + this.edgeIndex++; + if (this.durationsPerEdge.size() <= this.edgeIndex) { + this.durationsPerEdge.add(new ArrayList<Long>()); + } + + final List<Long> durationsOfCurrentEdge = this.durationsPerEdge.get(this.edgeIndex); + + durationsOfCurrentEdge.add(rootOperationCall.getDuration()); + + for (final OperationCall child : rootOperationCall.getChildren()) { + this.visit(child); + } + } + + public void addDurationStatistics(final AggregatedTrace trace) { + this.edgeIndex = -1; + this.addDurationStatistics(trace.getRootOperationCall()); + } + + private void addDurationStatistics(final AggregatedOperationCall rootOperationCall) { + this.edgeIndex++; + + final List<Long> durationsOfCurrentEdge = this.durationsPerEdge.get(this.edgeIndex); + + final Statistics statistics = StatisticsUtility.calculateStatistics(durationsOfCurrentEdge); + rootOperationCall.setMinDuration(statistics.getMinDuration()); + rootOperationCall.setMaxDuration(statistics.getMaxDuration()); + rootOperationCall.setMeanDuration(statistics.getMeanDuration()); + rootOperationCall.setTotalDuration(statistics.getTotalDuration()); + rootOperationCall.setMedianDuration(statistics.getMedianDuration()); + + for (final AggregatedOperationCall child : rootOperationCall.getChildren()) { + this.addDurationStatistics(child); + } + } + + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/AllowedRecordsFilter.java b/src/main/java/kieker/analysis/stage/tracediagnosis/AllowedRecordsFilter.java index d5971a75e779f7dbb4b190598a2bb5776623c3d2..a93e663302c8e069d9165e71cc59539b990570e4 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/AllowedRecordsFilter.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/AllowedRecordsFilter.java @@ -1,49 +1,49 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import kieker.common.record.IMonitoringRecord; -import kieker.common.record.controlflow.OperationExecutionRecord; -import kieker.common.record.flow.trace.TraceMetadata; -import kieker.common.record.flow.trace.operation.AfterOperationEvent; -import kieker.common.record.flow.trace.operation.BeforeOperationEvent; -import kieker.common.record.misc.KiekerMetadataRecord; - -import teetime.stage.basic.AbstractTransformation; - -/** - * @author Nils Christian Ehmke - */ -public final class AllowedRecordsFilter extends AbstractTransformation<IMonitoringRecord, IMonitoringRecord> { - - private int ignoredRecords; - - @Override - protected void execute(final IMonitoringRecord element) { - if (element instanceof TraceMetadata || element instanceof BeforeOperationEvent || element instanceof AfterOperationEvent - || element instanceof KiekerMetadataRecord || element instanceof OperationExecutionRecord) { - super.getOutputPort().send(element); - } else { - ignoredRecords++; - } - } - - public int getIgnoredRecords() { - return ignoredRecords; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import kieker.common.record.IMonitoringRecord; +import kieker.common.record.controlflow.OperationExecutionRecord; +import kieker.common.record.flow.trace.TraceMetadata; +import kieker.common.record.flow.trace.operation.AfterOperationEvent; +import kieker.common.record.flow.trace.operation.BeforeOperationEvent; +import kieker.common.record.misc.KiekerMetadataRecord; + +import teetime.stage.basic.AbstractTransformation; + +/** + * @author Nils Christian Ehmke + */ +public final class AllowedRecordsFilter extends AbstractTransformation<IMonitoringRecord, IMonitoringRecord> { + + private int ignoredRecords; + + @Override + protected void execute(final IMonitoringRecord element) { + if (element instanceof TraceMetadata || element instanceof BeforeOperationEvent || element instanceof AfterOperationEvent + || element instanceof KiekerMetadataRecord || element instanceof OperationExecutionRecord) { + super.getOutputPort().send(element); + } else { + ignoredRecords++; + } + } + + public int getIgnoredRecords() { + return ignoredRecords; + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/BeginEndOfMonitoringDetector.java b/src/main/java/kieker/analysis/stage/tracediagnosis/BeginEndOfMonitoringDetector.java index 4c779ef312b5c1e78ddf4aa5aa7a05ff600a0e3a..c85c551490ee893e05f64767e7b5e88b03a906f6 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/BeginEndOfMonitoringDetector.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/BeginEndOfMonitoringDetector.java @@ -1,53 +1,53 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import kieker.common.record.IMonitoringRecord; - -import teetime.stage.basic.AbstractTransformation; - -/** - * @author Nils Christian Ehmke - */ -public final class BeginEndOfMonitoringDetector extends AbstractTransformation<IMonitoringRecord, IMonitoringRecord> { - - private long beginTimestamp = Long.MAX_VALUE; - private long endTimestamp = 0; - - @Override - protected void execute(final IMonitoringRecord record) { - final long loggingTimestamp = record.getLoggingTimestamp(); - - if (loggingTimestamp < this.beginTimestamp) { - this.beginTimestamp = loggingTimestamp; - } - if (loggingTimestamp > this.endTimestamp) { - this.endTimestamp = loggingTimestamp; - } - - super.getOutputPort().send(record); - } - - public long getBeginTimestamp() { - return this.beginTimestamp; - } - - public long getEndTimestamp() { - return this.endTimestamp; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import kieker.common.record.IMonitoringRecord; + +import teetime.stage.basic.AbstractTransformation; + +/** + * @author Nils Christian Ehmke + */ +public final class BeginEndOfMonitoringDetector extends AbstractTransformation<IMonitoringRecord, IMonitoringRecord> { + + private long beginTimestamp = Long.MAX_VALUE; + private long endTimestamp = 0; + + @Override + protected void execute(final IMonitoringRecord record) { + final long loggingTimestamp = record.getLoggingTimestamp(); + + if (loggingTimestamp < this.beginTimestamp) { + this.beginTimestamp = loggingTimestamp; + } + if (loggingTimestamp > this.endTimestamp) { + this.endTimestamp = loggingTimestamp; + } + + super.getOutputPort().send(record); + } + + public long getBeginTimestamp() { + return this.beginTimestamp; + } + + public long getEndTimestamp() { + return this.endTimestamp; + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/Filter.java b/src/main/java/kieker/analysis/stage/tracediagnosis/Filter.java index a3096e66b9729cfeb5d1a9cdc6e2b624482b1a38..aa30cc296e3a4222579f877a225fe91f96c426ce 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/Filter.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/Filter.java @@ -1,46 +1,46 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import java.util.function.Predicate; - -import teetime.stage.basic.AbstractTransformation; - -/** - * This stage filters incoming objects and forwards only those which meet the given predicate. - * - * @author Nils Christian Ehmke - * - * @param <T> - * The precise type of the incoming and outgoing object. - */ -public final class Filter<T> extends AbstractTransformation<T, T> { - - private final Predicate<T> predicate; - - public Filter(final Predicate<T> predicate) { - this.predicate = predicate; - } - - @Override - protected void execute(final T element) { - if (this.predicate.test(element)) { - super.getOutputPort().send(element); - } - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import java.util.function.Predicate; + +import teetime.stage.basic.AbstractTransformation; + +/** + * This stage filters incoming objects and forwards only those which meet the given predicate. + * + * @author Nils Christian Ehmke + * + * @param <T> + * The precise type of the incoming and outgoing object. + */ +public final class Filter<T> extends AbstractTransformation<T, T> { + + private final Predicate<T> predicate; + + public Filter(final Predicate<T> predicate) { + this.predicate = predicate; + } + + @Override + protected void execute(final T element) { + if (this.predicate.test(element)) { + super.getOutputPort().send(element); + } + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/LegacyTraceReconstructor.java b/src/main/java/kieker/analysis/stage/tracediagnosis/LegacyTraceReconstructor.java index 2d97e6dc0ef25c7cf5fa7cc1a8f21bd5305c622f..a1b94d001c6afa05eb2fd6735e653ddb5c188624 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/LegacyTraceReconstructor.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/LegacyTraceReconstructor.java @@ -1,147 +1,147 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import kieker.analysis.domain.OperationCall; -import kieker.analysis.domain.Trace; -import kieker.common.record.controlflow.OperationExecutionRecord; - -import teetime.stage.basic.AbstractTransformation; - -/** - * Reconstruct traces based on the incoming instances of {@code OperationExecutionRecord}. - * - * @author Nils Christian Ehmke - */ -final class LegacyTraceReconstructor extends AbstractTransformation<OperationExecutionRecord, Trace> { - - private final Map<Long, TraceBuffer> traceBuffers = new HashMap<>(); - - public int countIncompleteTraces() { - return this.traceBuffers.size(); - } - - public int countDanglingRecords() { - return 0; - } - - @Override - protected void execute(final OperationExecutionRecord input) { - this.handleOperationExecutionRecord(input); - } - - private void handleOperationExecutionRecord(final OperationExecutionRecord input) { - final long traceID = input.getTraceId(); - if (!this.traceBuffers.containsKey(traceID)) { - this.traceBuffers.put(traceID, new TraceBuffer(traceID)); - } - final TraceBuffer traceBuffer = this.traceBuffers.get(traceID); - - traceBuffer.handleEvent(input); - if (traceBuffer.isTraceComplete()) { - final Trace trace = traceBuffer.reconstructTrace(); - this.traceBuffers.remove(traceID); - super.getOutputPort().send(trace); - } - } - - /** - * @author Nils Christian Ehmke - */ - private static final class TraceBuffer { - - private final List<OperationExecutionRecord> records = new ArrayList<>(); - private final long traceID; - private boolean traceComplete = false; - - public TraceBuffer(final long traceID) { - this.traceID = traceID; - } - - public void handleEvent(final OperationExecutionRecord record) { - this.records.add(record); - - if ((record.getEoi() == 0) && (record.getEss() == 0)) { - this.traceComplete = true; - } - } - - public Trace reconstructTrace() { - Collections.sort(this.records, new EOIComparator()); - - OperationCall root = null; - OperationCall header = null; - int ess = 0; - for (final OperationExecutionRecord record : this.records) { - final OperationCall newCall = new OperationCall(record.getHostname(), this.extractComponent(record.getOperationSignature()), - record.getOperationSignature(), record.getEoi(), - this.traceID, record.getLoggingTimestamp()); - newCall.setDuration(record.getTout() - record.getTin()); - - // There can be "jumps" in the ess, as the operation execution records do not log the return jumps of methods. Therefore multiple of these jumps can - // be hidden. - int currentEss = record.getEss(); - while ((currentEss <= ess) && (ess != 0)) { - header = header.getParent(); - currentEss++; - } - - if (root == null) { - root = newCall; - } else { - header.addChild(newCall); - } - header = newCall; - ess = record.getEss(); - } - - return new Trace(root, this.traceID); - } - - private String extractComponent(final String operationSignature) { - return operationSignature.replaceFirst("\\.\\w*\\(.*", ""); - } - - public boolean isTraceComplete() { - return this.traceComplete; - } - - /** - * @author Nils Christian Ehmke - */ - private static final class EOIComparator implements Comparator<OperationExecutionRecord>, Serializable { - - private static final long serialVersionUID = 1L; - - @Override - public int compare(final OperationExecutionRecord o1, final OperationExecutionRecord o2) { - return Long.compare(o1.getEoi(), o2.getEoi()); - } - - } - - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import kieker.analysis.domain.OperationCall; +import kieker.analysis.domain.Trace; +import kieker.common.record.controlflow.OperationExecutionRecord; + +import teetime.stage.basic.AbstractTransformation; + +/** + * Reconstruct traces based on the incoming instances of {@code OperationExecutionRecord}. + * + * @author Nils Christian Ehmke + */ +final class LegacyTraceReconstructor extends AbstractTransformation<OperationExecutionRecord, Trace> { + + private final Map<Long, TraceBuffer> traceBuffers = new HashMap<>(); + + public int countIncompleteTraces() { + return this.traceBuffers.size(); + } + + public int countDanglingRecords() { + return 0; + } + + @Override + protected void execute(final OperationExecutionRecord input) { + this.handleOperationExecutionRecord(input); + } + + private void handleOperationExecutionRecord(final OperationExecutionRecord input) { + final long traceID = input.getTraceId(); + if (!this.traceBuffers.containsKey(traceID)) { + this.traceBuffers.put(traceID, new TraceBuffer(traceID)); + } + final TraceBuffer traceBuffer = this.traceBuffers.get(traceID); + + traceBuffer.handleEvent(input); + if (traceBuffer.isTraceComplete()) { + final Trace trace = traceBuffer.reconstructTrace(); + this.traceBuffers.remove(traceID); + super.getOutputPort().send(trace); + } + } + + /** + * @author Nils Christian Ehmke + */ + private static final class TraceBuffer { + + private final List<OperationExecutionRecord> records = new ArrayList<>(); + private final long traceID; + private boolean traceComplete = false; + + public TraceBuffer(final long traceID) { + this.traceID = traceID; + } + + public void handleEvent(final OperationExecutionRecord record) { + this.records.add(record); + + if ((record.getEoi() == 0) && (record.getEss() == 0)) { + this.traceComplete = true; + } + } + + public Trace reconstructTrace() { + Collections.sort(this.records, new EOIComparator()); + + OperationCall root = null; + OperationCall header = null; + int ess = 0; + for (final OperationExecutionRecord record : this.records) { + final OperationCall newCall = new OperationCall(record.getHostname(), this.extractComponent(record.getOperationSignature()), + record.getOperationSignature(), record.getEoi(), + this.traceID, record.getLoggingTimestamp()); + newCall.setDuration(record.getTout() - record.getTin()); + + // There can be "jumps" in the ess, as the operation execution records do not log the return jumps of methods. Therefore multiple of these jumps can + // be hidden. + int currentEss = record.getEss(); + while ((currentEss <= ess) && (ess != 0)) { + header = header.getParent(); + currentEss++; + } + + if (root == null) { + root = newCall; + } else { + header.addChild(newCall); + } + header = newCall; + ess = record.getEss(); + } + + return new Trace(root, this.traceID); + } + + private String extractComponent(final String operationSignature) { + return operationSignature.replaceFirst("\\.\\w*\\(.*", ""); + } + + public boolean isTraceComplete() { + return this.traceComplete; + } + + /** + * @author Nils Christian Ehmke + */ + private static final class EOIComparator implements Comparator<OperationExecutionRecord>, Serializable { + + private static final long serialVersionUID = 1L; + + @Override + public int compare(final OperationExecutionRecord o1, final OperationExecutionRecord o2) { + return Long.compare(o1.getEoi(), o2.getEoi()); + } + + } + + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallAggregator.java b/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallAggregator.java index 442dfc53ed4e93e6e6cccecb9165efb94b612f7f..ae9648a02215e449f5dfe3d25e0cb021f428b68c 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallAggregator.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallAggregator.java @@ -1,74 +1,74 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import kieker.analysis.domain.AggregatedOperationCall; -import kieker.analysis.domain.OperationCall; -import kieker.analysis.traceanalysisutil.Statistics; -import kieker.analysis.traceanalysisutil.StatisticsUtility; - -import teetime.stage.basic.AbstractTransformation; - -/** - * @author Nils Christian Ehmke - */ -public final class OperationCallAggregator extends AbstractTransformation<OperationCall, AggregatedOperationCall> { - - private final Map<String, List<OperationCall>> aggregationMap = new HashMap<>(); - - @Override - protected void execute(final OperationCall call) { - final String key = call.getIdentifierWithFailure(); - - if (!this.aggregationMap.containsKey(key)) { - final List<OperationCall> aggregationList = new ArrayList<>(); - this.aggregationMap.put(key, aggregationList); - } - this.aggregationMap.get(key).add(call); - } - - @Override - public void onTerminating() throws Exception { - for (final List<OperationCall> aggregationList : this.aggregationMap.values()) { - final List<Long> durations = this.extractDurations(aggregationList); - final Statistics statistics = StatisticsUtility.calculateStatistics(durations); - super.getOutputPort().send( - new AggregatedOperationCall(aggregationList.get(0).getContainer(), aggregationList.get(0).getComponent(), aggregationList.get(0).getOperation(), - aggregationList.get(0).getOrderIndex(), aggregationList.get(0).getFailedCause(), statistics.getTotalDuration(), - statistics.getMedianDuration(), statistics.getMinDuration(), statistics.getMaxDuration(), statistics.getMeanDuration(), - aggregationList.size())); - } - - super.onTerminating(); - } - - private List<Long> extractDurations(final List<OperationCall> callList) { - final List<Long> result = new ArrayList<>(); - - for (final OperationCall call : callList) { - result.add(call.getDuration()); - } - - return result; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.domain.OperationCall; +import kieker.analysis.traceanalysisutil.Statistics; +import kieker.analysis.traceanalysisutil.StatisticsUtility; + +import teetime.stage.basic.AbstractTransformation; + +/** + * @author Nils Christian Ehmke + */ +public final class OperationCallAggregator extends AbstractTransformation<OperationCall, AggregatedOperationCall> { + + private final Map<String, List<OperationCall>> aggregationMap = new HashMap<>(); + + @Override + protected void execute(final OperationCall call) { + final String key = call.getIdentifierWithFailure(); + + if (!this.aggregationMap.containsKey(key)) { + final List<OperationCall> aggregationList = new ArrayList<>(); + this.aggregationMap.put(key, aggregationList); + } + this.aggregationMap.get(key).add(call); + } + + @Override + public void onTerminating() throws Exception { + for (final List<OperationCall> aggregationList : this.aggregationMap.values()) { + final List<Long> durations = this.extractDurations(aggregationList); + final Statistics statistics = StatisticsUtility.calculateStatistics(durations); + super.getOutputPort().send( + new AggregatedOperationCall(aggregationList.get(0).getContainer(), aggregationList.get(0).getComponent(), aggregationList.get(0).getOperation(), + aggregationList.get(0).getOrderIndex(), aggregationList.get(0).getFailedCause(), statistics.getTotalDuration(), + statistics.getMedianDuration(), statistics.getMinDuration(), statistics.getMaxDuration(), statistics.getMeanDuration(), + aggregationList.size())); + } + + super.onTerminating(); + } + + private List<Long> extractDurations(final List<OperationCall> callList) { + final List<Long> result = new ArrayList<>(); + + for (final OperationCall call : callList) { + result.add(call.getDuration()); + } + + return result; + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallExtractor.java b/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallExtractor.java index 159ead0109c788cb3f656eaad210371d539c76bc..56ce59387fcd8ddd9d64b068e7d5989a6503180b 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallExtractor.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallExtractor.java @@ -1,40 +1,40 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import kieker.analysis.domain.OperationCall; -import kieker.analysis.domain.Trace; - -import teetime.stage.basic.AbstractTransformation; - -/** - * @author Nils Christian Ehmke - */ -public final class OperationCallExtractor extends AbstractTransformation<Trace, OperationCall> { - - @Override - protected void execute(final Trace element) { - this.sendAllCalls(element.getRootOperationCall()); - } - - private void sendAllCalls(final OperationCall call) { - super.getOutputPort().send(call); - - call.getChildren().forEach(child -> this.sendAllCalls(child)); - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import kieker.analysis.domain.OperationCall; +import kieker.analysis.domain.Trace; + +import teetime.stage.basic.AbstractTransformation; + +/** + * @author Nils Christian Ehmke + */ +public final class OperationCallExtractor extends AbstractTransformation<Trace, OperationCall> { + + @Override + protected void execute(final Trace element) { + this.sendAllCalls(element.getRootOperationCall()); + } + + private void sendAllCalls(final OperationCall call) { + super.getOutputPort().send(call); + + call.getChildren().forEach(child -> this.sendAllCalls(child)); + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallHandlerComposite.java b/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallHandlerComposite.java index 1df76fdafdab1f31d29ab7f75e85dee1485f32de..be652497be71da2bc971fdf5a8540f8019ba04ce 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallHandlerComposite.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallHandlerComposite.java @@ -1,60 +1,60 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import java.util.List; - -import kieker.analysis.domain.AggregatedOperationCall; -import kieker.analysis.domain.OperationCall; -import kieker.analysis.domain.Trace; - -import teetime.framework.AbstractCompositeStage; -import teetime.framework.InputPort; -import teetime.stage.CollectorSink; -import teetime.stage.basic.distributor.Distributor; -import teetime.stage.basic.distributor.strategy.CopyByReferenceStrategy; - -/** - * @author Nils Christian Ehmke - */ -public final class OperationCallHandlerComposite extends AbstractCompositeStage { - - private final InputPort<Trace> inputPort; - private final OperationCallExtractor operationCallExtractor; - private final CollectorSink<OperationCall> callCollector; - private final CollectorSink<AggregatedOperationCall> aggCallCollector; - - public OperationCallHandlerComposite(final List<OperationCall> operationCalls, final List<AggregatedOperationCall> aggOperationCalls) { - this.operationCallExtractor = new OperationCallExtractor(); - this.callCollector = new CollectorSink<>(operationCalls); - final Distributor<OperationCall> distributor = new Distributor<>(new CopyByReferenceStrategy()); - final OperationCallAggregator callAggregator = new OperationCallAggregator(); - this.aggCallCollector = new CollectorSink<>(aggOperationCalls); - - this.inputPort = this.operationCallExtractor.getInputPort(); - - super.connectPorts(this.operationCallExtractor.getOutputPort(), distributor.getInputPort()); - super.connectPorts(distributor.getNewOutputPort(), this.callCollector.getInputPort()); - super.connectPorts(distributor.getNewOutputPort(), callAggregator.getInputPort()); - super.connectPorts(callAggregator.getOutputPort(), this.aggCallCollector.getInputPort()); - } - - public InputPort<Trace> getInputPort() { - return this.inputPort; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import java.util.List; + +import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.domain.OperationCall; +import kieker.analysis.domain.Trace; + +import teetime.framework.AbstractCompositeStage; +import teetime.framework.InputPort; +import teetime.stage.CollectorSink; +import teetime.stage.basic.distributor.Distributor; +import teetime.stage.basic.distributor.strategy.CopyByReferenceStrategy; + +/** + * @author Nils Christian Ehmke + */ +public final class OperationCallHandlerComposite extends AbstractCompositeStage { + + private final InputPort<Trace> inputPort; + private final OperationCallExtractor operationCallExtractor; + private final CollectorSink<OperationCall> callCollector; + private final CollectorSink<AggregatedOperationCall> aggCallCollector; + + public OperationCallHandlerComposite(final List<OperationCall> operationCalls, final List<AggregatedOperationCall> aggOperationCalls) { + this.operationCallExtractor = new OperationCallExtractor(); + this.callCollector = new CollectorSink<>(operationCalls); + final Distributor<OperationCall> distributor = new Distributor<>(new CopyByReferenceStrategy()); + final OperationCallAggregator callAggregator = new OperationCallAggregator(); + this.aggCallCollector = new CollectorSink<>(aggOperationCalls); + + this.inputPort = this.operationCallExtractor.getInputPort(); + + super.connectPorts(this.operationCallExtractor.getOutputPort(), distributor.getInputPort()); + super.connectPorts(distributor.getNewOutputPort(), this.callCollector.getInputPort()); + super.connectPorts(distributor.getNewOutputPort(), callAggregator.getInputPort()); + super.connectPorts(callAggregator.getOutputPort(), this.aggCallCollector.getInputPort()); + } + + public InputPort<Trace> getInputPort() { + return this.inputPort; + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/ReadingComposite.java b/src/main/java/kieker/analysis/stage/tracediagnosis/ReadingComposite.java index 6b48ecce835089b0659d3fa182bdbf6a897627cc..6fb9d568725559de223103f3d7508eafd6c484dd 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/ReadingComposite.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/ReadingComposite.java @@ -1,50 +1,50 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import java.io.File; - -import kieker.common.record.IMonitoringRecord; - -import teetime.framework.AbstractCompositeStage; -import teetime.framework.OutputPort; -import teetime.stage.InitialElementProducer; -import teetime.stage.className.ClassNameRegistryRepository; -import teetime.stage.io.filesystem.Dir2RecordsFilter; - -/** - * This is a composite stage which deserializes monitoring records from a specific directory and forwards them to the output port. - * - * @author Nils Christian Ehmke - */ -public final class ReadingComposite extends AbstractCompositeStage { - - private final InitialElementProducer<File> producer; - private final Dir2RecordsFilter reader; - - public ReadingComposite(final File importDirectory) { - this.producer = new InitialElementProducer<>(importDirectory); - this.reader = new Dir2RecordsFilter(new ClassNameRegistryRepository()); - - super.connectPorts(this.producer.getOutputPort(), this.reader.getInputPort()); - } - - public OutputPort<IMonitoringRecord> getOutputPort() { - return this.reader.getOutputPort(); - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import java.io.File; + +import kieker.common.record.IMonitoringRecord; + +import teetime.framework.AbstractCompositeStage; +import teetime.framework.OutputPort; +import teetime.stage.InitialElementProducer; +import teetime.stage.className.ClassNameRegistryRepository; +import teetime.stage.io.filesystem.Dir2RecordsFilter; + +/** + * This is a composite stage which deserializes monitoring records from a specific directory and forwards them to the output port. + * + * @author Nils Christian Ehmke + */ +public final class ReadingComposite extends AbstractCompositeStage { + + private final InitialElementProducer<File> producer; + private final Dir2RecordsFilter reader; + + public ReadingComposite(final File importDirectory) { + this.producer = new InitialElementProducer<>(importDirectory); + this.reader = new Dir2RecordsFilter(new ClassNameRegistryRepository()); + + super.connectPorts(this.producer.getOutputPort(), this.reader.getInputPort()); + } + + public OutputPort<IMonitoringRecord> getOutputPort() { + return this.reader.getOutputPort(); + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceAggregationComposite.java b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceAggregationComposite.java index 8f38d859b48d36b890bd8e87767974e3fc0a8c47..bfc116de4c0b8fb8b376a7dc630cf70e5fca5646 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceAggregationComposite.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceAggregationComposite.java @@ -1,57 +1,57 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import kieker.analysis.dev.AggregatedTraceCallsDecorator; -import kieker.analysis.domain.AggregatedTrace; -import kieker.analysis.domain.Trace; - -import teetime.framework.AbstractCompositeStage; -import teetime.framework.InputPort; -import teetime.framework.OutputPort; - -/** - * This is a composite {@code TeeTime} stage which aggregates incoming traces, adds statistical data and send them to the output port. - * - * @author Nils Christian Ehmke, Sören henning - */ -public final class TraceAggregationComposite extends AbstractCompositeStage { - - private final TraceAggregator aggregator; - private final AggregatedTraceStatisticsDecorator statisticsDecorator; - private final AggregatedTraceCallsDecorator callsDecorator; - - public TraceAggregationComposite() { - this.aggregator = new TraceAggregator(); - this.callsDecorator = new AggregatedTraceCallsDecorator(); - this.statisticsDecorator = new AggregatedTraceStatisticsDecorator(); - - // TODO if everything is fine remove old connection - // super.connectPorts(this.aggregator.getOutputPort(), this.statisticsDecorator.getInputPort()); - super.connectPorts(this.aggregator.getOutputPort(), this.callsDecorator.getInputPort()); - super.connectPorts(this.callsDecorator.getOutputPort(), this.statisticsDecorator.getInputPort()); - } - - public InputPort<Trace> getInputPort() { - return this.aggregator.getInputPort(); - } - - public OutputPort<AggregatedTrace> getOutputPort() { - return this.statisticsDecorator.getOutputPort(); - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import kieker.analysis.dev.AggregatedTraceCallsDecorator; +import kieker.analysis.domain.AggregatedTrace; +import kieker.analysis.domain.Trace; + +import teetime.framework.AbstractCompositeStage; +import teetime.framework.InputPort; +import teetime.framework.OutputPort; + +/** + * This is a composite {@code TeeTime} stage which aggregates incoming traces, adds statistical data and send them to the output port. + * + * @author Nils Christian Ehmke, Sören henning + */ +public final class TraceAggregationComposite extends AbstractCompositeStage { + + private final TraceAggregator aggregator; + private final AggregatedTraceStatisticsDecorator statisticsDecorator; + private final AggregatedTraceCallsDecorator callsDecorator; + + public TraceAggregationComposite() { + this.aggregator = new TraceAggregator(); + this.callsDecorator = new AggregatedTraceCallsDecorator(); + this.statisticsDecorator = new AggregatedTraceStatisticsDecorator(); + + // TODO if everything is fine remove old connection + // super.connectPorts(this.aggregator.getOutputPort(), this.statisticsDecorator.getInputPort()); + super.connectPorts(this.aggregator.getOutputPort(), this.callsDecorator.getInputPort()); + super.connectPorts(this.callsDecorator.getOutputPort(), this.statisticsDecorator.getInputPort()); + } + + public InputPort<Trace> getInputPort() { + return this.aggregator.getInputPort(); + } + + public OutputPort<AggregatedTrace> getOutputPort() { + return this.statisticsDecorator.getOutputPort(); + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceAggregator.java b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceAggregator.java index 9ac3ab7962855d02458b56eca26fde743b8fcdcc..1e4fda9854087605fcca9d4eac29c0f6312d600e 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceAggregator.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceAggregator.java @@ -1,78 +1,78 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import kieker.analysis.domain.AggregatedTrace; -import kieker.analysis.domain.Trace; - -import teetime.stage.basic.AbstractTransformation; - -/** - * This stage aggregates incoming traces into trace equivalence classes. - * - * @author Nils Christian Ehmke - */ -public final class TraceAggregator extends AbstractTransformation<Trace, AggregatedTrace> { - - private final Map<TraceWrapper, List<Trace>> aggregationMap = new HashMap<>(); - - @Override - protected void execute(final Trace trace) { - final TraceWrapper wrapper = new TraceWrapper(trace); - if (!this.aggregationMap.containsKey(wrapper)) { - final List<Trace> aggregationList = new ArrayList<>(); - this.aggregationMap.put(wrapper, aggregationList); - } - this.aggregationMap.get(wrapper).add(trace); - } - - @Override - public void onTerminating() throws Exception { // NOPMD (the throws clause is forced by the framework) - this.aggregationMap.values().forEach(list -> super.getOutputPort().send(new AggregatedTrace(list))); - - super.onTerminating(); - } - - private static class TraceWrapper { - - private final Trace trace; - - public TraceWrapper(final Trace trace) { - this.trace = trace; - } - - @Override - public int hashCode() { - return this.trace.calculateHashCode(); - } - - @Override - public boolean equals(final Object obj) { - if (!(obj instanceof TraceWrapper)) { - return false; - } - return this.trace.isEqualTo(((TraceWrapper) obj).trace); - } - - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import kieker.analysis.domain.AggregatedTrace; +import kieker.analysis.domain.Trace; + +import teetime.stage.basic.AbstractTransformation; + +/** + * This stage aggregates incoming traces into trace equivalence classes. + * + * @author Nils Christian Ehmke + */ +public final class TraceAggregator extends AbstractTransformation<Trace, AggregatedTrace> { + + private final Map<TraceWrapper, List<Trace>> aggregationMap = new HashMap<>(); + + @Override + protected void execute(final Trace trace) { + final TraceWrapper wrapper = new TraceWrapper(trace); + if (!this.aggregationMap.containsKey(wrapper)) { + final List<Trace> aggregationList = new ArrayList<>(); + this.aggregationMap.put(wrapper, aggregationList); + } + this.aggregationMap.get(wrapper).add(trace); + } + + @Override + public void onTerminating() throws Exception { // NOPMD (the throws clause is forced by the framework) + this.aggregationMap.values().forEach(list -> super.getOutputPort().send(new AggregatedTrace(list))); + + super.onTerminating(); + } + + private static class TraceWrapper { + + private final Trace trace; + + public TraceWrapper(final Trace trace) { + this.trace = trace; + } + + @Override + public int hashCode() { + return this.trace.calculateHashCode(); + } + + @Override + public boolean equals(final Object obj) { + if (!(obj instanceof TraceWrapper)) { + return false; + } + return this.trace.isEqualTo(((TraceWrapper) obj).trace); + } + + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructionComposite.java b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructionComposite.java index c731e116798805c1a5bbcc30d1d41d0fe66474fb..5067f65c843cd7d3b79ca192d07268313176bab7 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructionComposite.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructionComposite.java @@ -1,77 +1,77 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import kieker.analysis.domain.Trace; -import kieker.common.record.IMonitoringRecord; -import kieker.common.record.controlflow.OperationExecutionRecord; -import kieker.common.record.flow.IFlowRecord; - -import teetime.framework.AbstractCompositeStage; -import teetime.framework.InputPort; -import teetime.framework.OutputPort; -import teetime.stage.MultipleInstanceOfFilter; -import teetime.stage.basic.merger.Merger; - -/** - * This class is a composite {@code TeeTime} stage, which reconstruct traces based on the incoming records, adds statistical data and send them to the output port. - * - * @author Nils Christian Ehmke, Sören Henning - */ -public final class TraceReconstructionComposite extends AbstractCompositeStage { - - private final MultipleInstanceOfFilter<IMonitoringRecord> typeFilter; - private final TraceStatisticsDecorator statisticsDecorator; - private final OutputPort<Trace> outputPort; - private final LegacyTraceReconstructor legacyReconstructor; - private final TraceReconstructor reconstructor; - - public TraceReconstructionComposite(final boolean activateAdditionalLogChecks) { - final Merger<Trace> merger = new Merger<>(); - - this.typeFilter = new MultipleInstanceOfFilter<>(); - this.statisticsDecorator = new TraceStatisticsDecorator(); - this.reconstructor = new TraceReconstructor(activateAdditionalLogChecks); - this.legacyReconstructor = new LegacyTraceReconstructor(); - - this.outputPort = this.statisticsDecorator.getOutputPort(); - - super.connectPorts(this.typeFilter.getOutputPortForType(IFlowRecord.class), this.reconstructor.getInputPort()); - super.connectPorts(this.typeFilter.getOutputPortForType(OperationExecutionRecord.class), this.legacyReconstructor.getInputPort()); - super.connectPorts(this.reconstructor.getOutputPort(), merger.getNewInputPort()); - super.connectPorts(this.legacyReconstructor.getOutputPort(), merger.getNewInputPort()); - super.connectPorts(merger.getOutputPort(), this.statisticsDecorator.getInputPort()); - - } - - public int countIncompleteTraces() { - return this.reconstructor.countIncompleteTraces() + this.legacyReconstructor.countIncompleteTraces(); - } - - public int countDanglingRecords() { - return this.reconstructor.countDanglingRecords() + this.legacyReconstructor.countDanglingRecords(); - } - - public InputPort<IMonitoringRecord> getInputPort() { - return this.typeFilter.getInputPort(); - } - - public OutputPort<Trace> getOutputPort() { - return this.outputPort; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import kieker.analysis.domain.Trace; +import kieker.common.record.IMonitoringRecord; +import kieker.common.record.controlflow.OperationExecutionRecord; +import kieker.common.record.flow.IFlowRecord; + +import teetime.framework.AbstractCompositeStage; +import teetime.framework.InputPort; +import teetime.framework.OutputPort; +import teetime.stage.MultipleInstanceOfFilter; +import teetime.stage.basic.merger.Merger; + +/** + * This class is a composite {@code TeeTime} stage, which reconstruct traces based on the incoming records, adds statistical data and send them to the output port. + * + * @author Nils Christian Ehmke, Sören Henning + */ +public final class TraceReconstructionComposite extends AbstractCompositeStage { + + private final MultipleInstanceOfFilter<IMonitoringRecord> typeFilter; + private final TraceStatisticsDecorator statisticsDecorator; + private final OutputPort<Trace> outputPort; + private final LegacyTraceReconstructor legacyReconstructor; + private final TraceReconstructor reconstructor; + + public TraceReconstructionComposite(final boolean activateAdditionalLogChecks) { + final Merger<Trace> merger = new Merger<>(); + + this.typeFilter = new MultipleInstanceOfFilter<>(); + this.statisticsDecorator = new TraceStatisticsDecorator(); + this.reconstructor = new TraceReconstructor(activateAdditionalLogChecks); + this.legacyReconstructor = new LegacyTraceReconstructor(); + + this.outputPort = this.statisticsDecorator.getOutputPort(); + + super.connectPorts(this.typeFilter.getOutputPortForType(IFlowRecord.class), this.reconstructor.getInputPort()); + super.connectPorts(this.typeFilter.getOutputPortForType(OperationExecutionRecord.class), this.legacyReconstructor.getInputPort()); + super.connectPorts(this.reconstructor.getOutputPort(), merger.getNewInputPort()); + super.connectPorts(this.legacyReconstructor.getOutputPort(), merger.getNewInputPort()); + super.connectPorts(merger.getOutputPort(), this.statisticsDecorator.getInputPort()); + + } + + public int countIncompleteTraces() { + return this.reconstructor.countIncompleteTraces() + this.legacyReconstructor.countIncompleteTraces(); + } + + public int countDanglingRecords() { + return this.reconstructor.countDanglingRecords() + this.legacyReconstructor.countDanglingRecords(); + } + + public InputPort<IMonitoringRecord> getInputPort() { + return this.typeFilter.getInputPort(); + } + + public OutputPort<Trace> getOutputPort() { + return this.outputPort; + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructor.java b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructor.java index 9bd6f2ae4cd8a7b2490d23ed46d9c939e18d73ce..631b17698ba74d19333a1103a0c63383f3795f4b 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructor.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructor.java @@ -1,161 +1,161 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import java.util.ArrayList; -import java.util.Deque; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -import kieker.analysis.domain.OperationCall; -import kieker.analysis.domain.Trace; -import kieker.common.record.flow.IFlowRecord; -import kieker.common.record.flow.trace.TraceMetadata; -import kieker.common.record.flow.trace.operation.AbstractOperationEvent; -import kieker.common.record.flow.trace.operation.AfterOperationEvent; -import kieker.common.record.flow.trace.operation.AfterOperationFailedEvent; -import kieker.common.record.flow.trace.operation.BeforeOperationEvent; - -import teetime.stage.basic.AbstractTransformation; - -/** - * Reconstruct traces based on the incoming instances of {@code IFlowRecord}. Currently only {@link TraceMetadata}, {@link BeforeOperationEvent} and - * {@link AfterOperationEvent} - * instances are supported. - * - * @author Nils Christian Ehmke - */ -final class TraceReconstructor extends AbstractTransformation<IFlowRecord, Trace> { - - private final Map<Long, TraceBuffer> traceBuffers = new HashMap<>(); - private final List<TraceBuffer> faultyTraceBuffers = new ArrayList<>(); - private final boolean activateAdditionalLogChecks; - private int danglingRecords; - - public TraceReconstructor(final boolean activateAdditionalLogChecks) { - this.activateAdditionalLogChecks = activateAdditionalLogChecks; - } - - public int countIncompleteTraces() { - return this.traceBuffers.size() + this.faultyTraceBuffers.size(); - } - - public int countDanglingRecords() { - return this.danglingRecords - this.faultyTraceBuffers.size(); - } - - @Override - protected void execute(final IFlowRecord input) { - if (input instanceof TraceMetadata) { - this.handleMetadataRecord((TraceMetadata) input); - } else if (input instanceof AbstractOperationEvent) { - this.handleOperationEventRecord((AbstractOperationEvent) input); - } - } - - private void handleMetadataRecord(final TraceMetadata record) { - final long traceID = record.getTraceId(); - final TraceBuffer newTraceBuffer = new TraceBuffer(record); - - this.traceBuffers.put(traceID, newTraceBuffer); - } - - private void handleOperationEventRecord(final AbstractOperationEvent input) { - final long traceID = input.getTraceId(); - final TraceBuffer traceBuffer = this.traceBuffers.get(traceID); - - if (traceBuffer != null) { - traceBuffer.handleEvent(input); - if (traceBuffer.isTraceComplete()) { - final Trace trace = traceBuffer.reconstructTrace(); - this.traceBuffers.remove(traceID); - super.getOutputPort().send(trace); - } - } else { - this.danglingRecords++; - } - } - - /** - * @author Nils Christian Ehmke - */ - private final class TraceBuffer { - - private final String hostname; - private final Deque<BeforeOperationEvent> stack = new LinkedList<>(); - private OperationCall root; - private OperationCall header; - private final long traceID; - - public TraceBuffer(final TraceMetadata traceMetadata) { - this.hostname = traceMetadata.getHostname(); - this.traceID = traceMetadata.getTraceId(); - } - - public void handleEvent(final AbstractOperationEvent record) { - if (record instanceof BeforeOperationEvent) { - this.handleBeforeOperationEventRecord((BeforeOperationEvent) record); - } else if (record instanceof AfterOperationEvent) { - this.handleAfterOperationEventRecord((AfterOperationEvent) record); - } - } - - private void handleBeforeOperationEventRecord(final BeforeOperationEvent record) { - this.stack.push(record); - - final OperationCall newCall = new OperationCall(this.hostname, record.getClassSignature(), record.getOperationSignature(), record.getOrderIndex(), - this.traceID, record.getLoggingTimestamp()); - if (this.root == null) { - this.root = newCall; - } else { - this.header.addChild(newCall); - } - this.header = newCall; - } - - private void handleAfterOperationEventRecord(final AfterOperationEvent record) { - final BeforeOperationEvent beforeEvent = this.stack.pop(); - - this.header.setDuration(record.getTimestamp() - beforeEvent.getTimestamp()); - - if (record instanceof AfterOperationFailedEvent) { - this.header.setFailedCause(((AfterOperationFailedEvent) record).getCause()); - } - - this.header = this.header.getParent(); - - if (TraceReconstructor.this.activateAdditionalLogChecks) { - if (!beforeEvent.getOperationSignature().equals(record.getOperationSignature())) { - TraceReconstructor.this.faultyTraceBuffers.add(this); - TraceReconstructor.this.traceBuffers.remove(this.traceID); - } - } - } - - public Trace reconstructTrace() { - return new Trace(this.root, this.traceID); - } - - public boolean isTraceComplete() { - return this.stack.isEmpty(); - } - - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import java.util.ArrayList; +import java.util.Deque; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import kieker.analysis.domain.OperationCall; +import kieker.analysis.domain.Trace; +import kieker.common.record.flow.IFlowRecord; +import kieker.common.record.flow.trace.TraceMetadata; +import kieker.common.record.flow.trace.operation.AbstractOperationEvent; +import kieker.common.record.flow.trace.operation.AfterOperationEvent; +import kieker.common.record.flow.trace.operation.AfterOperationFailedEvent; +import kieker.common.record.flow.trace.operation.BeforeOperationEvent; + +import teetime.stage.basic.AbstractTransformation; + +/** + * Reconstruct traces based on the incoming instances of {@code IFlowRecord}. Currently only {@link TraceMetadata}, {@link BeforeOperationEvent} and + * {@link AfterOperationEvent} + * instances are supported. + * + * @author Nils Christian Ehmke + */ +final class TraceReconstructor extends AbstractTransformation<IFlowRecord, Trace> { + + private final Map<Long, TraceBuffer> traceBuffers = new HashMap<>(); + private final List<TraceBuffer> faultyTraceBuffers = new ArrayList<>(); + private final boolean activateAdditionalLogChecks; + private int danglingRecords; + + public TraceReconstructor(final boolean activateAdditionalLogChecks) { + this.activateAdditionalLogChecks = activateAdditionalLogChecks; + } + + public int countIncompleteTraces() { + return this.traceBuffers.size() + this.faultyTraceBuffers.size(); + } + + public int countDanglingRecords() { + return this.danglingRecords - this.faultyTraceBuffers.size(); + } + + @Override + protected void execute(final IFlowRecord input) { + if (input instanceof TraceMetadata) { + this.handleMetadataRecord((TraceMetadata) input); + } else if (input instanceof AbstractOperationEvent) { + this.handleOperationEventRecord((AbstractOperationEvent) input); + } + } + + private void handleMetadataRecord(final TraceMetadata record) { + final long traceID = record.getTraceId(); + final TraceBuffer newTraceBuffer = new TraceBuffer(record); + + this.traceBuffers.put(traceID, newTraceBuffer); + } + + private void handleOperationEventRecord(final AbstractOperationEvent input) { + final long traceID = input.getTraceId(); + final TraceBuffer traceBuffer = this.traceBuffers.get(traceID); + + if (traceBuffer != null) { + traceBuffer.handleEvent(input); + if (traceBuffer.isTraceComplete()) { + final Trace trace = traceBuffer.reconstructTrace(); + this.traceBuffers.remove(traceID); + super.getOutputPort().send(trace); + } + } else { + this.danglingRecords++; + } + } + + /** + * @author Nils Christian Ehmke + */ + private final class TraceBuffer { + + private final String hostname; + private final Deque<BeforeOperationEvent> stack = new LinkedList<>(); + private OperationCall root; + private OperationCall header; + private final long traceID; + + public TraceBuffer(final TraceMetadata traceMetadata) { + this.hostname = traceMetadata.getHostname(); + this.traceID = traceMetadata.getTraceId(); + } + + public void handleEvent(final AbstractOperationEvent record) { + if (record instanceof BeforeOperationEvent) { + this.handleBeforeOperationEventRecord((BeforeOperationEvent) record); + } else if (record instanceof AfterOperationEvent) { + this.handleAfterOperationEventRecord((AfterOperationEvent) record); + } + } + + private void handleBeforeOperationEventRecord(final BeforeOperationEvent record) { + this.stack.push(record); + + final OperationCall newCall = new OperationCall(this.hostname, record.getClassSignature(), record.getOperationSignature(), record.getOrderIndex(), + this.traceID, record.getLoggingTimestamp()); + if (this.root == null) { + this.root = newCall; + } else { + this.header.addChild(newCall); + } + this.header = newCall; + } + + private void handleAfterOperationEventRecord(final AfterOperationEvent record) { + final BeforeOperationEvent beforeEvent = this.stack.pop(); + + this.header.setDuration(record.getTimestamp() - beforeEvent.getTimestamp()); + + if (record instanceof AfterOperationFailedEvent) { + this.header.setFailedCause(((AfterOperationFailedEvent) record).getCause()); + } + + this.header = this.header.getParent(); + + if (TraceReconstructor.this.activateAdditionalLogChecks) { + if (!beforeEvent.getOperationSignature().equals(record.getOperationSignature())) { + TraceReconstructor.this.faultyTraceBuffers.add(this); + TraceReconstructor.this.traceBuffers.remove(this.traceID); + } + } + } + + public Trace reconstructTrace() { + return new Trace(this.root, this.traceID); + } + + public boolean isTraceComplete() { + return this.stack.isEmpty(); + } + + } + +} diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceStatisticsDecorator.java b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceStatisticsDecorator.java index 547b5af3536589dd29652b073da657206ea21743..21bbd28e2ed251c13663d95e4641f02e0b040c64 100644 --- a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceStatisticsDecorator.java +++ b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceStatisticsDecorator.java @@ -1,84 +1,84 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.stage.tracediagnosis; - -import kieker.analysis.domain.OperationCall; -import kieker.analysis.domain.Trace; - -import teetime.stage.basic.AbstractTransformation; - -/** - * This class is a {@code TeeTime} stage adding statistics (via the corresponding setters) to instances of {@link Trace}. The traces are forwarded to the output - * port. - * - * @author Nils Christian Ehmke - */ -public final class TraceStatisticsDecorator extends AbstractTransformation<Trace, Trace> { - - @Override - public void execute(final Trace trace) { - addTraceDepth(trace.getRootOperationCall()); - addTraceSize(trace.getRootOperationCall()); - addPercentValues(trace.getRootOperationCall(), trace.getRootOperationCall().getDuration()); - - super.getOutputPort().send(trace); - } - - private static int addTraceDepth(final OperationCall call) { - final int traceDepth; - - if (call.getChildren().isEmpty()) { - traceDepth = 0; - } else { - int maxTraceDepthOfChildren = 0; - - for (final OperationCall child : call.getChildren()) { - final int traceDepthOfChild = addTraceDepth(child); - maxTraceDepthOfChildren = Math.max(traceDepthOfChild, maxTraceDepthOfChildren); - } - - traceDepth = 1 + maxTraceDepthOfChildren; - } - - call.setStackDepth(traceDepth); - return traceDepth; - } - - private static int addTraceSize(final OperationCall call) { - int traceSize = 1; - - for (final OperationCall child : call.getChildren()) { - final int traceSizeOfChild = addTraceSize(child); - traceSize += traceSizeOfChild; - } - - call.setStackSize(traceSize); - return traceSize; - } - - private static void addPercentValues(final OperationCall call, final long rootDuration) { - if (call.getParent() == null) { - call.setPercent(100.0f); - } else { - call.setPercent((100.0f * call.getDuration()) / rootDuration); - } - - for (final OperationCall child : call.getChildren()) { - addPercentValues(child, call.getDuration()); - } - } -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.stage.tracediagnosis; + +import kieker.analysis.domain.OperationCall; +import kieker.analysis.domain.Trace; + +import teetime.stage.basic.AbstractTransformation; + +/** + * This class is a {@code TeeTime} stage adding statistics (via the corresponding setters) to instances of {@link Trace}. The traces are forwarded to the output + * port. + * + * @author Nils Christian Ehmke + */ +public final class TraceStatisticsDecorator extends AbstractTransformation<Trace, Trace> { + + @Override + public void execute(final Trace trace) { + addTraceDepth(trace.getRootOperationCall()); + addTraceSize(trace.getRootOperationCall()); + addPercentValues(trace.getRootOperationCall(), trace.getRootOperationCall().getDuration()); + + super.getOutputPort().send(trace); + } + + private static int addTraceDepth(final OperationCall call) { + final int traceDepth; + + if (call.getChildren().isEmpty()) { + traceDepth = 0; + } else { + int maxTraceDepthOfChildren = 0; + + for (final OperationCall child : call.getChildren()) { + final int traceDepthOfChild = addTraceDepth(child); + maxTraceDepthOfChildren = Math.max(traceDepthOfChild, maxTraceDepthOfChildren); + } + + traceDepth = 1 + maxTraceDepthOfChildren; + } + + call.setStackDepth(traceDepth); + return traceDepth; + } + + private static int addTraceSize(final OperationCall call) { + int traceSize = 1; + + for (final OperationCall child : call.getChildren()) { + final int traceSizeOfChild = addTraceSize(child); + traceSize += traceSizeOfChild; + } + + call.setStackSize(traceSize); + return traceSize; + } + + private static void addPercentValues(final OperationCall call, final long rootDuration) { + if (call.getParent() == null) { + call.setPercent(100.0f); + } else { + call.setPercent((100.0f * call.getDuration()) / rootDuration); + } + + for (final OperationCall child : call.getChildren()) { + addPercentValues(child, call.getDuration()); + } + } +} diff --git a/src/main/java/kieker/analysis/trace/graphoutput/DotGraphWriter.java b/src/main/java/kieker/analysis/trace/graphoutput/DotGraphWriter.java index a514bc7da531f6fac6d1d7a4d555ba3e8377f410..0f88302f0bf4a5e0e91d410627fcdfda96e4623e 100644 --- a/src/main/java/kieker/analysis/trace/graphoutput/DotGraphWriter.java +++ b/src/main/java/kieker/analysis/trace/graphoutput/DotGraphWriter.java @@ -1,74 +1,74 @@ -package kieker.analysis.trace.graphoutput; - -import java.io.BufferedWriter; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.util.HashMap; -import java.util.Map; - -import com.tinkerpop.blueprints.Direction; -import com.tinkerpop.blueprints.Edge; -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.Vertex; - -import kieker.analysis.util.DotBuilder; -import kieker.analysis.util.graph.NamedGraph; - -import teetime.framework.AbstractConsumerStage; - -public class DotGraphWriter extends AbstractConsumerStage<NamedGraph<Graph>> { - - private final String outputDir; - - public DotGraphWriter(final String outputDir) { - this.outputDir = outputDir; - } - - @Override - protected void execute(final NamedGraph<Graph> graph) { - final String dotGraph = createDotGraph(graph); - final String fileName = outputDir + "/" + graph.getFileName() + ".dot"; - - try { - writeDotGraphFile(dotGraph, fileName); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - private String createDotGraph(final Graph graph) { - - DotBuilder dotGraph = new DotBuilder(); - - Map<String, String> nodeProperties = new HashMap<>(); - nodeProperties.put("shape", "none"); - - dotGraph.setDefaultNodeProperties(nodeProperties); - - for (Vertex vertex : graph.getVertices()) { - String label = vertex.getProperty("label"); - dotGraph.addNode(String.valueOf(vertex.getId()), label); - } - - for (Edge edge : graph.getEdges()) { - String source = edge.getVertex(Direction.OUT).getId().toString(); - String target = edge.getVertex(Direction.IN).getId().toString(); - dotGraph.addEdge(source, target, edge.getLabel()); - } - - return dotGraph.get(); - } - - private void writeDotGraphFile(final String dotGraph, final String fileName) throws IOException { - - final OutputStream outputStream = new FileOutputStream(fileName); - - final Writer writer = new BufferedWriter(new OutputStreamWriter(outputStream, "utf-8")); - writer.write(dotGraph); - writer.close(); - - } -} +package kieker.analysis.trace.graphoutput; + +import java.io.BufferedWriter; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.util.HashMap; +import java.util.Map; + +import com.tinkerpop.blueprints.Direction; +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Graph; +import com.tinkerpop.blueprints.Vertex; + +import kieker.analysis.util.DotBuilder; +import kieker.analysis.util.graph.NamedGraph; + +import teetime.framework.AbstractConsumerStage; + +public class DotGraphWriter extends AbstractConsumerStage<NamedGraph<Graph>> { + + private final String outputDir; + + public DotGraphWriter(final String outputDir) { + this.outputDir = outputDir; + } + + @Override + protected void execute(final NamedGraph<Graph> graph) { + final String dotGraph = createDotGraph(graph); + final String fileName = outputDir + "/" + graph.getFileName() + ".dot"; + + try { + writeDotGraphFile(dotGraph, fileName); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + private String createDotGraph(final Graph graph) { + + DotBuilder dotGraph = new DotBuilder(); + + Map<String, String> nodeProperties = new HashMap<>(); + nodeProperties.put("shape", "none"); + + dotGraph.setDefaultNodeProperties(nodeProperties); + + for (Vertex vertex : graph.getVertices()) { + String label = vertex.getProperty("label"); + dotGraph.addNode(String.valueOf(vertex.getId()), label); + } + + for (Edge edge : graph.getEdges()) { + String source = edge.getVertex(Direction.OUT).getId().toString(); + String target = edge.getVertex(Direction.IN).getId().toString(); + dotGraph.addEdge(source, target, edge.getLabel()); + } + + return dotGraph.get(); + } + + private void writeDotGraphFile(final String dotGraph, final String fileName) throws IOException { + + final OutputStream outputStream = new FileOutputStream(fileName); + + final Writer writer = new BufferedWriter(new OutputStreamWriter(outputStream, "utf-8")); + writer.write(dotGraph); + writer.close(); + + } +} diff --git a/src/main/java/kieker/analysis/trace/graphoutput/GraphMLWriter.java b/src/main/java/kieker/analysis/trace/graphoutput/GraphMLWriter.java index 20ebf3efd9417dcfb0452026bf7942df82b6265e..eede0b283b3fbb3b441616930b665967cd473bc7 100644 --- a/src/main/java/kieker/analysis/trace/graphoutput/GraphMLWriter.java +++ b/src/main/java/kieker/analysis/trace/graphoutput/GraphMLWriter.java @@ -1,35 +1,35 @@ -package kieker.analysis.trace.graphoutput; - -import java.io.IOException; - -import com.tinkerpop.blueprints.Graph; - -import kieker.analysis.util.graph.NamedGraph; - -import teetime.framework.AbstractConsumerStage; - -public class GraphMLWriter extends AbstractConsumerStage<NamedGraph<Graph>> { - - private final String outputDir; - - public GraphMLWriter(final String outputDir) { - this.outputDir = outputDir; - } - - @Override - protected void execute(final NamedGraph<Graph> graph) { - - String outputFile = outputDir + "/" + graph.getFileName() + ".xml"; - - com.tinkerpop.blueprints.util.io.graphml.GraphMLWriter writer = new com.tinkerpop.blueprints.util.io.graphml.GraphMLWriter(graph); - writer.setNormalize(true); - - try { - writer.outputGraph(outputFile); - } catch (IOException e) { - throw new IllegalStateException(e); - } - - } - -} +package kieker.analysis.trace.graphoutput; + +import java.io.IOException; + +import com.tinkerpop.blueprints.Graph; + +import kieker.analysis.util.graph.NamedGraph; + +import teetime.framework.AbstractConsumerStage; + +public class GraphMLWriter extends AbstractConsumerStage<NamedGraph<Graph>> { + + private final String outputDir; + + public GraphMLWriter(final String outputDir) { + this.outputDir = outputDir; + } + + @Override + protected void execute(final NamedGraph<Graph> graph) { + + String outputFile = outputDir + "/" + graph.getFileName() + ".xml"; + + com.tinkerpop.blueprints.util.io.graphml.GraphMLWriter writer = new com.tinkerpop.blueprints.util.io.graphml.GraphMLWriter(graph); + writer.setNormalize(true); + + try { + writer.outputGraph(outputFile); + } catch (IOException e) { + throw new IllegalStateException(e); + } + + } + +} diff --git a/src/main/java/kieker/analysis/trace/traversal/AbstractTraceToGraphTransformer.java b/src/main/java/kieker/analysis/trace/traversal/AbstractTraceToGraphTransformer.java index b2972fb48d68f2fefb4d743b747488217fd1b320..77fb05acf09022826909142f70e5857de7bfb834 100644 --- a/src/main/java/kieker/analysis/trace/traversal/AbstractTraceToGraphTransformer.java +++ b/src/main/java/kieker/analysis/trace/traversal/AbstractTraceToGraphTransformer.java @@ -1,65 +1,65 @@ -package kieker.analysis.trace.traversal; - -import com.tinkerpop.blueprints.Edge; -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.Vertex; -import com.tinkerpop.blueprints.impls.tg.TinkerGraph; - -import kieker.analysis.domain.AbstractOperationCall; - -public abstract class AbstractTraceToGraphTransformer<C extends AbstractOperationCall<C>> extends OperationCallVisitor<C> { - - protected final Graph graph; - private final C rootOperationCall; - - public AbstractTraceToGraphTransformer() { - this(null); - } - - public AbstractTraceToGraphTransformer(final C rootOperartionCall) { - super(); - this.graph = new TinkerGraph(); - this.rootOperationCall = rootOperartionCall; - } - - public Graph getGraph() { - - addRootVertex(); - - return graph; - } - - @Override - public void visit(final C operationCall) { - - addVertex(operationCall); - - if (operationCall.getParent() != null) { - addEdge(operationCall, operationCall.getParent()); - } - - } - - private void addRootVertex() { - - if (rootOperationCall == null) { - return; - } - - final Vertex realRootVertex = graph.getVertex(rootOperationCall.hashCode()); - - if (realRootVertex == null) { - return; - } - - final Vertex rootVertex = graph.addVertex("Entry"); - rootVertex.setProperty("label", "'Entry'"); - graph.addEdge(null, rootVertex, realRootVertex, "1."); - - } - - protected abstract Vertex addVertex(C operationCall); - - protected abstract Edge addEdge(C operationCall, C parentOperationCall); - -} +package kieker.analysis.trace.traversal; + +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Graph; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.impls.tg.TinkerGraph; + +import kieker.analysis.domain.AbstractOperationCall; + +public abstract class AbstractTraceToGraphTransformer<C extends AbstractOperationCall<C>> extends OperationCallVisitor<C> { + + protected final Graph graph; + private final C rootOperationCall; + + public AbstractTraceToGraphTransformer() { + this(null); + } + + public AbstractTraceToGraphTransformer(final C rootOperartionCall) { + super(); + this.graph = new TinkerGraph(); + this.rootOperationCall = rootOperartionCall; + } + + public Graph getGraph() { + + addRootVertex(); + + return graph; + } + + @Override + public void visit(final C operationCall) { + + addVertex(operationCall); + + if (operationCall.getParent() != null) { + addEdge(operationCall, operationCall.getParent()); + } + + } + + private void addRootVertex() { + + if (rootOperationCall == null) { + return; + } + + final Vertex realRootVertex = graph.getVertex(rootOperationCall.hashCode()); + + if (realRootVertex == null) { + return; + } + + final Vertex rootVertex = graph.addVertex("Entry"); + rootVertex.setProperty("label", "'Entry'"); + graph.addEdge(null, rootVertex, realRootVertex, "1."); + + } + + protected abstract Vertex addVertex(C operationCall); + + protected abstract Edge addEdge(C operationCall, C parentOperationCall); + +} diff --git a/src/main/java/kieker/analysis/trace/traversal/AggrTraceToGraphTransformer.java b/src/main/java/kieker/analysis/trace/traversal/AggrTraceToGraphTransformer.java index d918fd97ff8ce5ac3ce84974cac97e5143f4bb60..d8cae5ea43e9202f8e33404442881b22bde07164 100644 --- a/src/main/java/kieker/analysis/trace/traversal/AggrTraceToGraphTransformer.java +++ b/src/main/java/kieker/analysis/trace/traversal/AggrTraceToGraphTransformer.java @@ -1,55 +1,55 @@ -package kieker.analysis.trace.traversal; - -import com.tinkerpop.blueprints.Edge; -import com.tinkerpop.blueprints.Vertex; - -import kieker.analysis.domain.AggregatedOperationCall; -import kieker.analysis.util.NameConverter; - -public class AggrTraceToGraphTransformer extends AbstractTraceToGraphTransformer<AggregatedOperationCall> { - - public AggrTraceToGraphTransformer() { - super(); - } - - public AggrTraceToGraphTransformer(final AggregatedOperationCall rootOperartionCall) { - super(rootOperartionCall); - } - - @Override - protected Vertex addVertex(final AggregatedOperationCall operationCall) { - - Vertex vertex = graph.addVertex(operationCall.hashCode()); - - String name = operationCall.getOperation(); - String stackDepth = String.valueOf(operationCall.getStackDepth() + 1); - String component = operationCall.getComponent(); - String container = operationCall.getContainer(); - - Boolean shortNames = true; // TODO hard coded - - if (shortNames) { - name = NameConverter.toShortOperationName(name); - } - - String label = container + "::\\n" + "@" + stackDepth + ":" + component + "\\n" + name; - - vertex.setProperty("label", label); - - return vertex; - } - - @Override - protected Edge addEdge(final AggregatedOperationCall operationCall, final AggregatedOperationCall parentOperationCall) { - - Vertex thisVertex = graph.getVertex(operationCall.hashCode()); - Vertex parentVertex = graph.getVertex(operationCall.getParent().hashCode()); - - if (thisVertex == null || parentVertex == null) { - return null; - } - - return graph.addEdge(null, parentVertex, thisVertex, String.valueOf(operationCall.getOrderIndex() + 1) + '.'); - } - -} +package kieker.analysis.trace.traversal; + +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Vertex; + +import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.util.NameConverter; + +public class AggrTraceToGraphTransformer extends AbstractTraceToGraphTransformer<AggregatedOperationCall> { + + public AggrTraceToGraphTransformer() { + super(); + } + + public AggrTraceToGraphTransformer(final AggregatedOperationCall rootOperartionCall) { + super(rootOperartionCall); + } + + @Override + protected Vertex addVertex(final AggregatedOperationCall operationCall) { + + Vertex vertex = graph.addVertex(operationCall.hashCode()); + + String name = operationCall.getOperation(); + String stackDepth = String.valueOf(operationCall.getStackDepth() + 1); + String component = operationCall.getComponent(); + String container = operationCall.getContainer(); + + Boolean shortNames = true; // TODO hard coded + + if (shortNames) { + name = NameConverter.toShortOperationName(name); + } + + String label = container + "::\\n" + "@" + stackDepth + ":" + component + "\\n" + name; + + vertex.setProperty("label", label); + + return vertex; + } + + @Override + protected Edge addEdge(final AggregatedOperationCall operationCall, final AggregatedOperationCall parentOperationCall) { + + Vertex thisVertex = graph.getVertex(operationCall.hashCode()); + Vertex parentVertex = graph.getVertex(operationCall.getParent().hashCode()); + + if (thisVertex == null || parentVertex == null) { + return null; + } + + return graph.addEdge(null, parentVertex, thisVertex, String.valueOf(operationCall.getOrderIndex() + 1) + '.'); + } + +} diff --git a/src/main/java/kieker/analysis/trace/traversal/AggrTraceTraverserStage.java b/src/main/java/kieker/analysis/trace/traversal/AggrTraceTraverserStage.java index 2dfd4d586f58265e5e8538c953acd85839c1b8f5..7d24977a6cdfaf7f1ac7e2d1fb9089bc59f10a61 100644 --- a/src/main/java/kieker/analysis/trace/traversal/AggrTraceTraverserStage.java +++ b/src/main/java/kieker/analysis/trace/traversal/AggrTraceTraverserStage.java @@ -1,29 +1,29 @@ -package kieker.analysis.trace.traversal; - -import com.tinkerpop.blueprints.Graph; - -import kieker.analysis.domain.AggregatedOperationCall; -import kieker.analysis.domain.AggregatedTrace; -import kieker.analysis.util.graph.NamedGraph; - -import teetime.stage.basic.AbstractTransformation; - -public class AggrTraceTraverserStage extends AbstractTransformation<AggregatedTrace, NamedGraph<Graph>> { - - @Override - protected void execute(final AggregatedTrace trace) { - - AggrTraceToGraphTransformer aggrTrace2Blueprint = new AggrTraceToGraphTransformer(trace.getRootOperationCall()); - - TraceTraverser<AggregatedTrace, AggregatedOperationCall> traverser = new TraceTraverser<>(aggrTrace2Blueprint); - - traverser.traverse(trace); - - final String name = "aggr-trace-" + trace.hashCode(); - - final NamedGraph<Graph> graph = new NamedGraph<>(name, name, aggrTrace2Blueprint.getGraph()); - - this.getOutputPort().send(graph); - } - -} +package kieker.analysis.trace.traversal; + +import com.tinkerpop.blueprints.Graph; + +import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.domain.AggregatedTrace; +import kieker.analysis.util.graph.NamedGraph; + +import teetime.stage.basic.AbstractTransformation; + +public class AggrTraceTraverserStage extends AbstractTransformation<AggregatedTrace, NamedGraph<Graph>> { + + @Override + protected void execute(final AggregatedTrace trace) { + + AggrTraceToGraphTransformer aggrTrace2Blueprint = new AggrTraceToGraphTransformer(trace.getRootOperationCall()); + + TraceTraverser<AggregatedTrace, AggregatedOperationCall> traverser = new TraceTraverser<>(aggrTrace2Blueprint); + + traverser.traverse(trace); + + final String name = "aggr-trace-" + trace.hashCode(); + + final NamedGraph<Graph> graph = new NamedGraph<>(name, name, aggrTrace2Blueprint.getGraph()); + + this.getOutputPort().send(graph); + } + +} diff --git a/src/main/java/kieker/analysis/trace/traversal/OperationCallVisitor.java b/src/main/java/kieker/analysis/trace/traversal/OperationCallVisitor.java index a035d00f258e7fa66f8c051023e7dfb1bb5ba657..f1baaa4136be61ff04bd9ae6d90db3f0625bbf71 100644 --- a/src/main/java/kieker/analysis/trace/traversal/OperationCallVisitor.java +++ b/src/main/java/kieker/analysis/trace/traversal/OperationCallVisitor.java @@ -1,9 +1,9 @@ -package kieker.analysis.trace.traversal; - -import kieker.analysis.domain.AbstractOperationCall; - -public abstract class OperationCallVisitor<C extends AbstractOperationCall<C>> { - - public abstract void visit(C operationCall); - -} +package kieker.analysis.trace.traversal; + +import kieker.analysis.domain.AbstractOperationCall; + +public abstract class OperationCallVisitor<C extends AbstractOperationCall<C>> { + + public abstract void visit(C operationCall); + +} diff --git a/src/main/java/kieker/analysis/trace/traversal/TraceToGraphTransformer.java b/src/main/java/kieker/analysis/trace/traversal/TraceToGraphTransformer.java index 594e51c1119ce487d414c42c6d6883ed64278a17..e1f54798edebc5843c9cefe00ae493dae57d85dd 100644 --- a/src/main/java/kieker/analysis/trace/traversal/TraceToGraphTransformer.java +++ b/src/main/java/kieker/analysis/trace/traversal/TraceToGraphTransformer.java @@ -1,54 +1,54 @@ -package kieker.analysis.trace.traversal; - -import com.tinkerpop.blueprints.Edge; -import com.tinkerpop.blueprints.Vertex; - -import kieker.analysis.domain.OperationCall; -import kieker.analysis.util.NameConverter; - -public class TraceToGraphTransformer extends AbstractTraceToGraphTransformer<OperationCall> { - - public TraceToGraphTransformer() { - super(); - } - - public TraceToGraphTransformer(final OperationCall rootOperartionCall) { - super(rootOperartionCall); - } - - @Override - protected Vertex addVertex(final OperationCall operationCall) { - Vertex vertex = graph.addVertex(operationCall.hashCode()); - - String name = operationCall.getOperation(); - String stackDepth = String.valueOf(operationCall.getStackDepth() + 1); - String component = operationCall.getComponent(); - String container = operationCall.getContainer(); - - Boolean shortNames = true; // TODO hard coded - - if (shortNames) { - name = NameConverter.toShortOperationName(name); - } - - String label = container + "::\\n" + "@" + stackDepth + ":" + component + "\\n" + name; - - vertex.setProperty("label", label); - - return vertex; - } - - @Override - protected Edge addEdge(final OperationCall operationCall, final OperationCall parentOperationCall) { - - Vertex thisVertex = graph.getVertex(operationCall.hashCode()); - Vertex parentVertex = graph.getVertex(operationCall.getParent().hashCode()); - - if (thisVertex == null || parentVertex == null) { - return null; - } - - return graph.addEdge(null, parentVertex, thisVertex, String.valueOf(operationCall.getOrderIndex() + 1) + '.'); - } - -} +package kieker.analysis.trace.traversal; + +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Vertex; + +import kieker.analysis.domain.OperationCall; +import kieker.analysis.util.NameConverter; + +public class TraceToGraphTransformer extends AbstractTraceToGraphTransformer<OperationCall> { + + public TraceToGraphTransformer() { + super(); + } + + public TraceToGraphTransformer(final OperationCall rootOperartionCall) { + super(rootOperartionCall); + } + + @Override + protected Vertex addVertex(final OperationCall operationCall) { + Vertex vertex = graph.addVertex(operationCall.hashCode()); + + String name = operationCall.getOperation(); + String stackDepth = String.valueOf(operationCall.getStackDepth() + 1); + String component = operationCall.getComponent(); + String container = operationCall.getContainer(); + + Boolean shortNames = true; // TODO hard coded + + if (shortNames) { + name = NameConverter.toShortOperationName(name); + } + + String label = container + "::\\n" + "@" + stackDepth + ":" + component + "\\n" + name; + + vertex.setProperty("label", label); + + return vertex; + } + + @Override + protected Edge addEdge(final OperationCall operationCall, final OperationCall parentOperationCall) { + + Vertex thisVertex = graph.getVertex(operationCall.hashCode()); + Vertex parentVertex = graph.getVertex(operationCall.getParent().hashCode()); + + if (thisVertex == null || parentVertex == null) { + return null; + } + + return graph.addEdge(null, parentVertex, thisVertex, String.valueOf(operationCall.getOrderIndex() + 1) + '.'); + } + +} diff --git a/src/main/java/kieker/analysis/trace/traversal/TraceTraverser.java b/src/main/java/kieker/analysis/trace/traversal/TraceTraverser.java index fb031a6f95240e6fb0f765756289487b6fe27861..dab648e4ffbb88b308e50e897cedba9c0d16bb04 100644 --- a/src/main/java/kieker/analysis/trace/traversal/TraceTraverser.java +++ b/src/main/java/kieker/analysis/trace/traversal/TraceTraverser.java @@ -1,57 +1,57 @@ -package kieker.analysis.trace.traversal; - -import java.util.ArrayList; -import java.util.List; - -import kieker.analysis.domain.AbstractOperationCall; -import kieker.analysis.domain.AbstractTrace; - -public class TraceTraverser<T extends AbstractTrace<C>, C extends AbstractOperationCall<C>> { - - private List<OperationCallVisitor<C>> visitors; - - public TraceTraverser() { - super(); - this.visitors = new ArrayList<>(); - } - - public TraceTraverser(final OperationCallVisitor<C> visitor) { - this(); - visitors.add(visitor); - } - - public TraceTraverser(final List<OperationCallVisitor<C>> visitors) { - super(); - this.visitors = visitors; - } - - public void traverse(final T trace) { - handleOperationCallsRecursively(trace.getRootOperationCall()); - } - - private void handleOperationCallsRecursively(final C operationCall) { - handleOperationCall(operationCall); - for (C childOperationCall : operationCall.getChildren()) { - handleOperationCallsRecursively(childOperationCall); - } - } - - private void handleOperationCall(final C operationCall) { - for (OperationCallVisitor<C> visitor : visitors) { - visitor.visit(operationCall); - } - } - - public List<OperationCallVisitor<C>> getVisitors() { - return visitors; - } - - public void setVisitors(final List<OperationCallVisitor<C>> visitors) { - this.visitors = visitors; - } - - public void addVisitor(final OperationCallVisitor<C> visitor) { - visitors.add(visitor); - } - -} +package kieker.analysis.trace.traversal; + +import java.util.ArrayList; +import java.util.List; + +import kieker.analysis.domain.AbstractOperationCall; +import kieker.analysis.domain.AbstractTrace; + +public class TraceTraverser<T extends AbstractTrace<C>, C extends AbstractOperationCall<C>> { + + private List<OperationCallVisitor<C>> visitors; + + public TraceTraverser() { + super(); + this.visitors = new ArrayList<>(); + } + + public TraceTraverser(final OperationCallVisitor<C> visitor) { + this(); + visitors.add(visitor); + } + + public TraceTraverser(final List<OperationCallVisitor<C>> visitors) { + super(); + this.visitors = visitors; + } + + public void traverse(final T trace) { + handleOperationCallsRecursively(trace.getRootOperationCall()); + } + + private void handleOperationCallsRecursively(final C operationCall) { + handleOperationCall(operationCall); + for (C childOperationCall : operationCall.getChildren()) { + handleOperationCallsRecursively(childOperationCall); + } + } + + private void handleOperationCall(final C operationCall) { + for (OperationCallVisitor<C> visitor : visitors) { + visitor.visit(operationCall); + } + } + + public List<OperationCallVisitor<C>> getVisitors() { + return visitors; + } + + public void setVisitors(final List<OperationCallVisitor<C>> visitors) { + this.visitors = visitors; + } + + public void addVisitor(final OperationCallVisitor<C> visitor) { + visitors.add(visitor); + } + +} diff --git a/src/main/java/kieker/analysis/trace/traversal/TraceTraverserStage.java b/src/main/java/kieker/analysis/trace/traversal/TraceTraverserStage.java index 8c8f20b33f37d23e1e3664223e3f64fb8e926f7f..3212e0a0a7a2b57034ff897244e867d263bc1228 100644 --- a/src/main/java/kieker/analysis/trace/traversal/TraceTraverserStage.java +++ b/src/main/java/kieker/analysis/trace/traversal/TraceTraverserStage.java @@ -1,29 +1,29 @@ -package kieker.analysis.trace.traversal; - -import com.tinkerpop.blueprints.Graph; - -import kieker.analysis.domain.OperationCall; -import kieker.analysis.domain.Trace; -import kieker.analysis.util.graph.NamedGraph; - -import teetime.stage.basic.AbstractTransformation; - -public class TraceTraverserStage extends AbstractTransformation<Trace, NamedGraph<Graph>> { - - @Override - protected void execute(final Trace trace) { - - TraceToGraphTransformer traceToGraph = new TraceToGraphTransformer(trace.getRootOperationCall()); - - TraceTraverser<Trace, OperationCall> traverser = new TraceTraverser<>(traceToGraph); - - traverser.traverse(trace); - - final String name = "trace-" + trace.hashCode(); - - final NamedGraph<Graph> graph = new NamedGraph<>(name, name, traceToGraph.getGraph()); - - this.getOutputPort().send(graph); - } - -} +package kieker.analysis.trace.traversal; + +import com.tinkerpop.blueprints.Graph; + +import kieker.analysis.domain.OperationCall; +import kieker.analysis.domain.Trace; +import kieker.analysis.util.graph.NamedGraph; + +import teetime.stage.basic.AbstractTransformation; + +public class TraceTraverserStage extends AbstractTransformation<Trace, NamedGraph<Graph>> { + + @Override + protected void execute(final Trace trace) { + + TraceToGraphTransformer traceToGraph = new TraceToGraphTransformer(trace.getRootOperationCall()); + + TraceTraverser<Trace, OperationCall> traverser = new TraceTraverser<>(traceToGraph); + + traverser.traverse(trace); + + final String name = "trace-" + trace.hashCode(); + + final NamedGraph<Graph> graph = new NamedGraph<>(name, name, traceToGraph.getGraph()); + + this.getOutputPort().send(graph); + } + +} diff --git a/src/main/java/kieker/analysis/traceanalysismodel/PropertiesModel.java b/src/main/java/kieker/analysis/traceanalysismodel/PropertiesModel.java index 11e317ee6c431b9b6890f2fba3432c00e4799b98..2b905ebe2ff4f358551203a3bd21f3446941b7b3 100644 --- a/src/main/java/kieker/analysis/traceanalysismodel/PropertiesModel.java +++ b/src/main/java/kieker/analysis/traceanalysismodel/PropertiesModel.java @@ -1,178 +1,178 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.traceanalysismodel; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; -import java.util.concurrent.TimeUnit; -import java.util.prefs.BackingStoreException; -import java.util.prefs.Preferences; - -//import org.apache.logging.log4j.LogManager; //TODO -//import org.apache.logging.log4j.Logger; //TODO - -/** - * @author Nils Christian Ehmke - */ -public final class PropertiesModel { - - // private static final Logger LOGGER = LogManager.getLogger(PropertiesModel.class);//TODO - private static final PropertiesModel INSTANCE = new PropertiesModel(); - - private static final String KEY_TIMEUNIT = "timeunit"; - private static final String KEY_OPERATIONS = "operations"; - private static final String KEY_COMPONENTS = "components"; - private static final String KEY_GRAPHVIZ_PATH = "graphvizpath"; - private static final String KEY_ADDITIONAL_LOG_CHECKS = "additionalLogChecks"; - private static final String KEY_REGULAR_EXPRESSIONS = "regularExpressions"; - - private static final String KEY_GITLAB_URL = "GitLabURL"; - private static final String KEY_TRAC_URL = "TracURL"; - - private String graphvizPath; - private TimeUnit timeUnit; - private ComponentNames componentNames; - private OperationNames operationNames; - private boolean additionalLogChecks; - private boolean activateRegularExpressions; - private String gitLabURL; - private String tracURL; - - public PropertiesModel() { - this.loadSettings(); - } - - private void loadSettings() { - final Preferences preferences = Preferences.userNodeForPackage(PropertiesModel.class); - - this.graphvizPath = preferences.get(PropertiesModel.KEY_GRAPHVIZ_PATH, "."); - this.timeUnit = TimeUnit.valueOf(preferences.get(PropertiesModel.KEY_TIMEUNIT, TimeUnit.NANOSECONDS.name())); - this.componentNames = ComponentNames.valueOf(preferences.get(PropertiesModel.KEY_COMPONENTS, ComponentNames.LONG.name())); - this.operationNames = OperationNames.valueOf(preferences.get(PropertiesModel.KEY_OPERATIONS, OperationNames.SHORT.name())); - this.additionalLogChecks = Boolean.valueOf(preferences.get(PropertiesModel.KEY_ADDITIONAL_LOG_CHECKS, Boolean.FALSE.toString())); - this.activateRegularExpressions = Boolean.valueOf(preferences.get(PropertiesModel.KEY_REGULAR_EXPRESSIONS, Boolean.FALSE.toString())); - - final Properties properties = new Properties(); - final ClassLoader classLoader = PropertiesModel.class.getClassLoader(); - try (InputStream inputStream = classLoader.getResourceAsStream("config.properties")) { - properties.load(inputStream); - this.gitLabURL = properties.getProperty(PropertiesModel.KEY_GITLAB_URL); - this.tracURL = properties.getProperty(PropertiesModel.KEY_TRAC_URL); - } catch (final IOException e) { - // PropertiesModel.LOGGER.error(e); //TODO - } - } - - private void saveSettings() { - final Preferences preferences = Preferences.userNodeForPackage(PropertiesModel.class); - - preferences.put(PropertiesModel.KEY_GRAPHVIZ_PATH, this.graphvizPath); - preferences.put(PropertiesModel.KEY_TIMEUNIT, this.timeUnit.name()); - preferences.put(PropertiesModel.KEY_COMPONENTS, this.componentNames.name()); - preferences.put(PropertiesModel.KEY_OPERATIONS, this.operationNames.name()); - preferences.put(PropertiesModel.KEY_ADDITIONAL_LOG_CHECKS, Boolean.toString(this.additionalLogChecks)); - preferences.put(PropertiesModel.KEY_REGULAR_EXPRESSIONS, Boolean.toString(this.activateRegularExpressions)); - - try { - preferences.flush(); - } catch (final BackingStoreException e) { - // PropertiesModel.LOGGER.error(e);//TODO - } - } - - public String getGraphvizPath() { - return this.graphvizPath; - } - - public void setGraphvizPath(final String graphvizPath) { - this.graphvizPath = graphvizPath; - this.saveSettings(); - } - - public TimeUnit getTimeUnit() { - return this.timeUnit; - } - - public void setTimeUnit(final TimeUnit timeUnit) { - this.timeUnit = timeUnit; - this.saveSettings(); - } - - public ComponentNames getComponentNames() { - return this.componentNames; - } - - public void setComponentNames(final ComponentNames componentNames) { - this.componentNames = componentNames; - this.saveSettings(); - } - - public OperationNames getOperationNames() { - return this.operationNames; - } - - public void setOperationNames(final OperationNames operationNames) { - this.operationNames = operationNames; - this.saveSettings(); - } - - public static PropertiesModel getInstance() { - return PropertiesModel.INSTANCE; - } - - public boolean isAdditionalLogChecks() { - return this.additionalLogChecks; - } - - public void setAdditionalLogChecks(final boolean additionalLogChecks) { - this.additionalLogChecks = additionalLogChecks; - this.saveSettings(); - } - - public boolean isActivateRegularExpressions() { - return this.activateRegularExpressions; - } - - public void setActivateRegularExpressions(final boolean activateRegularExpressions) { - this.activateRegularExpressions = activateRegularExpressions; - this.saveSettings(); - } - - public String getGitLabURL() { - return this.gitLabURL; - } - - public String getTracURL() { - return this.tracURL; - } - - /** - * @author Nils Christian Ehmke - */ - public enum ComponentNames { - SHORT, LONG - } - - /** - * @author Nils Christian Ehmke - */ - public enum OperationNames { - SHORT, LONG - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.traceanalysismodel; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; +import java.util.concurrent.TimeUnit; +import java.util.prefs.BackingStoreException; +import java.util.prefs.Preferences; + +//import org.apache.logging.log4j.LogManager; //TODO +//import org.apache.logging.log4j.Logger; //TODO + +/** + * @author Nils Christian Ehmke + */ +public final class PropertiesModel { + + // private static final Logger LOGGER = LogManager.getLogger(PropertiesModel.class);//TODO + private static final PropertiesModel INSTANCE = new PropertiesModel(); + + private static final String KEY_TIMEUNIT = "timeunit"; + private static final String KEY_OPERATIONS = "operations"; + private static final String KEY_COMPONENTS = "components"; + private static final String KEY_GRAPHVIZ_PATH = "graphvizpath"; + private static final String KEY_ADDITIONAL_LOG_CHECKS = "additionalLogChecks"; + private static final String KEY_REGULAR_EXPRESSIONS = "regularExpressions"; + + private static final String KEY_GITLAB_URL = "GitLabURL"; + private static final String KEY_TRAC_URL = "TracURL"; + + private String graphvizPath; + private TimeUnit timeUnit; + private ComponentNames componentNames; + private OperationNames operationNames; + private boolean additionalLogChecks; + private boolean activateRegularExpressions; + private String gitLabURL; + private String tracURL; + + public PropertiesModel() { + this.loadSettings(); + } + + private void loadSettings() { + final Preferences preferences = Preferences.userNodeForPackage(PropertiesModel.class); + + this.graphvizPath = preferences.get(PropertiesModel.KEY_GRAPHVIZ_PATH, "."); + this.timeUnit = TimeUnit.valueOf(preferences.get(PropertiesModel.KEY_TIMEUNIT, TimeUnit.NANOSECONDS.name())); + this.componentNames = ComponentNames.valueOf(preferences.get(PropertiesModel.KEY_COMPONENTS, ComponentNames.LONG.name())); + this.operationNames = OperationNames.valueOf(preferences.get(PropertiesModel.KEY_OPERATIONS, OperationNames.SHORT.name())); + this.additionalLogChecks = Boolean.valueOf(preferences.get(PropertiesModel.KEY_ADDITIONAL_LOG_CHECKS, Boolean.FALSE.toString())); + this.activateRegularExpressions = Boolean.valueOf(preferences.get(PropertiesModel.KEY_REGULAR_EXPRESSIONS, Boolean.FALSE.toString())); + + final Properties properties = new Properties(); + final ClassLoader classLoader = PropertiesModel.class.getClassLoader(); + try (InputStream inputStream = classLoader.getResourceAsStream("config.properties")) { + properties.load(inputStream); + this.gitLabURL = properties.getProperty(PropertiesModel.KEY_GITLAB_URL); + this.tracURL = properties.getProperty(PropertiesModel.KEY_TRAC_URL); + } catch (final IOException e) { + // PropertiesModel.LOGGER.error(e); //TODO + } + } + + private void saveSettings() { + final Preferences preferences = Preferences.userNodeForPackage(PropertiesModel.class); + + preferences.put(PropertiesModel.KEY_GRAPHVIZ_PATH, this.graphvizPath); + preferences.put(PropertiesModel.KEY_TIMEUNIT, this.timeUnit.name()); + preferences.put(PropertiesModel.KEY_COMPONENTS, this.componentNames.name()); + preferences.put(PropertiesModel.KEY_OPERATIONS, this.operationNames.name()); + preferences.put(PropertiesModel.KEY_ADDITIONAL_LOG_CHECKS, Boolean.toString(this.additionalLogChecks)); + preferences.put(PropertiesModel.KEY_REGULAR_EXPRESSIONS, Boolean.toString(this.activateRegularExpressions)); + + try { + preferences.flush(); + } catch (final BackingStoreException e) { + // PropertiesModel.LOGGER.error(e);//TODO + } + } + + public String getGraphvizPath() { + return this.graphvizPath; + } + + public void setGraphvizPath(final String graphvizPath) { + this.graphvizPath = graphvizPath; + this.saveSettings(); + } + + public TimeUnit getTimeUnit() { + return this.timeUnit; + } + + public void setTimeUnit(final TimeUnit timeUnit) { + this.timeUnit = timeUnit; + this.saveSettings(); + } + + public ComponentNames getComponentNames() { + return this.componentNames; + } + + public void setComponentNames(final ComponentNames componentNames) { + this.componentNames = componentNames; + this.saveSettings(); + } + + public OperationNames getOperationNames() { + return this.operationNames; + } + + public void setOperationNames(final OperationNames operationNames) { + this.operationNames = operationNames; + this.saveSettings(); + } + + public static PropertiesModel getInstance() { + return PropertiesModel.INSTANCE; + } + + public boolean isAdditionalLogChecks() { + return this.additionalLogChecks; + } + + public void setAdditionalLogChecks(final boolean additionalLogChecks) { + this.additionalLogChecks = additionalLogChecks; + this.saveSettings(); + } + + public boolean isActivateRegularExpressions() { + return this.activateRegularExpressions; + } + + public void setActivateRegularExpressions(final boolean activateRegularExpressions) { + this.activateRegularExpressions = activateRegularExpressions; + this.saveSettings(); + } + + public String getGitLabURL() { + return this.gitLabURL; + } + + public String getTracURL() { + return this.tracURL; + } + + /** + * @author Nils Christian Ehmke + */ + public enum ComponentNames { + SHORT, LONG + } + + /** + * @author Nils Christian Ehmke + */ + public enum OperationNames { + SHORT, LONG + } + +} diff --git a/src/main/java/kieker/analysis/traceanalysisutil/Statistics.java b/src/main/java/kieker/analysis/traceanalysisutil/Statistics.java index f4b12930d7002351ee1572ff854087f4f87e4cd3..124693eb05a42725d9d1b7b46129a31d6141eadb 100644 --- a/src/main/java/kieker/analysis/traceanalysisutil/Statistics.java +++ b/src/main/java/kieker/analysis/traceanalysisutil/Statistics.java @@ -1,58 +1,58 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.traceanalysisutil; - -/** - * @author Nils Christian Ehmke - */ -public final class Statistics { - - private final long totalDuration; - private final long meanDuration; - private final long medianDuration; - private final long minDuration; - private final long maxDuration; - - public Statistics(final long totalDuration, final long meanDuration, final long medianDuration, final long minDuration, final long maxDuration) { - this.totalDuration = totalDuration; - this.meanDuration = meanDuration; - this.medianDuration = medianDuration; - this.minDuration = minDuration; - this.maxDuration = maxDuration; - } - - public long getTotalDuration() { - return this.totalDuration; - } - - public long getMeanDuration() { - return this.meanDuration; - } - - public long getMedianDuration() { - return this.medianDuration; - } - - public long getMinDuration() { - return this.minDuration; - } - - public long getMaxDuration() { - return this.maxDuration; - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.traceanalysisutil; + +/** + * @author Nils Christian Ehmke + */ +public final class Statistics { + + private final long totalDuration; + private final long meanDuration; + private final long medianDuration; + private final long minDuration; + private final long maxDuration; + + public Statistics(final long totalDuration, final long meanDuration, final long medianDuration, final long minDuration, final long maxDuration) { + this.totalDuration = totalDuration; + this.meanDuration = meanDuration; + this.medianDuration = medianDuration; + this.minDuration = minDuration; + this.maxDuration = maxDuration; + } + + public long getTotalDuration() { + return this.totalDuration; + } + + public long getMeanDuration() { + return this.meanDuration; + } + + public long getMedianDuration() { + return this.medianDuration; + } + + public long getMinDuration() { + return this.minDuration; + } + + public long getMaxDuration() { + return this.maxDuration; + } + +} diff --git a/src/main/java/kieker/analysis/traceanalysisutil/StatisticsUtility.java b/src/main/java/kieker/analysis/traceanalysisutil/StatisticsUtility.java index ad102345d759ff78b16a8344ca58ab5b41e3d5f3..85a635e15f1275d7ad3cd53b5e8d45a206ea35e5 100644 --- a/src/main/java/kieker/analysis/traceanalysisutil/StatisticsUtility.java +++ b/src/main/java/kieker/analysis/traceanalysisutil/StatisticsUtility.java @@ -1,45 +1,45 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.traceanalysisutil; - -import java.util.Collections; -import java.util.List; - -/** - * @author Nils Christian Ehmke - */ -public final class StatisticsUtility { - - private StatisticsUtility() {} - - public static Statistics calculateStatistics(final List<Long> durations) { - Collections.sort(durations); - - long totalDuration = 0; - for (final Long duration : durations) { - totalDuration += duration; - } - - final long minDuration = durations.get(0); - final long maxDuration = durations.get(durations.size() - 1); - final long meanDuration = totalDuration / durations.size(); - final long medianDuration = durations.get(durations.size() / 2); - - return new Statistics(totalDuration, meanDuration, medianDuration, minDuration, maxDuration); - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.traceanalysisutil; + +import java.util.Collections; +import java.util.List; + +/** + * @author Nils Christian Ehmke + */ +public final class StatisticsUtility { + + private StatisticsUtility() {} + + public static Statistics calculateStatistics(final List<Long> durations) { + Collections.sort(durations); + + long totalDuration = 0; + for (final Long duration : durations) { + totalDuration += duration; + } + + final long minDuration = durations.get(0); + final long maxDuration = durations.get(durations.size() - 1); + final long meanDuration = totalDuration / durations.size(); + final long medianDuration = durations.get(durations.size() / 2); + + return new Statistics(totalDuration, meanDuration, medianDuration, minDuration, maxDuration); + } + +} diff --git a/src/main/java/kieker/analysis/util/DotBuilder.java b/src/main/java/kieker/analysis/util/DotBuilder.java index bc012a52ce74b0e67c0e63c95e8ce08fb855d713..f2a80ddeb5af88607ffd9b4ed18edc97a9325cee 100644 --- a/src/main/java/kieker/analysis/util/DotBuilder.java +++ b/src/main/java/kieker/analysis/util/DotBuilder.java @@ -1,129 +1,129 @@ -package kieker.analysis.util; - -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -import com.google.common.base.Joiner; - -/** - * Simple class for building and representing dot graph files. - * - * @author Sören Henning - * - */ -public class DotBuilder { - - private final String start; - private final String end = "}"; - private final StringBuilder body = new StringBuilder(); - - private Map<String, String> defaultNodeProperties; - private Map<String, String> defaultEdgeProperties; - private Map<String, String> defaultProperties; - - public DotBuilder() { - this("G"); - } - - public DotBuilder(final String name) { - start = "digraph " + name + " {\n"; - } - - public DotBuilder(final String name, final Map<String, String> defaultNodeProperties, final Map<String, String> defaultEdgeProperties) { - this(name); - this.defaultNodeProperties = defaultNodeProperties; - this.defaultEdgeProperties = defaultEdgeProperties; - } - - public DotBuilder(final String name, final Map<String, String> defaultNodeProperties, final Map<String, String> defaultEdgeProperties, - final Map<String, String> defaultProperties) { - this(name, defaultNodeProperties, defaultEdgeProperties); - this.defaultProperties = defaultProperties; - } - - public void setDefaultNodeProperties(final Map<String, String> defaultNodeProperties) { - this.defaultNodeProperties = defaultNodeProperties; - } - - public void setDefaultEdgeProperties(final Map<String, String> defaultEdgeProperties) { - this.defaultEdgeProperties = defaultEdgeProperties; - } - - public void setDefaultProperties(final Map<String, String> defaultProperties) { - this.defaultProperties = defaultProperties; - } - - public String get() { - return start + body.toString() + end; - } - - @Override - public String toString() { - return get(); - } - - public void addNode(final String id) { - addNode(id, new HashMap<>()); - } - - public void addNode(final String id, final String label) { - Map<String, String> properties = new HashMap<String, String>(); - properties.put("label", label); - addNode(id, properties); - } - - public void addNode(final String id, final Map<String, String> properties) { - addElement('"' + id + '"', extendNodeProperties(properties)); - } - - public void addEdge(final String source, final String target) { - addEdge(source, target, new HashMap<>()); - } - - public void addEdge(final String source, final String target, final String label) { - Map<String, String> properties = new HashMap<String, String>(); - properties.put("label", label); - addEdge(source, target, properties); - } - - public void addEdge(final String source, final String target, final Map<String, String> properties) { - addElement('"' + source + '"' + " -> " + '"' + target + '"', extendEdgeProperties(properties)); - } - - private void addElement(final String element, final Map<String, String> properties) { - body.append(element); - if (properties != null && !properties.isEmpty()) { - body.append(" ["); - Joiner.on("\", ").withKeyValueSeparator("=\"").appendTo(body, properties); - body.append("\"]"); - } - body.append('\n'); - } - - private Map<String, String> extendNodeProperties(final Map<String, String> properties) { - return extendElementProperties(properties, defaultNodeProperties); - } - - private Map<String, String> extendEdgeProperties(final Map<String, String> properties) { - return extendElementProperties(properties, defaultEdgeProperties); - } - - private Map<String, String> extendElementProperties(final Map<String, String> properties, final Map<String, String> defaultElementProperties) { - - if (defaultElementProperties != null) { - for (Entry<String, String> property : defaultElementProperties.entrySet()) { - properties.putIfAbsent(property.getKey(), property.getValue()); - } - } - - if (defaultProperties != null) { - for (Entry<String, String> property : defaultProperties.entrySet()) { - properties.putIfAbsent(property.getKey(), property.getValue()); - } - } - - return properties; - } - -} +package kieker.analysis.util; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import com.google.common.base.Joiner; + +/** + * Simple class for building and representing dot graph files. + * + * @author Sören Henning + * + */ +public class DotBuilder { + + private final String start; + private final String end = "}"; + private final StringBuilder body = new StringBuilder(); + + private Map<String, String> defaultNodeProperties; + private Map<String, String> defaultEdgeProperties; + private Map<String, String> defaultProperties; + + public DotBuilder() { + this("G"); + } + + public DotBuilder(final String name) { + start = "digraph " + name + " {\n"; + } + + public DotBuilder(final String name, final Map<String, String> defaultNodeProperties, final Map<String, String> defaultEdgeProperties) { + this(name); + this.defaultNodeProperties = defaultNodeProperties; + this.defaultEdgeProperties = defaultEdgeProperties; + } + + public DotBuilder(final String name, final Map<String, String> defaultNodeProperties, final Map<String, String> defaultEdgeProperties, + final Map<String, String> defaultProperties) { + this(name, defaultNodeProperties, defaultEdgeProperties); + this.defaultProperties = defaultProperties; + } + + public void setDefaultNodeProperties(final Map<String, String> defaultNodeProperties) { + this.defaultNodeProperties = defaultNodeProperties; + } + + public void setDefaultEdgeProperties(final Map<String, String> defaultEdgeProperties) { + this.defaultEdgeProperties = defaultEdgeProperties; + } + + public void setDefaultProperties(final Map<String, String> defaultProperties) { + this.defaultProperties = defaultProperties; + } + + public String get() { + return start + body.toString() + end; + } + + @Override + public String toString() { + return get(); + } + + public void addNode(final String id) { + addNode(id, new HashMap<>()); + } + + public void addNode(final String id, final String label) { + Map<String, String> properties = new HashMap<String, String>(); + properties.put("label", label); + addNode(id, properties); + } + + public void addNode(final String id, final Map<String, String> properties) { + addElement('"' + id + '"', extendNodeProperties(properties)); + } + + public void addEdge(final String source, final String target) { + addEdge(source, target, new HashMap<>()); + } + + public void addEdge(final String source, final String target, final String label) { + Map<String, String> properties = new HashMap<String, String>(); + properties.put("label", label); + addEdge(source, target, properties); + } + + public void addEdge(final String source, final String target, final Map<String, String> properties) { + addElement('"' + source + '"' + " -> " + '"' + target + '"', extendEdgeProperties(properties)); + } + + private void addElement(final String element, final Map<String, String> properties) { + body.append(element); + if (properties != null && !properties.isEmpty()) { + body.append(" ["); + Joiner.on("\", ").withKeyValueSeparator("=\"").appendTo(body, properties); + body.append("\"]"); + } + body.append('\n'); + } + + private Map<String, String> extendNodeProperties(final Map<String, String> properties) { + return extendElementProperties(properties, defaultNodeProperties); + } + + private Map<String, String> extendEdgeProperties(final Map<String, String> properties) { + return extendElementProperties(properties, defaultEdgeProperties); + } + + private Map<String, String> extendElementProperties(final Map<String, String> properties, final Map<String, String> defaultElementProperties) { + + if (defaultElementProperties != null) { + for (Entry<String, String> property : defaultElementProperties.entrySet()) { + properties.putIfAbsent(property.getKey(), property.getValue()); + } + } + + if (defaultProperties != null) { + for (Entry<String, String> property : defaultProperties.entrySet()) { + properties.putIfAbsent(property.getKey(), property.getValue()); + } + } + + return properties; + } + +} diff --git a/src/main/java/kieker/analysis/util/Mapper.java b/src/main/java/kieker/analysis/util/Mapper.java index 989c1b89441a87723cd53607799d0019046cec83..f3f3a46c6b1638c16c91cb03be10ab401a97fc85 100644 --- a/src/main/java/kieker/analysis/util/Mapper.java +++ b/src/main/java/kieker/analysis/util/Mapper.java @@ -1,83 +1,83 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.util; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author Nils Christian Ehmke - * - * @param <I> - * The type of the keys. - * @param <O> - * The type of the values. - */ -public final class Mapper<I, O> extends HashMap<I, O> { - - private static final long serialVersionUID = 1L; - private O defaultValue; - - public To map(final I key) { - return new To(key); - } - - public To mapPerDefault() { - return new To(); - } - - public O resolve(final I key) { - if (super.containsKey(key)) { - return super.get(key); - } else { - return this.defaultValue; - } - } - - public I invertedResolve(final O value) { - return super.entrySet().parallelStream().filter(entry -> value.equals(entry.getValue())).map(Map.Entry::getKey).findFirst().orElse(null); - } - - /** - * @author Nils Christian Ehmke - */ - public final class To { - - private final I key; - private final boolean keyAvailable; - - protected To(final I key) { - this.key = key; - this.keyAvailable = true; - } - - protected To() { - this.key = null; - this.keyAvailable = false; - } - - public void to(final O value) { - if (this.keyAvailable) { - Mapper.super.put(this.key, value); - } else { - Mapper.this.defaultValue = value; - } - } - - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.util; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author Nils Christian Ehmke + * + * @param <I> + * The type of the keys. + * @param <O> + * The type of the values. + */ +public final class Mapper<I, O> extends HashMap<I, O> { + + private static final long serialVersionUID = 1L; + private O defaultValue; + + public To map(final I key) { + return new To(key); + } + + public To mapPerDefault() { + return new To(); + } + + public O resolve(final I key) { + if (super.containsKey(key)) { + return super.get(key); + } else { + return this.defaultValue; + } + } + + public I invertedResolve(final O value) { + return super.entrySet().parallelStream().filter(entry -> value.equals(entry.getValue())).map(Map.Entry::getKey).findFirst().orElse(null); + } + + /** + * @author Nils Christian Ehmke + */ + public final class To { + + private final I key; + private final boolean keyAvailable; + + protected To(final I key) { + this.key = key; + this.keyAvailable = true; + } + + protected To() { + this.key = null; + this.keyAvailable = false; + } + + public void to(final O value) { + if (this.keyAvailable) { + Mapper.super.put(this.key, value); + } else { + Mapper.this.defaultValue = value; + } + } + + } + +} diff --git a/src/main/java/kieker/analysis/util/NameConverter.java b/src/main/java/kieker/analysis/util/NameConverter.java index 7036075e87acfbe5e3253c9ff919235a826ce9ad..df533b807c55899af81f2f8319430ea5f1834633 100644 --- a/src/main/java/kieker/analysis/util/NameConverter.java +++ b/src/main/java/kieker/analysis/util/NameConverter.java @@ -1,60 +1,60 @@ -/*************************************************************************** - * Copyright 2015 Kieker Project (http://kieker-monitoring.net) - * - * 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 kieker.analysis.util; - -import java.util.concurrent.TimeUnit; - -/** - * @author Nils Christian Ehmke - */ -public final class NameConverter { - - private static Mapper<TimeUnit, String> shortTimeUnitMapper = new Mapper<>(); - - private NameConverter() {} - - static { - initializeMapper(); - } - - private static void initializeMapper() { - NameConverter.shortTimeUnitMapper.map(TimeUnit.NANOSECONDS).to("ns"); - NameConverter.shortTimeUnitMapper.map(TimeUnit.MICROSECONDS).to("us"); - NameConverter.shortTimeUnitMapper.map(TimeUnit.MILLISECONDS).to("ms"); - NameConverter.shortTimeUnitMapper.map(TimeUnit.SECONDS).to("s"); - NameConverter.shortTimeUnitMapper.map(TimeUnit.MINUTES).to("m"); - NameConverter.shortTimeUnitMapper.map(TimeUnit.HOURS).to("h"); - NameConverter.shortTimeUnitMapper.map(TimeUnit.DAYS).to("d"); - NameConverter.shortTimeUnitMapper.mapPerDefault().to(""); - } - - public static String toShortTimeUnit(final TimeUnit timeUnit) { - return NameConverter.shortTimeUnitMapper.resolve(timeUnit); - } - - public static String toShortComponentName(final String componentName) { - final int lastPointPos = componentName.lastIndexOf('.'); - return componentName.substring(lastPointPos + 1); - } - - public static String toShortOperationName(final String operationName) { - final String result = operationName.replaceAll("\\(.*\\)", "(...)"); - final int lastPointPos = result.lastIndexOf('.', result.length() - 5); - return result.substring(lastPointPos + 1); - } - -} +/*************************************************************************** + * Copyright 2015 Kieker Project (http://kieker-monitoring.net) + * + * 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 kieker.analysis.util; + +import java.util.concurrent.TimeUnit; + +/** + * @author Nils Christian Ehmke + */ +public final class NameConverter { + + private static Mapper<TimeUnit, String> shortTimeUnitMapper = new Mapper<>(); + + private NameConverter() {} + + static { + initializeMapper(); + } + + private static void initializeMapper() { + NameConverter.shortTimeUnitMapper.map(TimeUnit.NANOSECONDS).to("ns"); + NameConverter.shortTimeUnitMapper.map(TimeUnit.MICROSECONDS).to("us"); + NameConverter.shortTimeUnitMapper.map(TimeUnit.MILLISECONDS).to("ms"); + NameConverter.shortTimeUnitMapper.map(TimeUnit.SECONDS).to("s"); + NameConverter.shortTimeUnitMapper.map(TimeUnit.MINUTES).to("m"); + NameConverter.shortTimeUnitMapper.map(TimeUnit.HOURS).to("h"); + NameConverter.shortTimeUnitMapper.map(TimeUnit.DAYS).to("d"); + NameConverter.shortTimeUnitMapper.mapPerDefault().to(""); + } + + public static String toShortTimeUnit(final TimeUnit timeUnit) { + return NameConverter.shortTimeUnitMapper.resolve(timeUnit); + } + + public static String toShortComponentName(final String componentName) { + final int lastPointPos = componentName.lastIndexOf('.'); + return componentName.substring(lastPointPos + 1); + } + + public static String toShortOperationName(final String operationName) { + final String result = operationName.replaceAll("\\(.*\\)", "(...)"); + final int lastPointPos = result.lastIndexOf('.', result.length() - 5); + return result.substring(lastPointPos + 1); + } + +} diff --git a/src/main/java/kieker/analysis/util/graph/NamedGraph.java b/src/main/java/kieker/analysis/util/graph/NamedGraph.java index 1169de0da884604f015baeecdf4ddced0a6b640c..1025ec8a71b5f26cd0de2ae1f546c8951f01dc7f 100644 --- a/src/main/java/kieker/analysis/util/graph/NamedGraph.java +++ b/src/main/java/kieker/analysis/util/graph/NamedGraph.java @@ -1,34 +1,34 @@ -package kieker.analysis.util.graph; - -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.util.wrappers.wrapped.WrappedGraph; - -public class NamedGraph<T extends Graph> extends WrappedGraph<T> { - - private String name; - - private String fileName; - - public NamedGraph(final String name, final String fileName, final T baseGraph) { - super(baseGraph); - this.name = name; - this.fileName = fileName; - } - - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(final String fileName) { - this.fileName = fileName; - } - -} +package kieker.analysis.util.graph; + +import com.tinkerpop.blueprints.Graph; +import com.tinkerpop.blueprints.util.wrappers.wrapped.WrappedGraph; + +public class NamedGraph<T extends Graph> extends WrappedGraph<T> { + + private String name; + + private String fileName; + + public NamedGraph(final String name, final String fileName, final T baseGraph) { + super(baseGraph); + this.name = name; + this.fileName = fileName; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(final String fileName) { + this.fileName = fileName; + } + +} diff --git a/src/main/java/kieker/common/exception/IllegalRecordFormatException.java b/src/main/java/kieker/common/exception/IllegalRecordFormatException.java index 47462421ee71adb131f8e41132d7db72201db905..0ecc67bd51d26de78c190fddc12fcb3e279c2028 100644 --- a/src/main/java/kieker/common/exception/IllegalRecordFormatException.java +++ b/src/main/java/kieker/common/exception/IllegalRecordFormatException.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/common/exception/MonitoringRecordException.java b/src/main/java/kieker/common/exception/MonitoringRecordException.java index c30cbe3bb8762742361d4349d2c75993f9fb6202..5acb6a7fb95e81dc06dce3a6093526129dc981c6 100644 --- a/src/main/java/kieker/common/exception/MonitoringRecordException.java +++ b/src/main/java/kieker/common/exception/MonitoringRecordException.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/kieker/common/exception/UnknownRecordTypeException.java b/src/main/java/kieker/common/exception/UnknownRecordTypeException.java index e92f42ae25809245ef33b2d0af8442a2b56ff520..6540a9b24d58df2cf0676b4e738d7109c88aaf2c 100644 --- a/src/main/java/kieker/common/exception/UnknownRecordTypeException.java +++ b/src/main/java/kieker/common/exception/UnknownRecordTypeException.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/framework/Pipeline.java b/src/main/java/teetime/framework/Pipeline.java index efe021216f497e95b7f14a66cde655dea4df029c..9453c2a656d254edcdaa40ddc817b03c7b27da47 100644 --- a/src/main/java/teetime/framework/Pipeline.java +++ b/src/main/java/teetime/framework/Pipeline.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,7 @@ import java.util.List; * the type of the last stage in this pipeline */ // TODO Consider to move it in the framework -public final class Pipeline<L extends AbstractStage> extends AbstractCompositeStage { +public final class Pipeline<L extends AbstractStage> extends CompositeStage { private final AbstractStage firstStage; private final List<L> lastStages = new LinkedList<L>(); diff --git a/src/main/java/teetime/stage/className/ClassNameRegistry.java b/src/main/java/teetime/stage/className/ClassNameRegistry.java index d0fd1993a1ad2d17393695beb9564859b2e5b1d6..d1045e98934276a4a3ef02af707ef0ad04c018ff 100644 --- a/src/main/java/teetime/stage/className/ClassNameRegistry.java +++ b/src/main/java/teetime/stage/className/ClassNameRegistry.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/className/ClassNameRegistryCreationFilter.java b/src/main/java/teetime/stage/className/ClassNameRegistryCreationFilter.java index e93e5df6c485a49759d72b6b715c63922b3e16b7..5092cf34b724cc2c9ea86ded2cd359b32cb70be4 100644 --- a/src/main/java/teetime/stage/className/ClassNameRegistryCreationFilter.java +++ b/src/main/java/teetime/stage/className/ClassNameRegistryCreationFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/className/ClassNameRegistryRepository.java b/src/main/java/teetime/stage/className/ClassNameRegistryRepository.java index f3e466ae6eaa71b04c5eb39f88fba49aa45d0e14..a23dac2223a254c35fad22cc20e923202501584a 100644 --- a/src/main/java/teetime/stage/className/ClassNameRegistryRepository.java +++ b/src/main/java/teetime/stage/className/ClassNameRegistryRepository.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/className/MappingFileParser.java b/src/main/java/teetime/stage/className/MappingFileParser.java index 4faaeab23c536e9f09e4cfe9651ce02ab8b6c904..31bfd47a6997626cc993df0fd4e1eb9c29805f61 100644 --- a/src/main/java/teetime/stage/className/MappingFileParser.java +++ b/src/main/java/teetime/stage/className/MappingFileParser.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/explorviz/KiekerRecordTcpReader.java b/src/main/java/teetime/stage/explorviz/KiekerRecordTcpReader.java index 7aa25cf5a6a4f7dc5b99db9ff5d75a75430130c5..ddff566edc5d942a6d057163dd9840b1f19857e6 100644 --- a/src/main/java/teetime/stage/explorviz/KiekerRecordTcpReader.java +++ b/src/main/java/teetime/stage/explorviz/KiekerRecordTcpReader.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/io/database/DbReader.java b/src/main/java/teetime/stage/io/database/DbReader.java index b8b56db2d96d92f0521dc7354c6e2a7b38728a7c..9509a6611ae2634d8ae68fd130e45e6b2430d4cd 100644 --- a/src/main/java/teetime/stage/io/database/DbReader.java +++ b/src/main/java/teetime/stage/io/database/DbReader.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/io/filesystem/AbstractRecordFileReader.java b/src/main/java/teetime/stage/io/filesystem/AbstractRecordFileReader.java index 4dee77a9e7387666ef103b80ef2578f2f0a0b1b4..d4f0e9fb7f4f1e08f7c2d1aafbe74beb81f731f9 100644 --- a/src/main/java/teetime/stage/io/filesystem/AbstractRecordFileReader.java +++ b/src/main/java/teetime/stage/io/filesystem/AbstractRecordFileReader.java @@ -1,3 +1,18 @@ +/** + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) + * + * 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 teetime.stage.io.filesystem; import java.io.File; diff --git a/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java b/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java index 37671f222e0f1a5213deed77227e99f755d9b694..51d8d1c91e2f8a342941820883a6e6c536b08575 100644 --- a/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java +++ b/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ package teetime.stage.io.filesystem; import java.io.File; -import teetime.framework.AbstractCompositeStage; +import teetime.framework.CompositeStage; import teetime.framework.InputPort; import teetime.framework.OutputPort; import teetime.framework.AbstractStage; @@ -38,7 +38,7 @@ import kieker.common.util.filesystem.FSUtil; * * @since 1.0 */ -public final class Dir2RecordsFilter extends AbstractCompositeStage { +public final class Dir2RecordsFilter extends CompositeStage { private final ClassNameRegistryCreationFilter classNameRegistryCreationFilter; private final Merger<IMonitoringRecord> recordMerger; diff --git a/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java index 26f72fc33f5c5a4a7a4339fa77a710ad6938d3f9..f8cdb52d87e68f338fff857e0884aa9537d825ea 100644 --- a/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java +++ b/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ package teetime.stage.io.filesystem.format.binary; import java.io.File; -import teetime.framework.AbstractCompositeStage; +import teetime.framework.CompositeStage; import teetime.framework.InputPort; import teetime.framework.OutputPort; import teetime.framework.AbstractStage; @@ -27,7 +27,7 @@ import teetime.stage.io.filesystem.format.binary.file.BinaryFile2RecordFilter; import kieker.common.record.IMonitoringRecord; -public class DirWithBin2RecordFilter extends AbstractCompositeStage { +public class DirWithBin2RecordFilter extends CompositeStage { private final ClassNameRegistryCreationFilter classNameRegistryCreationFilter; private final BinaryFile2RecordFilter binaryFile2RecordFilter; diff --git a/src/main/java/teetime/stage/io/filesystem/format/binary/file/BinaryFile2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/binary/file/BinaryFile2RecordFilter.java index f90064fbf075c5aa91ef7a0013e87d11ac9c3732..d8a22578df5ee03c02e6da61c01176c24ca94e76 100644 --- a/src/main/java/teetime/stage/io/filesystem/format/binary/file/BinaryFile2RecordFilter.java +++ b/src/main/java/teetime/stage/io/filesystem/format/binary/file/BinaryFile2RecordFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/io/filesystem/format/binary/file/RecordFromBinaryFileCreator.java b/src/main/java/teetime/stage/io/filesystem/format/binary/file/RecordFromBinaryFileCreator.java index 6c3293ddac57f4b662031f38eeb7e0c1e881246a..3e2a91d501f9cf8e3cde4b0e1db92a0cd1622833 100644 --- a/src/main/java/teetime/stage/io/filesystem/format/binary/file/RecordFromBinaryFileCreator.java +++ b/src/main/java/teetime/stage/io/filesystem/format/binary/file/RecordFromBinaryFileCreator.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java index 0bdc1c0027f48185e3403fb6d210772c4efe296d..55d6a77f0a2aa7941afa713cefc85e5490a46dda 100644 --- a/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java +++ b/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ package teetime.stage.io.filesystem.format.text.file; import java.io.File; -import teetime.framework.AbstractCompositeStage; +import teetime.framework.CompositeStage; import teetime.framework.InputPort; import teetime.framework.OutputPort; import teetime.framework.AbstractStage; @@ -31,7 +31,7 @@ import kieker.common.record.IMonitoringRecord; * * @since 1.10 */ -public class DatFile2RecordFilter extends AbstractCompositeStage { +public class DatFile2RecordFilter extends CompositeStage { private final File2TextLinesFilter file2TextLinesFilter; private final TextLine2RecordFilter textLine2RecordFilter; diff --git a/src/main/java/teetime/stage/io/filesystem/format/text/file/RecordFromTextLineCreator.java b/src/main/java/teetime/stage/io/filesystem/format/text/file/RecordFromTextLineCreator.java index 341e27da65e847ef8ebcb36c70c80d7845b5d296..c4c043d6e80d33a6916f81c7c4c50da877cf220b 100644 --- a/src/main/java/teetime/stage/io/filesystem/format/text/file/RecordFromTextLineCreator.java +++ b/src/main/java/teetime/stage/io/filesystem/format/text/file/RecordFromTextLineCreator.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2MappingRegistryFilter.java b/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2MappingRegistryFilter.java index c51fcfbe1d0bafd406812e204b56165a48ed7254..638594e12e376ad5e0b4298c8a69ee6a939eb15a 100644 --- a/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2MappingRegistryFilter.java +++ b/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2MappingRegistryFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2RecordFilter.java index 3d1f52d501c905cc880ea5be10a69e6cb54fbdd0..44418b9952abd0fb1bf2813c08091146c2cdc694 100644 --- a/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2RecordFilter.java +++ b/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2RecordFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ import teetime.framework.AbstractConsumerStage; import teetime.framework.OutputPort; import teetime.stage.className.ClassNameRegistryRepository; import teetime.stage.util.MappingException; -import teetime.stage.util.TextLine; +import teetime.stage.util.TextLineContainer; import kieker.common.exception.IllegalRecordFormatException; import kieker.common.exception.MonitoringRecordException; @@ -34,7 +34,7 @@ import kieker.common.record.IMonitoringRecord; * * @since 1.10 */ -public class TextLine2RecordFilter extends AbstractConsumerStage<TextLine> { +public class TextLine2RecordFilter extends AbstractConsumerStage<TextLineContainer> { private final OutputPort<IMonitoringRecord> outputPort = this.createOutputPort(); @@ -77,7 +77,7 @@ public class TextLine2RecordFilter extends AbstractConsumerStage<TextLine> { } @Override - protected void execute(final TextLine textLine) { + protected void execute(final TextLineContainer textLine) { try { final IMonitoringRecord record = this.recordFromTextLineCreator.createRecordFromLine(textLine.getTextFile(), textLine.getTextLine()); outputPort.send(record); diff --git a/src/main/java/teetime/stage/io/network/TcpReaderStage.java b/src/main/java/teetime/stage/io/network/TcpReaderStage.java index 85a80e2c14d7d995fda54649998837f37dd9b844..fc200fcae05cfca094bdd6445d20da9b1573f1b8 100644 --- a/src/main/java/teetime/stage/io/network/TcpReaderStage.java +++ b/src/main/java/teetime/stage/io/network/TcpReaderStage.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/logReplayer/filter/MonitoringRecordLoggerFilter.java b/src/main/java/teetime/stage/logReplayer/filter/MonitoringRecordLoggerFilter.java index bab2d54284bf6a293f1da04ec6e71bc587c37c5c..5324e66e5fc9bf8034ac88ed2042842a47477e86 100644 --- a/src/main/java/teetime/stage/logReplayer/filter/MonitoringRecordLoggerFilter.java +++ b/src/main/java/teetime/stage/logReplayer/filter/MonitoringRecordLoggerFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/opad/filter/AnomalyDetectionFilter.java b/src/main/java/teetime/stage/opad/filter/AnomalyDetectionFilter.java index 8b6184d8b2c95accb4593280d751e2cff4b1206f..9e637f6982dddde640d24a591f1333fceb1a2774 100644 --- a/src/main/java/teetime/stage/opad/filter/AnomalyDetectionFilter.java +++ b/src/main/java/teetime/stage/opad/filter/AnomalyDetectionFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/opad/filter/RecordConverter.java b/src/main/java/teetime/stage/opad/filter/RecordConverter.java index 2fd889bbba09819837d72ad7d69692223c71eca1..43f624768111000c8e65e8fdd27ea4867ce7b0fb 100644 --- a/src/main/java/teetime/stage/opad/filter/RecordConverter.java +++ b/src/main/java/teetime/stage/opad/filter/RecordConverter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/opad/filter/StorableDetectionResultExtender.java b/src/main/java/teetime/stage/opad/filter/StorableDetectionResultExtender.java index a70cbdc51f7e184ae737e4e5ef61427ecd0845f9..83464a663abcd65a0e56c6710b745fac7aa9f78e 100644 --- a/src/main/java/teetime/stage/opad/filter/StorableDetectionResultExtender.java +++ b/src/main/java/teetime/stage/opad/filter/StorableDetectionResultExtender.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/string/buffer/StringBufferFilter.java b/src/main/java/teetime/stage/string/buffer/StringBufferFilter.java index cd187eff2679e60fff5a7312b88c35b585d24064..919e89def0676ec17784969cd27abc391f4fda22 100644 --- a/src/main/java/teetime/stage/string/buffer/StringBufferFilter.java +++ b/src/main/java/teetime/stage/string/buffer/StringBufferFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/string/buffer/handler/AbstractDataTypeHandler.java b/src/main/java/teetime/stage/string/buffer/handler/AbstractDataTypeHandler.java index 6f4540cdfd1040c94e2971142543a29d4f4a2a59..07749f4678e46f9b136a582d87be47b50d27dbbf 100644 --- a/src/main/java/teetime/stage/string/buffer/handler/AbstractDataTypeHandler.java +++ b/src/main/java/teetime/stage/string/buffer/handler/AbstractDataTypeHandler.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/string/buffer/handler/MonitoringRecordHandler.java b/src/main/java/teetime/stage/string/buffer/handler/MonitoringRecordHandler.java index cc661228d0306f9ef2601d159d27156a0a4557dd..df5c098888bd76c9f91551f7db5eb7a713b28b20 100644 --- a/src/main/java/teetime/stage/string/buffer/handler/MonitoringRecordHandler.java +++ b/src/main/java/teetime/stage/string/buffer/handler/MonitoringRecordHandler.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/string/buffer/handler/StringHandler.java b/src/main/java/teetime/stage/string/buffer/handler/StringHandler.java index bef40e5d09b74761661ad93725f3342d902c0edc..9253568591268527da81a55fee55a13cfb36cefb 100644 --- a/src/main/java/teetime/stage/string/buffer/handler/StringHandler.java +++ b/src/main/java/teetime/stage/string/buffer/handler/StringHandler.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/string/buffer/util/KiekerHashMap.java b/src/main/java/teetime/stage/string/buffer/util/KiekerHashMap.java index e6930b7c50de9b99309a31e20f9fb13dc18a6b16..b603d3e0868dc796c76ae20937386b4c6c24f59b 100644 --- a/src/main/java/teetime/stage/string/buffer/util/KiekerHashMap.java +++ b/src/main/java/teetime/stage/string/buffer/util/KiekerHashMap.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/trace/traceReconstruction/EventBasedTrace.java b/src/main/java/teetime/stage/trace/traceReconstruction/EventBasedTrace.java index 973a99cb71b3bb7a3bd100406625a1f40a649961..7979c1efddab4ed090927f39dbc809c4d49677ba 100644 --- a/src/main/java/teetime/stage/trace/traceReconstruction/EventBasedTrace.java +++ b/src/main/java/teetime/stage/trace/traceReconstruction/EventBasedTrace.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/trace/traceReconstruction/EventBasedTraceFactory.java b/src/main/java/teetime/stage/trace/traceReconstruction/EventBasedTraceFactory.java index bbbae5deb99d09c82a8e049ca21df0fc3a2ec3f5..d96c44d70bcda844f72b54029eebe92a7cbc0dee 100644 --- a/src/main/java/teetime/stage/trace/traceReconstruction/EventBasedTraceFactory.java +++ b/src/main/java/teetime/stage/trace/traceReconstruction/EventBasedTraceFactory.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/trace/traceReconstruction/TraceReconstructionFilter.java b/src/main/java/teetime/stage/trace/traceReconstruction/TraceReconstructionFilter.java index 2e86a73438625e4c9441ae0f6caaad8381883acd..ae9a4aae3298552c691a7e4410f9f1305b8b478d 100644 --- a/src/main/java/teetime/stage/trace/traceReconstruction/TraceReconstructionFilter.java +++ b/src/main/java/teetime/stage/trace/traceReconstruction/TraceReconstructionFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/trace/traceReduction/EventBasedTraceComperator.java b/src/main/java/teetime/stage/trace/traceReduction/EventBasedTraceComperator.java index 117046bbd66f214c11ebbf4ed3e8257fdc1b36b0..0bd52f00f4ccd5d1981221b0dfea25636021aa3c 100644 --- a/src/main/java/teetime/stage/trace/traceReduction/EventBasedTraceComperator.java +++ b/src/main/java/teetime/stage/trace/traceReduction/EventBasedTraceComperator.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/trace/traceReduction/TraceAggregationBuffer.java b/src/main/java/teetime/stage/trace/traceReduction/TraceAggregationBuffer.java index bb341593baf9e58fb2e38184594a4313628945e8..f8b3d23b875bcdf260fe97a180a90ca996d4fe8f 100644 --- a/src/main/java/teetime/stage/trace/traceReduction/TraceAggregationBuffer.java +++ b/src/main/java/teetime/stage/trace/traceReduction/TraceAggregationBuffer.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/stage/trace/traceReduction/TraceReductionFilter.java b/src/main/java/teetime/stage/trace/traceReduction/TraceReductionFilter.java index beeb2805cf79e8f321c6be3f7040916d0c136f83..0a9a9d9f245996ae6bd86057c19be0fd9b5f3acc 100644 --- a/src/main/java/teetime/stage/trace/traceReduction/TraceReductionFilter.java +++ b/src/main/java/teetime/stage/trace/traceReduction/TraceReductionFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/AbstractProfiledPerformanceAssertion.java b/src/main/java/teetime/util/AbstractProfiledPerformanceAssertion.java index e648fe87aea4fc9609bc2a90466dda5c92e3a94d..7cd3ea375375161cd9df8dfab30a7c255f5768de 100644 --- a/src/main/java/teetime/util/AbstractProfiledPerformanceAssertion.java +++ b/src/main/java/teetime/util/AbstractProfiledPerformanceAssertion.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/BucketTimingsReader.java b/src/main/java/teetime/util/BucketTimingsReader.java index 98390610381f562ce56bff7197fcc19f5361dbc4..4a2db5b534d9edf6ba1b5a1aafdcde4cb6209cb0 100644 --- a/src/main/java/teetime/util/BucketTimingsReader.java +++ b/src/main/java/teetime/util/BucketTimingsReader.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/ConcurrentHashMapWithDefault.java b/src/main/java/teetime/util/ConcurrentHashMapWithDefault.java index bcf0dd4ec67de1e8e1e3c1701fbadabe93e80417..f4eb6daa86a9a126d179bcc277b5ee7ee3fb12fd 100644 --- a/src/main/java/teetime/util/ConcurrentHashMapWithDefault.java +++ b/src/main/java/teetime/util/ConcurrentHashMapWithDefault.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/HashMapWithDefault.java b/src/main/java/teetime/util/HashMapWithDefault.java index a6aceab72439130f5e36cd1b45065ccaafbd1b61..89ec2aec0cbad21d6b9defbfb9d2a98f4f16db04 100644 --- a/src/main/java/teetime/util/HashMapWithDefault.java +++ b/src/main/java/teetime/util/HashMapWithDefault.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/ISendTraceAggregationBuffer.java b/src/main/java/teetime/util/ISendTraceAggregationBuffer.java index 743392964f76d22fa7398cb7a33ed97fb490392b..aef117cd2e1e715e3f1918ec7e44641d4e7cacbe 100644 --- a/src/main/java/teetime/util/ISendTraceAggregationBuffer.java +++ b/src/main/java/teetime/util/ISendTraceAggregationBuffer.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/ISendTraceBuffer.java b/src/main/java/teetime/util/ISendTraceBuffer.java index ffd6247a1a55a942d6ce591926c9b092a0db1a5c..323ad4683a73413f451d64989063a7cf3ace9957 100644 --- a/src/main/java/teetime/util/ISendTraceBuffer.java +++ b/src/main/java/teetime/util/ISendTraceBuffer.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/MathUtil.java b/src/main/java/teetime/util/MathUtil.java index e7f3761679acb73dac02c29930516636d1ea79ea..3596f7ef96b175c8236f5e4cbdde5ee792899e1f 100644 --- a/src/main/java/teetime/util/MathUtil.java +++ b/src/main/java/teetime/util/MathUtil.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/MeasurementRepository.java b/src/main/java/teetime/util/MeasurementRepository.java index 41a32ebf2faac43dc3f919759da6a7ce2a50548e..144ccce7a45e1009ee550425415a6bbda7e6d841 100644 --- a/src/main/java/teetime/util/MeasurementRepository.java +++ b/src/main/java/teetime/util/MeasurementRepository.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/PerformanceCheckProfileRepository.java b/src/main/java/teetime/util/PerformanceCheckProfileRepository.java index 74d19c899ce1b79899e167e6fe1317a50d50089b..7ad35d6e5ce2d151351e620270a2cc3d45797726 100644 --- a/src/main/java/teetime/util/PerformanceCheckProfileRepository.java +++ b/src/main/java/teetime/util/PerformanceCheckProfileRepository.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/PerformanceResult.java b/src/main/java/teetime/util/PerformanceResult.java index 4066af2d013cd94b89bd6d9c75f89ea2123ddfa2..d9843be03984eb13f540b8aa23c8f692a95456a5 100644 --- a/src/main/java/teetime/util/PerformanceResult.java +++ b/src/main/java/teetime/util/PerformanceResult.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/StatisticsUtil.java b/src/main/java/teetime/util/StatisticsUtil.java index 46d13ecf0b9de8e0b6f5eba3db902b87f17e4008..252dd5e718419cdd47a4e2504b143a4749262ea2 100644 --- a/src/main/java/teetime/util/StatisticsUtil.java +++ b/src/main/java/teetime/util/StatisticsUtil.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/TraceReconstructor.java b/src/main/java/teetime/util/TraceReconstructor.java index c8ce1510972446636be285adff7f0ec062ae2e80..66882972f77febbb6ea3920385cfa69b5ca43b4d 100644 --- a/src/main/java/teetime/util/TraceReconstructor.java +++ b/src/main/java/teetime/util/TraceReconstructor.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/TraceReductor.java b/src/main/java/teetime/util/TraceReductor.java index aa58af1b18bb350f94b5f234e02f49681ca6956c..ca77232cfd04ad228fcee3b4271c94f7c8105487 100644 --- a/src/main/java/teetime/util/TraceReductor.java +++ b/src/main/java/teetime/util/TraceReductor.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/ValueFactory.java b/src/main/java/teetime/util/ValueFactory.java index 90b30a9f91a761e7a95efb58f0ea67f7e3074770..9e036f4ea1af34d0d75ea67768ff3ad0da7c57bf 100644 --- a/src/main/java/teetime/util/ValueFactory.java +++ b/src/main/java/teetime/util/ValueFactory.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/teetime/util/network/AbstractRecordTcpReader.java b/src/main/java/teetime/util/network/AbstractRecordTcpReader.java index f1a610478f77f5f880e975e3c4a9657c53ede1a6..4011edd60bd5757c5e3164f77d1c8ebc3dbf9fb1 100644 --- a/src/main/java/teetime/util/network/AbstractRecordTcpReader.java +++ b/src/main/java/teetime/util/network/AbstractRecordTcpReader.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputAnalysisTest.java b/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputAnalysisTest.java index 73960ed03b490efa0403f166948840bbb2e13c29..0e93232433b23c34d3cdf2632ebc69fbec07b9e1 100644 --- a/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputAnalysisTest.java +++ b/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputAnalysisTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputTimestampAnalysisTest.java b/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputTimestampAnalysisTest.java index 58cfe432af91d986d46ac315d6e853a76468811e..46aa8b5cc39c790737d77b8fd46fb72c2040fc7c 100644 --- a/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputTimestampAnalysisTest.java +++ b/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputTimestampAnalysisTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/kieker/analysis/stage/EmptyPassOnFilterTest.java b/src/performancetest/java/kieker/analysis/stage/EmptyPassOnFilterTest.java index c19e32a444f8778fde43c9f3aca3f35ea923a1f3..8dadd24fad8beea487655432eade4b29d301097b 100644 --- a/src/performancetest/java/kieker/analysis/stage/EmptyPassOnFilterTest.java +++ b/src/performancetest/java/kieker/analysis/stage/EmptyPassOnFilterTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/recordReader/RecordReaderAnalysisTest.java b/src/performancetest/java/teetime/examples/recordReader/RecordReaderAnalysisTest.java index 8b558ac5e74a8233e12e364650aee1f9e8cce110..ca8359236ae941f93cc611d60a726da7e00062fb 100644 --- a/src/performancetest/java/teetime/examples/recordReader/RecordReaderAnalysisTest.java +++ b/src/performancetest/java/teetime/examples/recordReader/RecordReaderAnalysisTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java b/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java index d68de9b9d180257b4e323d8660cdf3a995f066b2..dfe4a1659567e3f8afeb822029c0322e5b976803 100644 --- a/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java +++ b/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReading/ChwHomeTcpTraceReadingTest.java b/src/performancetest/java/teetime/examples/traceReading/ChwHomeTcpTraceReadingTest.java index 67f7a4859b1d500d06124d230fc3c2b289263590..8b233bd86b34d130f413024248b02171c84d7734 100644 --- a/src/performancetest/java/teetime/examples/traceReading/ChwHomeTcpTraceReadingTest.java +++ b/src/performancetest/java/teetime/examples/traceReading/ChwHomeTcpTraceReadingTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysisConfiguration.java b/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysisConfiguration.java index 85e6215cbde9710ab1fbcd249682eb13e18c57b5..4cebbf4f86b1f2ef4c99fd0a0696609f6b2a2ad4 100644 --- a/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysisConfiguration.java +++ b/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysisConfiguration.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTcpTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTcpTraceReconstructionAnalysisTest.java index 20ab0fad19dd2c37358386fe070ddb9ccd64b6f7..7b88830f1a1dd41e821bcb57c048f53afb744a11 100644 --- a/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTcpTraceReconstructionAnalysisTest.java +++ b/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTcpTraceReconstructionAnalysisTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTraceReconstructionAnalysisTest.java index 729e2be0b5abebd24bb371ab94556f5abddd4085..b40a587518e2ac839b3e98cade11172e34129d4a 100644 --- a/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTraceReconstructionAnalysisTest.java +++ b/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTraceReconstructionAnalysisTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTcpTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTcpTraceReconstructionAnalysisTest.java index a8c6f5005b88bf8174536b4642ecc863a609db5b..b24f7e6b18da9c52a32a6a9be3db64caf92adbfc 100644 --- a/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTcpTraceReconstructionAnalysisTest.java +++ b/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTcpTraceReconstructionAnalysisTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTraceReconstructionAnalysisTest.java index d2d77bb0327d8b0fbaf82b03b07f5a0cfe8e4fd9..d1d198cd0ce8775c3361f23e74133a4e2d161634 100644 --- a/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTraceReconstructionAnalysisTest.java +++ b/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTraceReconstructionAnalysisTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/KiekerTraceReconstructionAnalysis.java b/src/performancetest/java/teetime/examples/traceReconstruction/KiekerTraceReconstructionAnalysis.java index 547ba0a31c66ffe7435a458c2bb91bfbcdd1b6cf..a47188c33c8131a1bd40f20680e4f16b8d79887d 100644 --- a/src/performancetest/java/teetime/examples/traceReconstruction/KiekerTraceReconstructionAnalysis.java +++ b/src/performancetest/java/teetime/examples/traceReconstruction/KiekerTraceReconstructionAnalysis.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/NieWorkKiekerTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/NieWorkKiekerTraceReconstructionAnalysisTest.java index d0c5829f226f9a4a8616379cb71118739e556ff7..2cfa5adcbcc54465dad27e76e33e09e2e71c5cc0 100644 --- a/src/performancetest/java/teetime/examples/traceReconstruction/NieWorkKiekerTraceReconstructionAnalysisTest.java +++ b/src/performancetest/java/teetime/examples/traceReconstruction/NieWorkKiekerTraceReconstructionAnalysisTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionConf.java b/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionConf.java index 2b2d2caa340f64de60b6b3b47f275a302537e935..13c0280148251a445a40da055e37f6d0cd18762a 100644 --- a/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionConf.java +++ b/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionConf.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionConf.java b/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionConf.java index 25cc3a92e68cb889c2a51a90a1f3970b6c9f888f..6a44c7d270fe9f84ba89134a4c640d956c24bbff 100644 --- a/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionConf.java +++ b/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionConf.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwHomeTcpTraceReconstructionAnalysisWithThreadsTest.java b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwHomeTcpTraceReconstructionAnalysisWithThreadsTest.java index d90e5a01463b62d9a38ea8bafa5de709d7929ac5..ed39a4a89df52b0b990bc019843b38cf06824935 100644 --- a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwHomeTcpTraceReconstructionAnalysisWithThreadsTest.java +++ b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwHomeTcpTraceReconstructionAnalysisWithThreadsTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwWorkTcpTraceReconstructionAnalysisWithThreadsTest.java b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwWorkTcpTraceReconstructionAnalysisWithThreadsTest.java index ff4e63513b4c417589a2a0ae1a8555545f298e02..981762160e75a901f4cb0ba991666a9892e3b427 100644 --- a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwWorkTcpTraceReconstructionAnalysisWithThreadsTest.java +++ b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwWorkTcpTraceReconstructionAnalysisWithThreadsTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java index 759131901f53addc332828d71bfc751c8eccbefe..2fa682d6e3ec26644037b827d1c82b971dadeadb 100644 --- a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java +++ b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReductionWithThreads/ChwWorkTcpTraceReductionAnalysisWithThreadsTest.java b/src/performancetest/java/teetime/examples/traceReductionWithThreads/ChwWorkTcpTraceReductionAnalysisWithThreadsTest.java index c2432cfdd447d09f10911145dac9499c887dbc83..2979ab67711d857acad9975000c5fd2ebfce5515 100644 --- a/src/performancetest/java/teetime/examples/traceReductionWithThreads/ChwWorkTcpTraceReductionAnalysisWithThreadsTest.java +++ b/src/performancetest/java/teetime/examples/traceReductionWithThreads/ChwWorkTcpTraceReductionAnalysisWithThreadsTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreadsConfiguration.java b/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreadsConfiguration.java index 876d38e92ad8593919791e73ff7010efb2ab702d..a5027ddc457ba1e75aa4e40fb5e5134aa32ccf0c 100644 --- a/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreadsConfiguration.java +++ b/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreadsConfiguration.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/util/test/MooBenchStarter.java b/src/performancetest/java/util/test/MooBenchStarter.java index 6712ff230002f4d41a0fa237e11a57b59fc82667..2883add9fd6022dbcead2934cb4b38e238aa66e5 100644 --- a/src/performancetest/java/util/test/MooBenchStarter.java +++ b/src/performancetest/java/util/test/MooBenchStarter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/performancetest/java/util/test/PerformanceTest.java b/src/performancetest/java/util/test/PerformanceTest.java index f95d215e5229bd58c1a6f16233584fad4d2dc407..d8cdd1ab51b2071b74a87196b1e0c22a0ddf5ceb 100644 --- a/src/performancetest/java/util/test/PerformanceTest.java +++ b/src/performancetest/java/util/test/PerformanceTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/test/java/teetime/stage/io/filesystem/Dir2RecordsFilterTest.java b/src/test/java/teetime/stage/io/filesystem/Dir2RecordsFilterTest.java index 8839df2177cdd3bf3b8be23e8d35dd370960f9ed..61801171eb5a31c836ae4142bcc2d3a166336464 100644 --- a/src/test/java/teetime/stage/io/filesystem/Dir2RecordsFilterTest.java +++ b/src/test/java/teetime/stage/io/filesystem/Dir2RecordsFilterTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import org.junit.Test; import kieker.common.record.IMonitoringRecord; -import teetime.framework.AbstractCompositeStage; +import teetime.framework.CompositeStage; import teetime.framework.AbstractStage; import teetime.framework.Configuration; import teetime.framework.Execution; @@ -42,7 +42,7 @@ public class Dir2RecordsFilterTest { } } - class ReadingComposite extends AbstractCompositeStage { + class ReadingComposite extends CompositeStage { private final InitialElementProducer<File> producer; private final Dir2RecordsFilter reader; diff --git a/src/test/java/teetime/stage/logReplayer/filter/MonitoringRecordLoggerFilterTest.java b/src/test/java/teetime/stage/logReplayer/filter/MonitoringRecordLoggerFilterTest.java index e6edfa344875fb320c6769ec1a744fe1168fcd54..dcdac3ed8c9a771e026722d677781083e925f054 100644 --- a/src/test/java/teetime/stage/logReplayer/filter/MonitoringRecordLoggerFilterTest.java +++ b/src/test/java/teetime/stage/logReplayer/filter/MonitoringRecordLoggerFilterTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/test/java/teetime/stage/opad/filter/AnomalyDetectionFilterTest.java b/src/test/java/teetime/stage/opad/filter/AnomalyDetectionFilterTest.java index aab2877a4b6125fac95b78dd057380a746939745..54f3953099ba7555dec2bd75d8eb93302c4107ca 100644 --- a/src/test/java/teetime/stage/opad/filter/AnomalyDetectionFilterTest.java +++ b/src/test/java/teetime/stage/opad/filter/AnomalyDetectionFilterTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/test/java/teetime/stage/opad/filter/RecordConverterTest.java b/src/test/java/teetime/stage/opad/filter/RecordConverterTest.java index b1c25c4ccda0e7671e458fa601d8aecd5d38d4b5..8dae45bbdcf88ec15ec33522fca670c7a5a44bff 100644 --- a/src/test/java/teetime/stage/opad/filter/RecordConverterTest.java +++ b/src/test/java/teetime/stage/opad/filter/RecordConverterTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/test/java/teetime/stage/opad/filter/StorableDetectionResultExtenderTest.java b/src/test/java/teetime/stage/opad/filter/StorableDetectionResultExtenderTest.java index d0e836341da1d7056e13d59240cc62ec99580579..700cd2eb3abc545e4edd68807e4802b7f61beb88 100644 --- a/src/test/java/teetime/stage/opad/filter/StorableDetectionResultExtenderTest.java +++ b/src/test/java/teetime/stage/opad/filter/StorableDetectionResultExtenderTest.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.